Me deparei com um comando no script Bash no qual encontrei:
find /var/log/abcd -type f
O comando acima estava no contexto de limpeza dos arquivos de log. Eu sei o que find
faz.
Depois de ter visto -type f
, procurei na página de manual. Eu pude vê-lo na página de manual de BASH_BUILTINS (1)
A descrição do sinalizador -f sob type
comando é: -
The -f option suppresses shell function lookup, as with the command builtin.
A seguir, minhas perguntas:
- Para que serve
type
? - Qual é o significado da
-f
bandeira? - Qual é a utilidade de usar
type
com ofind
comando?
[EDIT]: - Depois de ter lido todos os comentários e respostas até agora, gostaria de mencionar o motivo de minha má interpretação do -type option in command find
Vs type command
. Tudo isso aconteceu porque eu estava assumindo e até a data vi apenas as opções curtas (testes no caso do find
comando) com um único sinal de menos '-' , por exemplo ls -l
. Na maioria das vezes, tenho visto opções longas com o sinal de menos duplo '-' , por exemplo ls --version
.
fonte
type
comando interno não é usado porfind
. A-type
opção defind
fazer outra coisa. Vejahelp type
eman find
obtenha suas respostas.Respostas:
Nesse caso
type
, não tem nada a ver com o bash embutidotype
, mas mais sobre isso mais tarde.Um pouco sobre "tipo"
O
type
comando interno do BASH fornece informações sobre comandos. Portanto:A sintaxe é:
-t
: imprime apenas o tipo, se encontrado-a
: imprime todas as ocorrências do comando, internas e outras.-p
: imprime o arquivo do disco que seria executado na chamada ao comando ou nada.Se olharmos
time
,kill
ecat
como um exemplo:Agora, isso especifica que, se você estiver em um shell e tipo Bash
time some_cmd
, o bash builtintime
será usado. Para usar o sistema,time
você pode fazer/usr/bin/time some_cmd
.Uma maneira frequentemente usada para garantir que o comando do sistema, e não interno, seja usado é usando
which
.e use
$tt
para chamar o sistematime
.O comando em questão
Nesse caso,
-type
é uma opção para o comandofind
. A opção utiliza um argumento pelo qual especificar o tipo de entidade. ExemploHá mais, verifique
man find
o resto.Para procurar a opção específica que você pode fazer (enquanto no homem):
Em seguida, use
n
para o próximo até encontrá-lo.Um pouco sobre o comando shell
Isso é um pouco de interpretação pessoal.
Algumas das coisas que vale a pena mencionar, neste caso específico, são comandos, opções, argumentos e canais.
Isso é pouco utilizado, mas no meu vocabulário temos resumidamente:
Em uma especificação de comando, colchetes são usados para especificar opções e, opcionalmente menor / maior, usados para especificar argumentos. Portanto:
Fornece
-a
-b
e-s
como parâmetros opcionais, efile
um obrigatório.-t
é opcional, mas se especificado recebe o argumento necessáriobar
. Pontos representam que pode levar vários arquivos.Essa não é uma especificação exata e, com frequência
man
ouhelp
é necessária para garantir.Opções de posicionamento de argumentos e entrada muitas vezes podem ser confusas, mas geralmente é melhor manter uma abordagem baseada em posição, pois alguns sistemas não lidam com posicionamento misto de argumentos. Como um exemplo:
Ambos trabalham em alguns sistemas, enquanto o último não em outros.
No seu comando exato, todos os parâmetros pertencem
find
- portanto, se você se perguntar sobre uma propriedade,man find
é o local correto para procurar. Nos casos em que você precisa consultar as páginas de manual do shell, etc., por exemplo:O
-exec
é um especial onde-exec some_command {} \;
são fornecidos todos os parâmetrosfind
, mas asome_command {} \;
peça é expandida, dentrofind
desome_command string_of_found_entity
.Mais para frente
Você pode achar isso útil .
fonte
Você deve olhar
man find
, não dentrohelp type
ouman bash
.type
infind
especificará o tipo de arquivo que você precisa:E o builtin
type
é uma coisa completamente diferente e NÃO é o que é usado por dentrofind
.fonte
Você olhou para a página do manual errada, este não é o
type -f
comando, mas afind -type f
opção que é bastante diferente, consulte ofind
manual para obter explicações adequadas.fonte
-type f
diz ao find para imprimir apenas arquivos do tipo f, como arquivos simples, não diretórios, links simbólicos e arquivos de dispositivos.man find
depois procure a-f
opção.fonte
Esta não é a página de manual correta que você está vendo. Você deveria estar usando
isso lhe dirá que, com
-type f
o-type
predicado, seleciona apenas os arquivos regulares.fonte