Lista de comandos
Una lista de comandos es una secuencia de una o más tuberías separadas por uno de los siguientes operadores: ;, &, && ó ||, y terminada por cualquiera de los siguientes: ;, & o final de línea (pulsación de la tecla ENTER).
Cuando una tubería se separa con el operador & conseguimos que se ejecute en segundo plano. El shell no espera a que el comando finalice para pasar al siguiente. El estado de retorno es 0 (verdadero). Ejemplo:
$ ls -lR / 2> /dev/null >| listado & find / -empty 2> /dev/null | wc -l >| vacios &
[1] 8066
[2] 8068
$
[1]- Salida 2 ls --color=auto -lR / 2> /dev/null >|listado
[2]+ Hecho find / -empty 2> /dev/null | wc -l >| vacios
En cambio, los comandos separados por un ; se ejecutan también secuencialmente, pero el shell espera a que cada comando finalice para pasar al siguiente. El estado de retorno es el del último comando ejecutado. Ejemplo:
$ who ; w
usuario tty7 2013-09-04 12:42 (:0)
usuario pts/0 2013-09-05 19:43 (:0)
20:20:21 up 1 day, 2:38, 2 users, load average: 0,00, 0,10, 0,14
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
usuario tty7 :0 mié12 2days 18:14 0.10s gdm-session-worker [pam/gdm3]
usuario pts/0 :0 jue19 5.00s 0.68s 0.01s w
La lista de comandos AND es la que separa las tuberías con &&. Su sintaxis sería así:
tubería && tubería [ && tubería ]...
En su forma más simple:
tubería1 && tubería2
solo tubería2 se ejecutará si tubería1 devuelve cero como estado de salida, es decir, si tubería1 se ejecuta bien. En general, las tuberías se irán ejecutando mientras no devuelvan errores, en cuanto una tubería se ejecute mal, se detendrá la ejecución de la lista AND.
$ find ~ -empty &> /dev/null && echo Existen ficheros vacíos
Existen ficheros vacíos
La lista de comandos OR es la que separa las tuberías con ||. Su sintaxis sería así:
tubería || tubería [ || tubería ]...
En su forma más simple:
tubería1 && tubería2
solo tubería2 se ejecutará si tubería1 devuelve como estado de salida un valor distinto de cero, es decir, si tubería1 da algún tipo de error. En general, las tuberías se irán ejecutando mientras devuelvan errores, en cuanto una tubería se ejecute correctamente se detendrá la ejecución de la lista OR.
$ find ~ -name backup &> /dev/null || touch ~/bin/backup
El estado de retorno de las listas AND y OR es el estado de salida del último comando que llegue a ejecutarse.
Los operadores &&, ||, ; y & pueden mezclarse, y los prioridades serían:
- &&, || (si van seguidos, primero el de la izquierda)
- ; & (si van seguidos, primero el de la izquierda)
Siempre, los distintos comandos que resulten de aplicar las prioridades, se ejecutarán de izquierda a derecha.
Por ejemplo, la lista de comandos siguiente
$ comando1 ; comando2 || comando3 && comando4
está formada por dos comandos secuenciales:
- comando1
- comando2 || comando3 && comando4
El segundo de los comandos secuenciales está formado por una lista OR y una lista AND.
- comando2 || comando 3 (c)
- c && comando4
Licencia: licencia de software libre GPL