Es posible que haya utilizado una sintaxis comocmd0 | cmd1 | cmd2
en su terminal demasiadas veces.
Probablemente también sepa que es la redirección de tubería la que se usa para redirigir la salida de un comando como entrada al siguiente comando.
¿Pero sabes lo que hay debajo? ¿Cómo funciona realmente la redirección de tuberías?
No te preocupes porque hoy desmitificaré las tuberías de Unix para que la próxima vez que tengas una cita con esas elegantes barras verticales, sepas exactamente lo que está sucediendo.
Nota: he usado el término Unix en algunos lugares porque el concepto de conductos (como tantas otras cosas en Linux) se origina en Unix.
Pipes en Linux: La idea general
Esto es lo que verá en todas partes con respecto a “¿qué son las tuberías de Unix?”:
- Las tuberías de Unix son un mecanismo IPC (Comunicación entre procesos), que reenvía la salida de un programa a la entrada de otro programa.
Ahora, esta es la explicación general que todos dan. Quiero ir más profundo. Reformulemos la línea anterior de una manera más técnica eliminando las abstracciones:
- Las tuberías de Unix son un mecanismo IPC (Inter Process Communication) que toma el
stdout
de un programa y lo reenvía alstdin
de otro programa a través de un búfer.
Mucho mejor. Eliminar la abstracción lo hizo mucho más limpio y preciso. Puede mirar el siguiente diagrama para entender cómo funciona la tubería:
uno de los mas simples example del comando de tubería es pasar algún resultado de comando al comando grep para buscar una cadena específica.
Para examplepuede buscar archivos con un nombre que contenga txt como este:
Tenga en cuenta: Pipe redirige stdout a stdin pero no como argumento de comando
Una cosa muy importante a entender es que la tubería transfiere lastdout
de un comando astdin
de otro pero no como un argumento de comando. te lo explico con example.
y utilízalocat
comando sin ningún argumento, por defecto leerá destdin
. Aquí hay un example:
$ cat
Subscribe to Linux Handbook for more articles like this
^D
Subscribe to Linux Handbook for more articles like this
Aquí usécat
sin pasar ningún archivo, por lo que por defectostdin
. A continuación, escribí una línea y luego usé Ctrl+d para hacerle saber que terminé de escribir (Ctrl+d implica EOF o Fin de archivo). Una vez que terminé de escribir, el gato leyó destdin
y escribió esa misma línea parastdout
.
Ahora considere el siguiente comando:
echo hey | cat
El segundo comando NO es equivalente acat hey
. Aquí elstdout
“hey”, se lleva a un búfer y se transfiere alstdin
decat
. Como no había argumentos en la línea de comandos, cat por defecto erastdin
para leer, y ya había algo en la entrada estándar, por lo que el comando cat lo tomó y lo imprimió enstdout
.
De hecho, creé un archivo llamado hey y le puse algo de contenido. Puedes ver la diferencia claramente en la siguiente imagen:

Tipos de tuberías en Linux
Hay dos tipos de tuberías en Linux:
- Canalizaciones sin nombre, también llamadas canalizaciones anónimas
- Tuberías con nombre
Lea la historia completa
El resto del artículo está disponible solo para miembros de LHB. Puede registrarse ahora GRATIS para leer el resto de este artículo junto con el acceso a todas las publicaciones exclusivas para miembros. También se suscribe a nuestro boletín quincenal de Linux.
Suscribir
¿Ya tienes una cuenta?
Registrarse