Pipelines

Un pipeline es una secuencia de uno o más comandos separados por uno o más operadores de control ‘|’ o ‘|&’.

El formato de un pipeline es el siguiente:

[time [-p]] [!] comando1 [ | o |& comando2 ] …

La salida de cada comando es el pipelineestá conectado con un pipe a la entrada del siguiente comando. Eso es, cada comando lee la salida del comando previamente ejecutado. Esta conexión se realiza antes de cualquier redirección especificada por el comando.

Si se utiliza ‘|&’ , el stderr del comando1, además de su stdout, se conecta con el stdin del comando2 a traves del pipe. Es una forma simplificada de 2>&1 |. ¿Se acuerdan que en la sección anterior vimos redireccionamiento? Bueno, esto es más o menos lo mismo con una sintaxis más simplificada. Sigamos... esta redirección implicida que tenemos de stderr a stdout es realizada después de cualquier redirección especificada por el comando.

La palabra reservada time genera estadísticas de tiempo que luego son se muestran una vez que el pipeline termina su ejecución.

Cada comando en el pipeline se ejecuta en su propia subterminal, que es básicamente un proceso separado.