Cuando ejecuta comandos básicos en el terminal, la salida generalmente se imprime en el terminal, es decir, la salida estándar. Pero, ¿qué pasaría si también pudiera guardar la salida en un archivo e imprimirla a la salida estándar? Esto es lo que hace el comando tee. El comando tee de Linux lee desde stdin (entrada estándar) y luego escribe en stdout (salida estándar), así como en un archivo o varios archivos.
Sintaxis básica del comando tee
El comando tee toma la siguiente sintaxis.
Veamos ahora algunos ejemplos de uso del comando tee.
Uso básico del comando tee
Supongamos que queremos imprimir la memoria e intercambiar el uso usando el gratis y guarde el resultado en un archivo llamado memory_usage.txt . El comando tee se invocaría de la siguiente manera.
$ free -h | tee memory_usage.txt
El comando tee lee del comando, guarda la salida en memory_usage.txt y luego lo imprime a la salida estándar.
Para confirmar que la salida se guardó en memory_usage.txt archivo ejecute el comando cat como se muestra.
$ cat memory_usage.txt
Escribir la salida en varios archivos
Además, puede guardar la salida en varios archivos como se muestra
En el siguiente comando, la cadena “Hola, bienvenido a Linux” se guarda en los dos archivos de texto:file1.txt y archivo2.txt
$ echo Hey, Welcome to Linux | tee file1.txt file2.txt
Adjuntar contenido a un archivo
Por lo general, el comando tee sobrescribe un archivo, y esto no siempre es deseable ya que puede borrar datos existentes que son cruciales. Afortunadamente, puedes usar -a opción para añadir texto a un archivo. Probemos esto.
Primero, escribiremos la salida del tiempo de actividad comando al stats.txt archivo como se muestra.
tiempo de actividad de $ | estadísticas de tee.txt
Usa el gato comando para verificar esto.
$ cat stats.txt
A continuación, agregaremos la salida de free -h comando que imprime nuestra memoria y cambia el uso al archivo.
$ free -h | tee -a stats.txt
Una vez más, verifique el contenido de stats.txt expediente. Esta vez, el archivo tendrá la salida de los dos comandos como se indica en la captura de pantalla a continuación. Esto se debe a que agregamos la salida de free -h comando al stats.txt archivo y, por lo tanto, el texto existente no se vio afectado.
Suprimir la salida del comando tee
Si no desea tener la salida del tee comando impreso en estándar, puede redirigirlo a /dev/null que es un dispositivo especial que descarta la información que se le alimenta.
Tome el siguiente ejemplo donde estamos imprimiendo la salida de df -Th comando al archivo de texto pero suprimiendo la salida en el terminal.
$ df -Th | tee disk_usage.txt >/dev/null
Permitir que el comando tee ignore las interrupciones
A veces, es posible que desee detener un comando que se ejecuta continuamente. Cuando eso suceda, podría considerar hacer que el comando tee salga correctamente incluso después de la interrupción del programa. Para lograr esto, use -i o –ignore-interrupts opción proporcionada en la sintaxis mostrada.
El siguiente comando ping envía continuamente solicitudes de ping al DNS de Google (8.8.8.8). Hemos interrumpido el comando después de 4 solicitudes de ping sucesivas. Para la camiseta comando para salir correctamente, invoque el -i opción.
$ ping 8.8.8.8 | tee -i ping_stats.txt
Sin el -i opción, la salida y el resumen de las estadísticas no se imprimirían.
Utilice el comando tee con sudo
Al modificar archivos propiedad del usuario raíz o de un usuario de inicio de sesión diferente, simplemente usar el comando tee sin invocar el comando sudo generará un error.
En el siguiente ejemplo, estamos creando un nuevo repositorio llamado anydesk-stable.list para la aplicación AnyDesk en /etc/apt/sources.list.d ruta que es una reserva para el usuario root.
$ echo "deb http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list
Como era de esperar, nos encontramos con un error de "permisos denegados" porque no tenemos los permisos para crear o modificar un archivo en esa ruta.
La solución es preceder tee con el comando sudo como se muestra.
$ echo "deb http://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list
En esta ocasión, el comando es un éxito tras colocar sudo antes de tee.
Obtenga ayuda con el comando tee
Para obtener más opciones de comando y asistencia para usar el comando tee, ejecute el siguiente comando.
$ tee --help
Además, explore las páginas man como se muestra
$ man tee
Para comprobar la versión, ejecute:
$ tee --version
Resumen
Esto es todo sobre el comando tee de Linux. En particular, el comando lee desde la entrada estándar (stdin) y luego escribe en la salida estándar (stdout) y archivo(s).