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
type
construí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
type
builtin, (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
test
com 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
time
efor
, 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 otype
embutido na saída dohelp
builtin, 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.