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.
Fuentes consultadas
- about_Pipelines (Microsoft Learn)