Votre truc d'union magique est un point-virgule ... et des accolades:
{ cat wordlist.txt ; ls ~/folder/* ; } | wc -l
Les parenthèses ne regroupent que les commandes, de sorte que le signe de tube |
affecte la sortie combinée.
Vous pouvez également utiliser la parenthèse ()
autour d'un groupe de commandes, qui exécuterait les commandes dans un sous-shell. Ceci a un ensemble subtil de différences avec des accolades, par ex. essayez ce qui suit:
cd $HOME/Desktop ; (cd $HOME ; pwd) ; pwd
cd $HOME/Desktop ; { cd $HOME ; pwd ; } ; pwd
Vous verrez que toutes les variables d'environnement, y compris le répertoire de travail en cours, sont réinitialisées après avoir quitté le groupe de parenthèses, mais pas après avoir quitté le groupe d'accolades.
Comme pour le point-virgule, les alternatives incluent les signes &&
et ||
, qui exécutent conditionnellement la deuxième commande uniquement si la première est réussie ou non, respectivement, par exemple
cd $HOME/project && make
ls $HOME/project || echo "Directory not found."