Votre truc magique de l'union est un point-virgule... et des accolades :
{ cat wordlist.txt ; ls ~/folder/* ; } | wc -l
Les accolades ne font que regrouper les commandes, de sorte que le signe de la pipe |
affecte la production combinée.
Vous pouvez également utiliser des parenthèses ()
autour d'un groupe de commandes, qui exécuterait les commandes dans un sous-shell. Il existe des différences subtiles avec les accolades, par exemple, essayez ce qui suit :
cd $HOME/Desktop ; (cd $HOME ; pwd) ; pwd
cd $HOME/Desktop ; { cd $HOME ; pwd ; } ; pwd
Vous constaterez que toutes les variables d'environnement, y compris le répertoire de travail actuel, sont réinitialisées après la sortie du groupe des parenthèses, mais pas après la sortie du groupe des accolades.
En ce qui concerne le point-virgule, les alternatives incluent le &&
y ||
qui exécuteront conditionnellement la seconde commande seulement si la première est réussie ou si elle ne l'est pas, respectivement, par ex.
cd $HOME/project && make
ls $HOME/project || echo "Directory not found."