"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.
-
< filenamelê de um arquivo para STDIN -
> filenameescreve STDOUT para o arquivo, sobrescrevendo qualquer coisa. -
>> filenameescreve 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 docommandinterno. -
<<TOKENé um documento aqui, também conhecido como heredoc. Ele lerá qualquer coisa a seguir em STDIN até verTOKENnovamente. É ú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. -
| commandune o STDOUT atual ao STDIN decommand -
|& commandune 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,
>&1e>&2podem 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.