CodeAventura
Linux
▸Texto y Redirección▸Pipes: conectar comandos con |

Misión

TerminalTema: Vintage
Pipes: conectar comandos con |
10
/
17

Pipes: conectar comandos con |

La filosofía Unix

Los creadores de Unix tenían una idea brillante: en lugar de hacer programas enormes que lo hagan todo, es mejor hacer programas pequeños que hacen una sola cosa bien y luego conectarlos entre sí.

El pipe (|) es lo que hace posible esa conexión. Toma la salida de un comando y la pasa como entrada al siguiente.

Tu primer pipe

¿Qué pasa aquí?

  1. ls -la lista todos los archivos en formato largo
  2. El pipe | toma esa lista y se la pasa a grep
  3. grep ".txt" filtra y muestra solo las líneas que contienen ".txt"

El resultado: solo ves los archivos .txt. Dos comandos simples, combinados, hacen algo que ninguno podría hacer solo.

Contar con pipes

Esto cuenta las líneas de un archivo. cat muestra el contenido y wc -l cuenta las líneas que recibe.

wc -w cuenta palabras. El resultado: 3.

Encadenar múltiples pipes

No estás limitado a dos comandos. Puedes encadenar tantos como necesites:

  1. cat muestra el contenido
  2. sort ordena las líneas
  3. uniq elimina las duplicadas

Cada pipe pasa el resultado al siguiente comando. Los datos fluyen de izquierda a derecha como agua por una tubería (de ahí el nombre "pipe").

Pipes + redirección

Puedes combinar pipes con redirección para guardar el resultado final:

Los pipes procesan los datos y > guarda el resultado final en un archivo. Lo mejor de ambos mundos.

¿Por qué importan los pipes?

Los pipes son lo que convierte la terminal de una herramienta simple en una herramienta extraordinariamente potente. Con pipes puedes:

  • Filtrar datos de cualquier comando
  • Procesar texto de formas complejas
  • Crear pipelines de procesamiento de datos
  • Hacer en una línea lo que un programa necesitaría docenas

Es el superpoder de Linux.

Tu desafío

Cuenta cuántos archivos hay en el directorio actual combinando ls y wc:

El pipe toma la lista de archivos de ls y wc -l cuenta cuántas líneas hay — cada línea es un archivo.