Los pipes son una he­rra­mie­n­ta potente en Linux, el sistema operativo de código abierto. Linux Pipes te permiten procesar se­cue­n­cia­l­me­n­te una serie de comandos re­fe­re­n­tes a un conjunto de datos, o mover efi­ca­z­me­n­te los datos de un lado a otro entre comandos, por ejemplo. La ventaja es que así se si­m­pli­fi­can procesos complejos porque los comandos complejos se co­n­vie­r­ten en un verdadero “equipo de comandos”. Aquí te ex­pli­ca­mos en detalle cómo funcionan los pipes en Linux y por qué es tan útil este comando.

Dominios web
Compra y registra tu dominio ideal
  • Domina el mercado con nuestra oferta 3x1 en dominios
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad

¿Qué son los pipes de Linux?

El concepto Pipe procede de la palabra inglesa “pipeline”, cuya tra­du­c­ción es “tubería”. En in­fo­r­má­ti­ca, un pipe es un flujo de datos que circula entre dos procesos que, o bien están es­tre­cha­me­n­te vi­n­cu­la­dos, o no tienen un origen común. Esto quiere decir que el resultado arrojado por un programa servirá como entrada para otro programa. Esto te permite, entre otras cosas, dividir grandes problemas en problemas más pequeños y así obtener una mejor visión de conjunto.

En Linux hay dos tipos distintos de pipes: los pipes sin nombre o “unnamed pipes” y los pipes con nombre o “named pipes”.

Si bien los pipes sin nombre o anónimos solo pueden uti­li­zar­se entre procesos es­tre­cha­me­n­te vi­n­cu­la­dos entre sí, los pipes con nombre o FIFO (basados en el principio “First in – first out”) permiten la co­mu­ni­ca­ción entre dos procesos no re­la­cio­na­dos que pueden en­co­n­trar­se en distintos or­de­na­do­res dentro de la misma red. A di­fe­re­n­cia de los pipes sin nombre, los pipes con nombre permiten una co­mu­ni­ca­ción bi­di­re­c­cio­nal, no solo uni­di­re­c­cio­nal (un proceso escribe y el otro solo lee).

Nota

Enlazar comandos de manera lógica es ob­via­me­n­te algo común en in­fo­r­má­ti­ca. Con el comando ln de Linux, por ejemplo, es posible crear un enlace a un archivo o un di­re­c­to­rio de la manera más sencilla. En nuestro artículo guía te ex­pli­ca­mos qué otros comandos de Linux tienes que conocer sí o sí.

La sintaxis de pipes de Linux y ejemplos de apli­ca­ción

Para crear pipes en Linux co­rre­c­ta­me­n­te, primero hay que entender la sintaxis. A co­n­ti­nua­ción, verás la es­tru­c­tu­ra del comando pipe y luego algunos ejemplos sobre el aspecto que tendría el comando en tu terminal o en la lista de comandos.

Nota

Nuestra guía se refiere a las in­s­ta­la­cio­nes Ubuntu más ex­te­n­di­das que pueden ad­qui­ri­r­se de manera gratuita y que se ac­tua­li­zan re­gu­la­r­me­n­te.

Comando-1 | Comando-2 | …| Comando-N

Como vemos arriba, la sintaxis de un pipe sin nombre es ve­r­da­de­ra­me­n­te sencilla. Consta del símbolo “|”, que p. ej. se coloca entre otros dos comandos. En el siguiente ejemplo, el pipe es solo válido te­m­po­ra­l­me­n­te.

$ cat contents.txt |grep file
0 Aug  9 13:55  file1
0 Aug  9 13:55  file2
0 Aug  9 13:55  file3
0 Aug  9 13:55  file4
0 Aug  9 13:55  file5
$ cat contents.txt |grep "file"|awk '{print $8}'
file1
file2
file3
file4
file5
$ cat contents.txt |wc -l
8
$

Arriba, contents.txt contiene una lista con todos los archivos de un di­re­c­to­rio de­te­r­mi­na­do: más co­n­cre­ta­me­n­te, la salida del comando ls -al. En primer lugar, se preguntan los nombres de los archivos con la co­n­tra­se­ña “file” de contents.txt mediante el piping, para que la salida del comando cat sirva como entrada para el comando grep. Luego, eje­cu­ta­mos el comando awk con el piping, que muestra la octava columna de la salida filtrada del comando grep. También podemos contar el número de líneas que hay en contents.txt con el comando wc -l.

Consejo

El comando grep nos permite examinar las filas de los archivos de código y registro por strings. Puedes usar este comando para buscar fá­ci­l­me­n­te un archivo de Linux en la línea de comandos.

Mientras que el Linux pipe sin nombre solo es válido para un proceso, un pipe de Linux con nombre se encarga de que el comando sea válido durante todo el tiempo hasta que apagues el sistema o lo borres. Esta es la sintaxis correcta:

mkfifo <pipe-name>

o

mknod p <pipe-name>

Imagínate que tienes un proceso en ejecución en el terminal y que genera un resultado. Ahora quieres redirigir este output a un segundo terminal. Aquí será de gran ayuda un pipe con nombre. Para desviar una salida estándar de un comando cua­l­quie­ra a otro proceso, utiliza el símbolo “>”. Para desviar una entrada estándar de un comando cua­l­quie­ra, usa el símbolo “<”. En el siguiente ejemplo nombra el pipe en el primer terminal.

$ mkfifo pipe-con-nombre
$ ls > pipe-sin-nombre

Ahora introduce el siguiente código en el segundo terminal para ver la salida.

$ cat < pipe-con-nombre

La próxima vez que trabajes con comandos en el terminal de Linux y tengas que trasladar datos entre comandos, puedes hacerlo con un pipe con o sin nombre con suerte de manera rápida y sencilla.

Consejo

¿Utilizas el sistema operativo de Linux y buscas un paquete de alo­ja­mie­n­to web completo con el que puedas escribir tú mismo fra­g­me­n­tos de código de pro­gra­ma­ción enteros o usar un editor intuitivo? El alo­ja­mie­n­to Linux de IONOS te ofrece un re­n­di­mie­n­to escalable, pro­te­c­ción DDoS, geo­rre­du­n­da­n­cia y muchas otras funciones.

Ir al menú principal