Uso del comando tee en linux

Uso del comando tee en linux, para imprimir salidas en pantalla o guardarlas en un archivo.

El comando tee en Linux tiene un uso específico, tomar una entrada estándar e imprimir la salida tanto en pantalla como en uno o varios archivos. También se puede utilizar como entradas de variables, en scripts bash y otros.

Como norma general, este comando aprovecha todo su potencial combinado con otros comandos. En este artículo y como es habitual en sololinux, aprenderemos a usar la herramienta con ayuda de ejemplos.

Comando tee

Comando tee

 

Uso del comando tee en linux

La sintaxis básica del comando, es sencilla y fácil de recordar.

tee [OPCION] [ARCHIVO]

 

Imprimir salida y guardar en un archivo

En nuestro primer ejemplo, imprimimos en pantalla el estado de la memoria y, guardamos el resultado en un archivo.

free -m  | tee memoria_estado.txt

Se imprime y se genera un archivo con el resultado.

sergio@sololinux-demo:~/demo$ free -m  | tee memoria_estado.txt
              total       usado       libre  compartido búfer/caché  disponible
Memoria:        3841        1207        1873         301         760        2110
Swap:          2048           0        2048
sergio@sololinux-demo:~/demo$ ls
memoria_estado.txt
sergio@sololinux-demo:~/demo$

 

No sobreescribir la salida impresa en el archivo

Por defecto, si ejecutas de nuevo el mismo comando, el resultado se sobreescribe (los datos anteriores se borran). Para que esto no suceda, puedes aplicar la opción «-a».

free -m  | tee -a memoria_estado.txt

Con el comando cat, podemos ver el contenido del archivo (ahora duplicado).

sergio@sololinux-demo:~/demo$ free -m  | tee -a memoria_estado.txt
              total       usado       libre  compartido búfer/caché  disponible
Memoria:        3841        1202        1844         306         794        2109
Swap:          2048           0        2048
sergio@sololinux-demo:~/demo$ cat memoria_estado.txt
              total       usado       libre  compartido búfer/caché  disponible
Memoria:        3841        1207        1873         301         760        2110
Swap:          2048           0        2048
              total       usado       libre  compartido búfer/caché  disponible
Memoria:        3841        1202        1844         306         794        2109
Swap:          2048           0        2048
sergio@sololinux-demo:~/demo$

 

Imprimir salida y guardar en varios archivos

El comando tee, también nos permite guardar el resultado en varios archivos.

free -m  | tee salida1.txt salida2.txt salida3.txt

Observa la imagen de ejemplo.

Guardar en varios archivos con el comando tee

Guardar en varios archivos con el comando tee

Uso del comando tee en linux

 

Omitir la impresión en pantalla

Con el siguiente comando, puedes omitir la impresión en pantalla de la salida y que solo se guarde en un archivo.

free -m | tee salida-ejemplo.txt > /dev/null

Ejemplo…

sergio@sololinux-demo:~/demo$ free -m | tee salida-ejemplo.txt > /dev/null
sergio@sololinux-demo:~/demo$ ls
salida-ejemplo.txt
sergio@sololinux-demo:~/demo$

 

Ignorar interrupciones

Existen comandos que pueden provocar interrupciones en el flujo de datos entrantes, por ejemplo el comando ping. En nuestro comando de ejemplo, enviamos 10 paquetes a google.com.

ping -c 10  google.com | tee -i ping-google.txt

Ejemplo del comando tee con la opción «-i».

sergio@sololinux-demo:~/demo$ ping -c 10 google.com | tee -i ping-google.txt
PING google.com (172.217.18.78) 56(84) bytes of data.
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=1 ttl=117 time=71.4 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=2 ttl=117 time=196 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=3 ttl=117 time=114 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=4 ttl=117 time=27.6 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=5 ttl=117 time=56.5 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=6 ttl=117 time=83.1 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=7 ttl=117 time=102 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=8 ttl=117 time=23.6 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=9 ttl=117 time=145 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=10 ttl=117 time=66.6 ms

--- google.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9016ms
rtt min/avg/max/mdev = 23.659/88.877/196.574/50.534 ms
sergio@sololinux-demo:~/demo$ ls
ping-google.txt
sergio@sololinux-demo:~/demo$ cat ping-google.txt
PING google.com (172.217.18.78) 56(84) bytes of data.
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=1 ttl=117 time=71.4 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=2 ttl=117 time=196 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=3 ttl=117 time=114 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=4 ttl=117 time=27.6 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=5 ttl=117 time=56.5 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=6 ttl=117 time=83.1 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=7 ttl=117 time=102 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=8 ttl=117 time=23.6 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=9 ttl=117 time=145 ms
64 bytes from bud02s26-in-f14.1e100.net (172.217.18.78): icmp_seq=10 ttl=117 time=66.6 ms

--- google.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9016ms
rtt min/avg/max/mdev = 23.659/88.877/196.574/50.534 ms
sergio@sololinux-demo:~/demo$

 

Identificar la versión instalada del comando tee
tee --version

En nuestro sistema tenemos la 8.28.

sergio@sololinux-demo:~/demo$ tee --version
tee (GNU coreutils) 8.28
Copyright © 2017 Free Software Foundation, Inc.
Licencia GPLv3+: GPL de GNU versión 3 o posterior
<http://gnu.org/licenses/gpl.html>.
Esto es software libre: usted es libre de cambiarlo y redistribuirlo.
No hay NINGUNA GARANTÍA, hasta donde permite la ley.

Escrito por Mike Parker, Richard M. Stallman, y David MacKenzie.
sergio@sololinux-demo:~/demo$

 

Ayuda del comando tee

La herramienta tee, es para lo que es y nada más. Sus opciones son pocas pero poderosas. Puedes revisar la ayuda integrada del comando con la opción «–help».

tee --help
Manual del comando tee

Manual del comando tee

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Uso del comando tee en linux.

Chat de SoloLinux en Telegram

 

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido