Pipes de Linux explicados

Los pipes son una herramienta potente en Linux, el sistema operativo de código abierto. Linux Pipes te permiten procesar secuencialmente una serie de comandos referentes a un conjunto de datos, o mover eficazmente los datos de un lado a otro entre comandos, por ejemplo. La ventaja es que así se simplifican procesos complejos porque los comandos complejos se convierten en un verdadero “equipo de comandos”. Aquí te explicamos en detalle cómo funcionan los pipes en Linux y por qué es tan útil este comando.

Ofertas de Black Friday

Descuentos exclusivos de Black Friday y Cyber Monday

Hosting
MyWebsite
WordPress

¿Qué son los pipes de Linux?

El concepto Pipe procede de la palabra inglesa “pipeline”, cuya traducción es “tubería”. En informática, un pipe es un flujo de datos que circula entre dos procesos que, o bien están estrechamente vinculados, 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 utilizarse entre procesos estrechamente vinculados entre sí, los pipes con nombre o FIFO (basados en el principio “First in – first out”) permiten la comunicación entre dos procesos no relacionados que pueden encontrarse en distintos ordenadores dentro de la misma red. A diferencia de los pipes sin nombre, los pipes con nombre permiten una comunicación bidireccional, no solo unidireccional (un proceso escribe y el otro solo lee).

Nota

Enlazar comandos de manera lógica es obviamente algo común en informática. Con el comando ln de Linux, por ejemplo, es posible crear un enlace a un archivo o un directorio de la manera más sencilla. En nuestro artículo guía te explicamos qué otros comandos de Linux tienes que conocer sí o sí.

La sintaxis de pipes de Linux y ejemplos de aplicación

Para crear pipes en Linux correctamente, primero hay que entender la sintaxis. A continuación, verás la estructura 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 instalaciones Ubuntu más extendidas que pueden adquirirse de manera gratuita y que se actualizan regularmente.

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

Como vemos arriba, la sintaxis de un pipe sin nombre es verdaderamente sencilla. Consta del símbolo “|”, que p. ej. se coloca entre otros dos comandos. En el siguiente ejemplo, el pipe es solo válido temporalmente.

$ 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 directorio determinado: más concretamente, la salida del comando ls -al. En primer lugar, se preguntan los nombres de los archivos con la contraseña “file” de contents.txt mediante el piping, para que la salida del comando cat sirva como entrada para el comando grep. Luego, ejecutamos 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ácilmente 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 cualquiera a otro proceso, utiliza el símbolo “>”. Para desviar una entrada estándar de un comando cualquiera, 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 alojamiento web completo con el que puedas escribir tú mismo fragmentos de código de programación enteros o usar un editor intuitivo? El alojamiento Linux de IONOS te ofrece un rendimiento escalable, protección DDoS, georredundancia y muchas otras funciones.