Nesse caso, type
não tem nada a ver com o bash type
embutido, mas mais sobre isso depois.
Um pouco sobre "tipo"
O comando type
do BASH fornece informações sobre comandos. Assim:
$ type type
type is a shell builtin
A sintaxe é:
type [-tap] [name ...]
-
-t
: imprime somente 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 para o comando ou nada.
Se olharmos para time
, kill
e cat
como exemplo:
$ type time kill cat
time is a shell keyword
kill is a shell builtin
cat is /bin/cat
$ type -t time kill cat
keyword
builtin
file
$ type -a time kill cat
time is a shell keyword
time is /usr/bin/time
kill is a shell builtin
kill is /bin/kill
cat is /bin/cat
$ type -ta time kill cat
keyword
file
builtin
file
file
Agora, especifique que, se você estiver em um shell Bash e digitar time some_cmd
, o bash builtin time
será usado. Para usar o sistema time
você pode fazer /usr/bin/time some_cmd
.
Uma maneira freqüentemente usada para garantir que o comando do sistema, e não interno, seja usado é usando which
.
tt=$(which time)
e, em seguida, use $tt
para chamar o sistema time
.
O comando em questão
Nesse caso, o -type
é uma opção para o comando find
. A opção aceita um argumento pelo qual especifica o tipo de entidade. Exemplo
find . -type f # File
find . -type d # Directory
Há mais, confira man find
para o resto.
Para procurar a opção específica que você pode fazer (enquanto no homem):
/^\s*-typeEnter
Em seguida, use n
para seguinte até encontrá-lo.
Um pouco sobre o comando shell
Esta é uma interpretação pessoal.
Algumas das coisas que vale a pena mencionar, neste caso específico, são comandos, opções, argumentos e canais.
Isso é usado de forma um pouco frouxa, mas no meu vocabulário temos em resumo:
- comando: um programa ou integrado .
- parâmetro: uma entidade após a palavra de comando. Opção
- : um parâmetro opcional .
- argumento: um parâmetro obrigatório.
Em uma especificação de comando, colchetes são usados para especificar opções e, opcionalmente, menor ou maior que, usado para especificar argumentos. Assim:
foo [-abs] [-t <bar>] <file> ...
foo [-abs] [-t bar] file ...
Concede -a
-b
e -s
como parâmetros opcionais e file
como obrigatório.
-t
é opcional, mas, se especificado, aceita o argumento necessário bar
. Os pontos representam que pode levar vários arquivos.
Esta não é uma especificação exata e, geralmente, man
ou help
é necessário para ter certeza.
O posicionamento de opções de argumentos e entrada muitas vezes pode ser confundido, mas geralmente é melhor manter uma abordagem baseada em posição, já que alguns sistemas não manipulam posicionamento misto de argumentos. Como exemplo:
chmod -R nick 722 foo
chmod nick 722 foo -R
Ambos trabalham em alguns sistemas, enquanto o segundo não em outro.
Em seu comando exato, todos os parâmetros pertencem a find
- assim, se você quer saber sobre uma propriedade man find
é o lugar correto para procurar. Nos casos em que você precisa consultar as páginas do manual para o shell, etc., pode estar em, por exemplo:
find . $(some command)
find . 'some command'
find . $some_var
find . -type f -exec some_command {} \;
find . -type f | some_command
...
O -exec
é especial onde -exec some_command {} \;
são todos os parâmetros fornecidos para find
, mas a some_command {} \;
é expandida, dentro de find
a some_command string_of_found_entity
.
Mais adiante
- citando
- expansão
- substituição de comandos
- e muito mais