Diccionario

Tubería (pipe)

El símbolo | de la terminal, que envía la salida de un comando como entrada del siguiente para encadenarlos.

Con | combinas herramientas pequeñas en una sola orden: una lista, otra filtra y otra cuenta. Es una de las ideas centrales de Unix.

En Bash lo que pasa por la tubería es texto; en PowerShell son objetos completos. Las redirecciones (> y >>) son otra cosa: envían la salida a un archivo.

Un ejemplo

grep error registro.log | wc -l cuenta cuántas líneas del registro contienen «error».

Por qué importa

La tubería (pipe) conecta la salida de un comando con la entrada del siguiente mediante el símbolo |. Permite construir operaciones complejas encadenando herramientas pequeñas, cada una especializada en una tarea. Es la filosofía clásica de Unix: en lugar de un programa gigante, muchas piezas simples que se combinan. Por ejemplo, ls | wc -l cuenta cuántos archivos hay en una carpeta, y cat registro.txt | grep error | sort filtra y ordena las líneas con errores.

En shells clásicas como Bash, lo que viaja por la tubería es texto, por lo que a menudo hay que usar grep, awk o cut para extraer lo que interesa. En PowerShell viajan objetos con propiedades, y puedes filtrar con Where-Object u ordenar con Sort-Object sin trocear texto. Aprender a usarla multiplica lo que puedes hacer desde la terminal con muy poco código.

Confusiones frecuentes

Es frecuente confundir la tubería con la redirección. La tubería (|) envía la salida de un comando como entrada de otro; la redirección (> o >>) guarda la salida en un archivo, y < lee la entrada desde un archivo. Otro error típico de principiante es esperar que todos los comandos acepten datos por la tubería: algunos leen de la entrada estándar y otros solo reciben argumentos, para los que se usan herramientas como xargs. Y en PowerShell, recordar que lo que pasa son objetos, no texto, evita intentar procesarlos como cadenas.

Preguntas frecuentes

¿Cuál es la diferencia entre `|` y `>`?

| pasa la salida a otro comando; > la escribe en un archivo (sobrescribiéndolo) y >> la añade al final del archivo.

¿Cuántos comandos puedo encadenar?

Todos los que quieras: a | b | c | d. Cada uno recibe la salida del anterior y entrega la suya al siguiente.