(Refere-se a bash em caso de dúvida)
A saída de um comando ou de um pipeline pode ser a entrada de outro comando criando um pipeline (ou estendendo o existente):
command1 | command2
command1 | command2 | command3
Vários comandos (incluindo pipelines) podem ser combinados com um subshell ou uma lista (comando de grupo). Essa combinação se torna a primeira parte do pipeline então:
(command1; command2 | command3; command4) | command5
{command1; command2 | command3; command4;} | command5 # note the ; before }
Outra possibilidade é uma "string aqui" (ou até mesmo um "documento aqui"):
command2 <<< $(command1)
command2 <<EOT
First input line
$(command1)
Last input line
EOT
Outros casos
Substituição de comando é usada quando a saída deve fazer parte de uma linha de comando, ou seja, se um comando deve ver a saída de outro como seu próprio parâmetro:
echo $(date)
echo vê a saída de date
como seu parâmetro; como se tivesse sido digitado na linha de comando.
A substituição de processos faz com que a saída de outro processo apareça como o conteúdo de um arquivo (não-pesquisável) fornecido como parâmetro na linha de comando.
grep bar <(echo $'foo\nbar\nbaz')
parece ser do tipo
echo $'foo\nbar\nbaz' > /path/to/file
grep bar /path/to/file