Con el comando tee, Linux ofrece la po­si­bi­li­dad no solo de dar salida a la entrada estándar de forma normal, sino también de es­cri­bi­r­la en uno o más archivos. Con ello, este comando es una solución útil para guardar los re­su­l­ta­dos in­te­r­me­dios, ar­chi­var­los o exa­mi­nar­los en busca de fuentes de error.

¿Qué es el comando tee de Linux?

Para entender mejor qué es y qué hace el comando tee de Linux, es in­te­re­sa­n­te saber de dónde viene su nombre. Se llama así por la pieza en T de algunas tuberías, que recuerda a una bi­fu­r­ca­ción. Así es también como funciona este práctico comando: por un lado, lee de la entrada estándar “stdin”, que se utiliza, por ejemplo, con el teclado o un programa; por otro lado, emite lo que ha leído a través de la salida estándar “stdout”. Además de la salida estándar, por ejemplo, la pantalla, el comando tee en Linux también escribe la salida en uno o más archivos. Así, a partir de una entrada se crean si­mu­l­tá­nea­me­n­te dos o más salidas.

¿Cuál es la función del comando tee en Linux?

El archivo adicional en el que este comando de Linux guarda los datos de lectura puede ser recreado si es necesario. Otra po­si­bi­li­dad es utilizar un archivo existente cuyo contenido se borre y se reescriba. La razón más im­po­r­ta­n­te para utilizar el comando tee en Linux es la po­si­bi­li­dad de mantener los re­su­l­ta­dos in­te­r­me­dios dentro de un pipe de Linux. De esta forma, podrás editarlos más tarde o comprobar que no hay errores. El archivo se crea de forma paralela a la salida real sin ningún tipo de re­s­tri­c­ción o im­pe­di­me­n­to técnico.

¿Cómo se utiliza este comando?

La sintaxis básica del comando tee en Linux es siempre la misma y tiene este formato:

tee [OPTIONS] [FILE]
bash

Es im­po­r­ta­n­te que siempre se es­pe­ci­fi­que al menos un archivo (FILE) en el que se va a escribir la salida.

Un ejemplo sencillo para el uso del comando Linux es la co­m­bi­na­ción con el comando du (disc usage). Este muestra qué parte del disco duro está ocupada. El comando completo tendrá entonces el siguiente formato:

du -h | tee disk_usage.txt
bash

De esta forma, obtendrás la in­fo­r­ma­ción de cuánto espacio está ocupado en tu disco duro. La opción “-h” (human readable) indica el espacio ocupado en un formato co­m­pre­n­si­ble. Al mismo tiempo que la salida estándar, la in­fo­r­ma­ción también se almacena y guarda en el archivo de texto disk_usage.txt. Si este archivo no existe, se crea au­to­má­ti­ca­me­n­te.

¿Cómo se evita que se so­bre­s­cri­ba el contenido de un archivo?

Si no tomas ninguna otra pre­cau­ción, el comando tee de Linux so­bre­s­cri­bi­rá la in­fo­r­ma­ción de un archivo en cuanto se vuelva a se­le­c­cio­nar dicho archivo. Si quieres cambiar esto, solo tienes que utilizar la opción de línea de comandos -a. Esto asegurará que el nuevo contenido se añada. En el ejemplo utilizado an­te­rio­r­me­n­te, se vería así:

du -h | tee -a disk_usage.txt
bash

¿Cómo se escribe en varios archivos a la vez con el comando tee?

Es posible escribir la salida en varios archivos de manera sencilla. Para ello, basta con es­pe­ci­fi­car­los in­di­vi­dua­l­me­n­te y se­pa­rar­los con espacios, como en el siguiente ejemplo:

du -h | tee disk_usage1.txt disk_usage2.txt disk_usage3.txt
bash

¿Cómo se reenvía la salida como entrada?

Sin embargo, con el comando tee en Linux no solo puedes escribir la salida si­mu­l­tá­nea­me­n­te en cualquier número de archivos. También tienes la opción de reenviar la salida como entrada a otros comandos. Por ejemplo:

ls file* | tee tercer_archivo.txt | wc -m
bash

En este ejemplo, no solo se almacena la salida en el documento terce_archivo.txt, sino que también se obtiene in­fo­r­ma­ción sobre cuántos ca­ra­c­te­res hay en el archivo.

¿Cómo utilizar el comando tee en Linux con sudo?

También puedes utilizar el comando tee junto con sudo en Linux. Esto es ventajoso o incluso necesario si se ha escrito en un archivo que tiene derechos de root. Si no utilizas sudo, lo único que obtendrás es solo un mensaje de error. Este es un ejemplo de la es­tru­c­tu­ra de este comando:

echo "Ejemplo" | sudo tee -a documento_root.txt
bash
Nota

sudo es un comando que se utiliza en sistemas ope­ra­ti­vos tipo unix como Linux o macOS para ejecutar programas con derechos ampliados. Esto es muy útil cuando hay que realizar tareas que no­r­ma­l­me­n­te co­rre­s­po­n­den a las del ad­mi­ni­s­tra­dor.

¿Cómo ignorar un interrupt durante la ejecución de tee?

Con la opción -i de la línea de comandos tienes la po­si­bi­li­dad de ignorar un interrupt (una in­te­rru­p­ción) durante la ejecución del comando tee en Linux. De lo contrario, la señal de in­te­rru­p­ción se mostraría al pulsar la co­m­bi­na­ción de teclas [Ctrl] + [c]. Establece la opción co­rre­s­po­n­die­n­te di­re­c­ta­me­n­te después del comando tee:

command | tee -i file.out
bash
Ir al menú principal