En Linux, la línea de comandos se vuelve increíblemente poderosa cuando empiezas a conectar comandos. En lugar de ejecutar un comando, guardar su salida y luego ejecutar otro, puedes crear una tubería (pipeline) para pasar datos directamente entre ellos.
Entendiendo el Operador Pipe
Comencemos con un comando que produce mucha salida:
ls -la /etc
La lista de elementos es probablemente demasiado larga para caber en tu pantalla, lo que dificulta su lectura. Si bien podrías redirigir esta salida a un archivo, un método más eficiente es enviarla directamente a otro comando, como less, para una visualización fácil.
ls -la /etc | less
El operador pipe |, representado por una barra vertical, es la clave de este proceso. Toma la salida estándar (stdout) del comando a su izquierda y la utiliza como entrada estándar (stdin) para el comando a su derecha. En este caso, enviamos por tubería (piped) la salida de ls -la /etc directamente al comando less. El pipe es una herramienta fundamental que usarás constantemente.
Dividiendo la Salida con el Comando Tee
¿Qué pasa si quieres ver la salida en tu pantalla y guardarla en un archivo simultáneamente? Aquí es donde entra en juego el comando tee. El comando pipe and tee en linux es una combinación clásica para registrar y monitorear.
ls | tee peanuts.txt
Después de ejecutar esto, verás la salida de ls en tu terminal. Si también compruebas el contenido de peanuts.txt, encontrarás exactamente la misma información. El comando tee divide efectivamente el flujo de salida en dos direcciones: una a la salida estándar y otra a un archivo especificado.
Combinando Pipe y Tee
Puedes crear flujos de trabajo aún más avanzados encadenando estos comandos. Un patrón común es usar pipe to tee en medio de una cadena de comandos más larga. Esto te permite guardar un resultado intermedio mientras continúas procesando los datos.
Por ejemplo, puedes usar la combinación linux pipe tee para ver y guardar la salida antes de un filtrado adicional:
ls -la /etc | tee etc_listing.txt | grep "conf"
Este comando hace tres cosas:
- Lista el contenido del directorio
/etc. - Envía esa salida por tubería a
tee, que guarda una copia enetc_listing.txty también la pasa adelante. - La salida de
teese envía luego por tubería agrep, que filtra las líneas que contienen "conf".
Dominar estos comandos mejorará significativamente tu eficiencia en la línea de comandos.