¿Qué son las tuberías en Linux? ¿Cómo funciona la redirección de tuberías?

Es posible que haya utilizado una sintaxis como cmd0 | 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 al stdin 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 la stdout de un comando a stdin de otro pero no como un argumento de comando. te lo explico con example.

Si utiliza cat comando sin ningún argumento, por defecto leerá de stdin. 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 defecto stdin. 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ó de stdiny escribió esa misma línea para stdout.

Ahora considere el siguiente comando:

echo hey | cat

El segundo comando NO es equivalente a cat hey. Aquí el stdout“hey”, se lleva a un búfer y se transfiere al stdin de cat. Como no había argumentos en la línea de comandos, cat por defecto era stdin para leer, y ya había algo en la entrada estándar, por lo que el comando cat lo tomó y lo imprimió en stdout.

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

Related Posts