"Quando usar" é realmente dependente do que você está fazendo. É como perguntar quando usar um Phillips ou uma chave de fenda. Eu posso te dizer o que todos eles são, e o que eles fazem, mas trabalhar quando você usa cada um, é com você.
Tudo isso está amplamente documentado no Guia avançado de script basculante do TLDP . Se você precisar de exemplos, esse é o lugar.
-
< filename
lê de um arquivo para STDIN -
> filename
escreve STDOUT para o arquivo, sobrescrevendo qualquer coisa. -
>> filename
escreve STDOUT para arquivar, anexando se já existe. -
<(command)
absorve a saída do comando interno e fornece um nome de arquivo -
>(command)
fornece um nome de arquivo para o comando externo, mas na verdade redireciona qualquer coisa escrita para ele no STDIN docommand
interno. -
<<TOKEN
é um documento aqui, também conhecido como heredoc. Ele lerá qualquer coisa a seguir em STDIN até verTOKEN
novamente. É útil para conteúdo de várias linhas. Tem que ser seguido por uma nova linha. A menos que você cite o token, heredocs suportam a substituição de variáveis. -
<<-TOKEN
é como acima, exceto que ele ignorará as guias principais (mas apenas as guias). Isso é útil para preservar a formatação de origem, mas ela realmente funciona apenas com guias. Ele é inutilizado nos sites do Stack Exchange porque eles substituem as guias por espaços: ( -
<<"TOKEN"
é um heredoc que não substituirá$variables
. -
<<<"string"
é um heredring. É lido em STDIN. Isso pode fazer a substituição de variáveis. -
| command
une o STDOUT atual ao STDIN decommand
-
|& command
une STDOUT e STDERR no STDIN decommand
(útil para a saída de erros do grep) -
1>
e2>
são usados para redirecionar explicitamente STDOUT e STDERR.>
implica1>
, por isso você raramente o vê usado explicitamente. - Em uma veia semelhante,
>&1
e>&2
podem ser usados para redirecionar para STDOUT e STDIN. -
/dev/std{in,out,err}
também existem como links simbólicos para os descritores de arquivos básicos de entrada / saída / erro. Isso é útil quando algo só aceita um argumento de nome de arquivo, mas você quer que ele grave em STDOUT, por exemplo.