El comando Linux Tee es una herramienta de línea de comandos, lee desde la entrada estándar y escribe el resultado en la salida estándar y los archivos al mismo tiempo. En otras palabras, podemos decir, el comando tee en Linux se usa para matar dos pájaros de un tiro:leyendo desde la entrada estándar e imprimiendo el resultado en un archivo y en la salida estándar al mismo tiempo. ¿Qué queremos decir con esto? En esta guía, arrojamos más luz sobre el comando tee de Linux y usamos algunos ejemplos para demostrar su uso.
Sintaxis del comando Tee
La sintaxis del comando tee es bastante simple y tiene el siguiente formato:
$ te OPCIONES nombre de archivo
Estas son algunas de las opciones que puede usar con el comando tee:
En la sintaxis del comando tee, nombre de archivo se refiere a uno o más archivos.
Con eso en mente, veamos algunos ejemplos de cómo se usa el comando.
Ejemplo 1) Uso básico del comando tee
Como se describió anteriormente, la función principal del comando tee es mostrar la salida de un comando (stdout) y guardarla en un archivo. En el siguiente ejemplo, el comando estamos inspeccionando los dispositivos de bloque en nuestro sistema y canalizando los resultados al comando tee que muestra el resultado en el terminal mientras lo guarda simultáneamente en un nuevo archivo llamado block_devices.txt
$ lsblk | tee block_devices.txt
Siéntase libre de examinar el contenido del archivo block_devices.txt usando el comando cat como se muestra:
$ cat block_devices.txt
Ejemplo 2) Guardar la salida del comando en varios archivos usando tee
Además, puede escribir la salida de un comando en varios archivos separados por espacios como se muestra en la siguiente sintaxis.
$ comando | te archivo1 archivo2 archivo3 . . .
En el siguiente ejemplo, hemos invocado el comando hostnamectl para imprimir el nombre de host de nuestro sistema entre otros detalles y guardar la salida estándar en dos archivos archivo1.txt y archivo2.txt
$ hostnamectl | tee file1.txt file2.txt
Una vez más, puede confirmar la existencia de la salida en los dos archivos usando el comando cat como se muestra:
$ cat file1.txt $ cat file2.txt
Ejemplo 3) Suprimir la salida del comando tee
Si desea ocultar o suprimir el comando tee para que no imprima la salida en la pantalla, redirija la salida a /dev/null como se muestra:
$ comando | archivo tee> /dev/null
Por ejemplo,
$ df -Th | tee file4.txt > /dev/null
Ejemplo 4) Agregar salida a un archivo con el comando tee
De forma predeterminada, el comando tee sobrescribe el contenido de un archivo. Para agregar la salida y evitar que se borre el contenido actual, use las opciones -a o –append.
$ comando | tee -un archivo
En el segundo comando, como se muestra, hemos agregado la salida del comando de fecha a file1.txt que ya contiene la información sobre los dispositivos USB en el sistema.
$ date | tee -a file1.txt
Ejemplo 5) Usa tee junto con el comando sudo
Suponga que, como usuario sudo, desea escribir en un archivo que es propiedad del usuario raíz. Naturalmente, cualquier operación elevada requerirá que invoque al usuario sudo antes del comando.
Para lograr esto, simplemente prefije el comando tee con sudo como se muestra a continuación.
$ echo "10.200.50.20 db-01" | sudo tee -a /etc/hosts/
Entonces, tee recibe la salida del comando echo a la izquierda y la eleva usando el comando sudo que finalmente agrega la salida al archivo.
Ejemplo 6) Redirigir la salida de un comando a otro usando el comando tee
Usando el comando tee, podemos redirigir fácilmente la salida de un comando a otro comando. Aquí la salida del primer comando actuará como entrada para el segundo comando. A continuación se muestra un ejemplo:
$ grep 'root' /etc/passwd | tee /tmp/passwd.tmp | wc -l 2 $ cat /tmp/passwd.tmp root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin $
Ejemplo 7) Guardar cambios en un archivo dentro del editor vi con el comando tee
Supongamos que está trabajando como usuario no root y está realizando cambios en el archivo propiedad de root y se olvida de poner sudo delante del comando y ahora desea guardar los cambios, el ejemplo se muestra a continuación:
$ vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.60 mail.linuxtechi.com 192.168.1.50 ns.linuxtechi.com 192.168.1.40 pxe.linuxtechi.com
Al guardar los cambios en el archivo, recibirá un mensaje de solo lectura,
Ahora, para guardar los cambios en el archivo /etc/hosts dentro del editor vi, ejecute
:w !sudo camiseta %
Le pedirá que ingrese la contraseña del usuario, si el usuario tiene derechos sudo, los cambios se guardarán.
Ejemplo 8) Ignorar la señal de interrupción mientras se usa el comando tee
El uso de la opción '-i' en el comando tee puede ignorar la señal de interrupción (CTRL-C), el ejemplo se muestra a continuación:
$ ping -c 5 linuxtechi.com | tee -i /tmp/pingtest.tmp
Ejemplo 9) uso del comando tee en script de shell
El comando Tee también se usa con frecuencia en scripts de shell, uno de los ejemplos comunes se enumera a continuación:
$ vi basic-script.sh #!/bin/bash LOGFILE=/tmp/basic-logs-$(date +%d%m%Y) FLAVOR=$(cat /etc/*-release | grep -w 'NAME=' | cut -d"=" -f2 | awk '{print $1}'| sed 's/"//g') if [ $FLAVOR == CentOS ]; then dmesg | grep -i 'error' | tee -a $LOGFILE grep -i 'installed' /var/log/dnf.log | tee -a $LOGFILE else echo 'do nothing' fi
Como podemos ver en el script de shell de Linux anterior, estamos usando el comando tee para agregar los resultados de dos comandos a un archivo de registro solo si el sistema operativo es CentOS.
Conclusión
Esto concluye el tema de hoy. Siéntase libre de opinar. Sus comentarios son bienvenidos. En esta guía, cubrimos el comando tee de Linux.