La tua unione magica è un punto e virgola ... e parentesi graffe:
{ cat wordlist.txt ; ls ~/folder/* ; } | wc -l
Le parentesi graffe raggruppano solo i comandi insieme, in modo che il segno del tubo |influisca sull'output combinato.
È inoltre possibile utilizzare le parentesi ()attorno a un gruppo di comandi, che eseguirà i comandi in una subshell. Questo ha una sottile serie di differenze con le parentesi graffe, ad esempio provare quanto segue:
cd $HOME/Desktop ; (cd $HOME ; pwd) ; pwd
cd $HOME/Desktop ; { cd $HOME ; pwd ; } ; pwd
Vedrai che tutte le variabili di ambiente, inclusa la directory di lavoro corrente, vengono ripristinate dopo essere uscite dal gruppo parentesi, ma non dopo essere uscite dal gruppo parentesi graffa.
Per quanto riguarda il punto e virgola, le alternative includono i segni &&e ||, che eseguiranno in modo condizionale il secondo comando solo se il primo ha esito positivo o, in caso contrario, rispettivamente, ad es.
cd $HOME/project && make
ls $HOME/project || echo "Directory not found."