# Pipes de Linux explicados

Los pipes son una herramienta potente en [Linux, el sistema operativo](https://www.ionos.es/digitalguide/servidores/know-how/linux-una-alternativa-a-windows-de-bajo-coste/ "Linux: una alternativa a Windows de bajo coste") 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.

## ¿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](https://www.ionos.es/digitalguide/servidores/configuracion/comando-ln-de-linux/ "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](https://www.ionos.es/digitalguide/servidores/configuracion/comandos-de-linux-la-lista-fundamental/ "Comandos de Linux: la lista fundamental") 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](https://www.ionos.es/digitalguide/servidores/know-how/ubuntu-un-sistema-para-todos-basado-en-linux/ "Ubuntu: un sistema para todos basado en Linux") más extendidas que pueden adquirirse de manera gratuita y que se actualizan regularmente.

---

```none
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.

```none
$ 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](https://www.ionos.es/digitalguide/servidores/configuracion/linux-comando-grep/ "Linux: 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](https://www.ionos.es/digitalguide/servidores/configuracion/comando-linux-find/ "Comando Linux find") 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](https://www.ionos.es/digitalguide/servidores/configuracion/comandos-shutdown-de-linux/ "Comandos shutdown de Linux") o lo borres. Esta es la sintaxis correcta:

```none
mkfifo <pipe-name>
```

o

```none
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 “**&gt;**”. Para desviar una **entrada estándar** de un comando cualquiera, usa el símbolo “**&lt;**”. En el siguiente ejemplo nombra el pipe en el primer terminal.

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

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

```none
$ 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](https://www.ionos.es/alojamiento/linux-hosting "Hosting Linux con HTTP/2, PHP 7.4 y certificado SSL IONOS") te ofrece un rendimiento escalable, protección DDoS, georredundancia y muchas otras funciones.

---


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/configuracion/pipes-linux/](https://www.ionos.es/digitalguide/servidores/configuracion/pipes-linux/) for AI/LLM consumption.