Sua coisa da união mágica é um ponto-e-vírgula ... e chaves:
{ cat wordlist.txt ; ls ~/folder/* ; } | wc -l
Os parênteses agrupam apenas os comandos, de modo que o sinal de canal |
afeta a saída combinada.
Você também pode usar o parêntese ()
em torno de um grupo de comando, o que executaria os comandos em um subshell. Isto tem um conjunto subtil de diferenças com chaves, e. tente o seguinte:
cd $HOME/Desktop ; (cd $HOME ; pwd) ; pwd
cd $HOME/Desktop ; { cd $HOME ; pwd ; } ; pwd
Você verá que todas as variáveis de ambiente, incluindo o diretório de trabalho atual, são redefinidas após sair do grupo de parênteses, mas não depois de sair do grupo de chaves.
Quanto ao ponto-e-vírgula, as alternativas incluem os sinais &&
e ||
, que executarão condicionalmente o segundo comando somente se o primeiro for bem-sucedido ou se não for, respectivamente, por exemplo
cd $HOME/project && make
ls $HOME/project || echo "Directory not found."