Um comando:
-
geralmente tem uma cadeia alfanumérica para o seu nome.
-
é um utilitário externo, um embutido ou uma função. A maioria das coisas em que o
typeconstruído produz saída é um comando nesse sentido. -
tem notação prefixo .
-
geralmente altera algum tipo de E / S.
Um operador:
-
geralmente é uma string simbólica e pode não ter nome, mas pode ter um apelido.
-
não é entendido pelo
typebuiltin, (a menos que haja alguma função ou script confusamente nomeado). -
mais frequentemente tem a sintaxe infix ou sufixo .
-
às vezes direciona E / S como um policial de trânsito, mas não muda o que está em .
-
às vezes direciona a ordem dos processos.
$() é um comando substituição :
- em primeiro lugar, (ou por último, dependendo de como olhamos para ele), é uma string.
- a string é composta do texto output desses comandos listados em.
[ é um comando interno do shell:
- é o comando
testcom um sufixo]obrigatório.
[[ é uma palavra-chave bash shell:
- É como um
[embutido mais rápido e mais versátil, mas SFAIK sem o comandotest-like correspondente. -
As palavras-chave shell incluem coisas como
timeefor, que se parecem com comandos, mas se comportam mais como operadores que exigem várias palavras-chave irmãs como delimitadores e sintaxe. Este código executa otypeembutido na saída dohelpbuiltin, que mostra uma lista de palavras-chave e builtins do lado esquerdo:COLUMNS=30 help -m | tail -n +9 | tee >(cut -d ' ' -f2) >(cut -c 17-30 | cut -d ' ' -f1) > /dev/null | sort | sed -n "s/.*/type '&'/e"';/found/!p'
Comparando-o a um idioma falado:
- comandos (e algumas palavras-chave) são como verbos.
- arquivos e strings são substantivos.
- os operadores são como pontuação e preposições.
No resumo, operadores são apenas comandos com sintaxe diferente que podem ser substituídos por comandos de estilo prefixos como o resto deles. Provavelmente não seria tão conveniente de usar.
Analiticamente, o código compilado de um shell pode ser executado através de um desassemblador, e os operadores são novamente apenas comandos, ou melhor, uma série de comandos em linguagem assembly.