Una vez vistas gran parte de las órdenes de usuario, pasamos a ver una de las principales características de un sistema Unix que es la facilidad para agrupar órdenes de distintas formas para realizar tareas complejas. Por un lado en la propia línea de órdenes se pueden especificar órdenes y unir su ejecución de diversas formas.
Hasta ahora hemos visto como combinar órdenes con tubería, como redirigir las salida y como gestionar procesos en primer y segundo planos. Ahora vamos a ver otra serie de mecanismos para ejecutar órdenes y programas y verificar el estado de conclusión de la orden.
Cuando una orden termina le devuelve al sistema un código de finalización, un valor cero en caso de terminar correctamente o un valor uno si se ha producido un error. Este valor se almacena en la variable $?.
Por ejemplo
[pfabrega@port /home]$ ls -la /home
total 32
drwxr-xr-x 5 root root 4096 sep 20 14:16 .
drwxr-xr-x 18 root root 4096 sep 20 03:23 ..
drwxr-xr-x 4 root root 4096 sep 28 21:16 httpd
drwxr-xr-x 2 root root 16384 sep 19 18:25 lost+found
drwx--x--x 20 pfabrega pfabrega 4096 nov 24 19:07 pfabrega
[pfabrega@port /home]$ echo $?
0
[pfabrega@port /home]$ ls -la asdfg
ls: asdfg: No existe el fichero o el directorio
[pfabrega@port /home]$ echo $?
1
[pfabrega@port /home]$
|
Podemos observar como en la primera ejecución ls -la devuelve un valor 0 de terminación correcta y en la segunda devuelve un error y n código 1.