Tu unión mágica es un punto y coma ... y llaves:
{ cat wordlist.txt ; ls ~/folder/* ; } | wc -l
Las llaves solo agrupan los comandos, de modo que el signo de tubería |
afecta a la salida combinada.
También puede usar paréntesis ()
alrededor de un grupo de comandos, que ejecutaría los comandos en una subshell. Esto tiene un conjunto sutil de diferencias con llaves, por ejemplo, intente lo siguiente:
cd $HOME/Desktop ; (cd $HOME ; pwd) ; pwd
cd $HOME/Desktop ; { cd $HOME ; pwd ; } ; pwd
Verá que todas las variables de entorno, incluido el directorio de trabajo actual, se restablecen después de salir del grupo de paréntesis, pero no después de salir del grupo de llaves.
En cuanto al punto y coma, las alternativas incluyen los signos &&
y ||
, que ejecutarán condicionalmente el segundo comando solo si el primero es exitoso o no, respectivamente, p. Ej.
cd $HOME/project && make
ls $HOME/project || echo "Directory not found."