Una lista de comandos es una secuencia de comandos simples o tuberías separados por uno de los operadores `;', `&', `&&', or `||', y terminada por `;', `&', o retorno de carro.
Si un comando se termina con el operador de control `&', la shell ejecuta el comando de forma asíncrona en una subshell. Esto se conoce como ejecutar el comando en segundo plano (background). En este caso, la shell no espera a que el comando termine e inmediatamente aparece otra vez el indicador de inicio (prompt), mientras el comando se ejecuta por detrás de ella.
Los comandos separados por `;' se ejecutan secuencialmente, uno detrás de otro.
$ comando1; comando 2
La shell espera a que terminen los comandos en su turno correspondiente. Por ejemplo:
$ cd /home/Thales; ls
primero se posiciona en el subdirectorio /home/Thales y después lista los ficheros de ese directorio.
Los operadores de control permiten ejecuciones condicionales.
El efecto de
comando1 && comando2
es que comando2 se ejecutará si y sólo si comando1 termina de forma satisfactoria (devuelve un código de cero).
En cambio, en la lista
comando1 || comando2
el comando2 se ejecutará si y sólo si comando1 falla (devuelve un código distinto de cero).
Podemos conseguir guardar la salida de un comando en un fichero y dirigirla también a la salida estándar usando el comando tee. El nombre del comando viene de que se comporta como una T de fontanería. El caudal que llega por una rama, pasa por la T y sale por los otros dos orificios.
Por ejemplo, supongamos que deseamos ver los usuarios de nuestra máquina y guardarlos en un fichero ordenados, escribiremos:
$ cut -f1 -d: /etc/passwd | sort | tee usuarios.txt
Expliquemos un poco el comando: