Con las canalizaciones, se riza el rizo y se permite conectar también procesos entre si.
mandato | mandato2
| Conecta la salida estándar de un mandato con la entrada estándar de otro mandato2. |
Si queremos que la salida de error tambien vaya por la canalización debemos
redirigirla mediante «2>&1
». En este caso se mezclará con
la información de stdout.
Lo bonito de esta construcción es que, cuando sea posible, los datos que va generando cada proceso se envían al siguiente sobre la marcha. Este es el caso de:
who -a | grep Juan
|
en donde se disparan los dos procesos a la vez, y según who -a
proporciona líneas, grep Juan
expurga aquellas que contienen la
cadena Juan
. Otro caso es cuando se inserta algún proceso donde se
necesita toda la entrada para producir una salida con sentido, por ejemplo:
who -a | sort
|
donde el mandato sort
va a necesitar que aparezcan todas las
líneas para poder ordenar. En este caso, la canalización anterior pipe es equivalente a la siguiente secuencia.
who -a > quien-está-ahi
grep Juan < quien-está-ahi
|