Observe que o bash possui comandos internos que são muito semelhantes ao caso geral de uma linha de comando. Eu vou pular esse aspecto.
Mas, em geral, uma linha de comando é uma série de comandos separados por pontuação especial, não por operadores.
Um comando é o nome do executável (que pode ser pesquisado através da variável de ambiente PATH). Esse é o programa que será executado para executar o comando.
Após o comando, as strings separadas por espaços em branco são transmitidas ao comando como strings. Mas há caracteres de pontuação especiais que devem ser escapados (usando \
'ou usando aspas) se você pretende que eles façam parte de um argumento.
Os caracteres de pontuação têm efeitos.
Os caracteres de pontuação especiais como '<', '>' e seus parentes definem a saída de entrada padrão e o erro para o comando
'|' para terminar um comando e canalizar sua saída padrão para a próxima entrada padrão de comandos
';' para executar o comando anterior e aguardar sua conclusão. ou seja, corra em primeiro plano.
'&' para executar o comando anterior, mas continue com o processo da linha de comandos sem aguardar a conclusão. ou seja, executar em segundo plano.
Portanto, esteja ciente de que a intenção dessas marcas sintáticas é permitir que você junte essas coisas para fazer coisas como
echo perl myperlprogram.pl \< mydata.txt | at 12:35
O que faz uma string usar echo
, que é outro comando shell, para executar um programa perl, e enviar essa string para o comando at
para executá-lo como um trabalho em lote posteriormente. Mas observe que o <
é escapado, então é passado como um argumento para echo
(que o enviará para at
como entrada), em vez de definir a entrada padrão imediatamente. Quando o sistema em lote e executa a seqüência de comando, então ele irá definir a entrada padrão do programa perl.
Existem elaborações lidando com comandos embutidos e coisas como parênteses que podem ser aprendidas assim que o básico é entendido