Usar tee para Duplicar la Salida y Redireccionar la Entrada Estándar con <
En este paso final, explorarás dos conceptos de redirección complementarios: duplicar la salida con el comando tee y proporcionar entrada a un comando desde un archivo usando el operador <.
Duplicar la Salida con tee
A veces, deseas guardar la salida de un comando en un archivo y, al mismo tiempo, verla en la terminal. Los operadores > y >> redireccionan la salida exclusivamente a un archivo, ocultándola de la pantalla. El comando tee soluciona esto duplicando la salida, enviándola tanto a un archivo como a la salida estándar (tu pantalla). Su nombre proviene de una pieza en forma de "T" utilizada en fontanería, que divide un flujo en dos caminos.
Veámoslo en acción. Listaremos el contenido del directorio /etc/ y usaremos tee para mostrar la lista en pantalla y guardarla en un archivo llamado etc_listing.txt.
ls /etc/ | tee etc_listing.txt
Verás el listado completo del directorio impreso en tu terminal. Al mismo tiempo, el comando tee ha escrito exactamente la misma salida en etc_listing.txt. Puedes verificarlo:
cat etc_listing.txt
El contenido del archivo coincidirá con lo que viste en pantalla.
Por defecto, tee sobrescribe el archivo de destino. Para añadir a un archivo en su lugar, utiliza la opción -a. Esto es muy útil para registros. Vamos a crear un archivo de log y añadir dos entradas.
date | tee system_log.txt
echo "User labex performed a system check." | tee -a system_log.txt
El primer comando crea system_log.txt con la fecha actual. El segundo comando, usando tee -a, añade una nueva línea sin borrar la fecha. Revisemos el archivo final:
cat system_log.txt
La salida mostrará ambas líneas:
Wed Jun 25 14:56:53 CST 2025
User labex performed a system check.
Redireccionar la Entrada Estándar con <
Ahora veamos lo opuesto a la redirección de salida: redireccionar la entrada estándar (stdin). Muchos comandos, como sort, wc o cat, pueden leer datos desde stdin (normalmente tu teclado). El operador < te permite indicarle a un comando que obtenga su entrada desde un archivo en su lugar.
Primero, creemos un archivo simple con una lista de elementos. Lo llamaremos items.txt.
echo "banana" > items.txt
echo "apple" >> items.txt
echo "cherry" >> items.txt
Ahora tenemos un archivo items.txt con tres elementos desordenados. El comando sort puede ordenar líneas de texto. Usemos < para alimentar el comando sort con el contenido de items.txt.
sort < items.txt
El comando leerá el contenido de items.txt como su entrada, lo ordenará e imprimirá el resultado en su salida estándar (la terminal):
apple
banana
cherry
Esto es funcionalmente similar a ejecutar sort items.txt, pero demuestra el potente concepto de redireccionar un archivo a la entrada estándar de un comando. Esto se vuelve esencial cuando se trabaja con comandos que solo pueden leer de stdin y no aceptan un nombre de archivo como argumento.
Como ejemplo final, considera cat < items.txt. Esto le indica a cat que lea su entrada desde items.txt y, dado que el trabajo de cat es imprimir su entrada en su salida, muestra el contenido del archivo en la pantalla.
cat < items.txt
Esto concluye nuestro recorrido por la redirección básica de E/S en Linux. Ahora tienes las herramientas para controlar de dónde obtienen tus comandos su entrada y a dónde va su salida.