8 Comando Tee de Linux con ejemplos

El comando tee de Linux se usa para encadenar y redirigir tareas, puede redirigir la salida y / o los errores a un archivo y no se mostrará en la terminal. De manera similar, al usar el encadenamiento, la salida de un comando se puede dar como entrada al segundo comando y luego al tercer comando y así sucesivamente, pero una vez que redirige la salida a un archivo, no puede encadenarlo con otros comandos.

Tee de Linux se puede utilizar para lograr ambos resultados juntos, es decir, almacenar el resultado en un archivo mientras se encadena la misma salida a otro comando.

En este tutorial, discutiremos cómo usar la camiseta de Linux con algunos ejemplos.

Sintaxis del comando Tee

El comando tee básicamente lee de la entrada estándar y escribe en archivos y salidas estándar. A continuación se muestra la sintaxis del comando:

$ command | tee [OPTION]... [FILE]...

Los siguientes ejemplos deberían darnos una mejor idea de cómo funciona el comando.

1) Cómo escribir en una salida estándar y un archivo

Para escribir en una salida estándar y un archivo, use tee después de una tubería y especifique el archivo.

$ sudo ls /home/smart | tee folders_of_smart.txt

Ahora podemos ir a folders_of_smart.txt y vea el contenido del archivo escribiendo el comando a continuación.

$ sudo nano folders_of_smart.txt

Output:
folders_of_smart.txt
foo.txt
output.txt
rootlisting.txt

2) Cómo escribir en un archivo y agregar salida

Para agregar la salida al archivo existente, usaremos -a opción.

$ sudo echo 'Movies' | tee -a folders_of_smart.txt

Ahora podemos ir a folders_of_smart.txt y vea el contenido del archivo escribiendo el comando a continuación.

$ sudo nano folders_of_smart.txt

Output:
folders_of_smart.txt
foo.txt
output.txt
rootlisting.txt
Movies

3) Cómo escribir en varios archivos

Para escribir en varios archivos, solo tenemos que mencionar sus nombres en la línea de comando.

$ sudo ping facebook.com | tee output1.txt output2.txt output3.txt

Ahora podemos ir a output1.txt, output2.txt y vea el contenido del archivo escribiendo el comando a continuación.

$ sudo nano output1.txt

$ sudo nano output2.txt

Output:
PING facebook.com(edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de)) 5$
64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$
64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$

4) Cómo redirigir la salida de un comando a otro

También podemos pasar la salida como entrada a otros comandos. Para example, el siguiente comando no enumerará todos los nombres de carpeta en folders_of_smart.txt pero lista a través de grep ^o comando la carpeta comienza con letra El.

$ sudo ls /home/smart | tee folders_of_smart.txt | grep ^o

output:
output1.txt
output2.txt
output3.txt
output.txt

Otro example, vamos a listar /etc directorios y luego la salida se almacena en el archivo llamado stage1.txt, Esta salida se filtra a través del comando grep para las líneas que comienzan con la letra I, Esta salida filtrada se almacena en el archivo stage2.txt.

Finalmente, la salida filtrada se ordena al revés usando sort -r mando. Esta salida final se muestra en el terminal.

$ ls /etc | tee stage1.txt | grep ^i | tee stage2.txt | sort -r

output:
issue.net
issue
iscsi
iproute2
inputrc
initramfs-tools
init.d
init

5) Cómo ver archivos de registro y escribir en un archivo

Podemos analizar el HTTP2 el tráfico pasa por un apache2 servidor usando tee comando, Los registros en vivo se pueden transmitir a la salida estándar y también se pueden escribir en un archivo para su posterior análisis.

$ sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log

6) Cómo escribir en un archivo privilegiado usando tee

Cuando queremos escribir en un archivo propiedad de root me gusta folder_of_root.txt, usaremos sudo antes de tee comando como el example debajo.

$ sudo echo 'Documents' | sudo tee -a folder_of_root.txt

Se nos pedirá la contraseña de root, ingrese la contraseña de root y los cambios se guardarán en folder_of_root.txt.

7) Cómo usar el comando tee con Python Script

Nosotros podemos usar tee comando con la secuencia de comandos de Python para almacenar la salida en un archivo y mostrar la salida en la pantalla, Primero, escribiremos la secuencia de comandos de Python para calcular el área del círculo como se muestra a continuación y guardarla en area.py Archivo.

# -*- coding: utf-8 -*-
"""This script calculate the area of circle"""
from math import pi as pi
from math import ceil as ceil

radius = 2.5

area = pi * radius**2

print('The area of circle is', ceil(area))

Cambiaremos el valor de radio y agregaremos la salida a area.txt.

$ python area.py | tee -a area.txt

Output
('The area of circle is for radius 2', 13.0)
('The area of circle is for radius 2.5', 20.0)
('The area of circle is for radius 3', 29.0)
('The area of circle is for radius 3.5', 39.0)

8) Cómo utilizar tee Command con Bash Script

Nosotros podemos usar tee comando con bash script para almacenar la salida en un archivo y mostrar la salida en la pantalla, Primero, escribiremos bash secuencia de comandos para mostrar la salida de estos comandos pwd, ls y $HOME como se muestra a continuación y guárdelo en bash.txt Archivo.

#!/bin/bash
echo "`pwd`";
echo "`ls`";
echo "$HOME";

$ ./bash.txt | tee smart.txt

Output
/media/disk
bash.txt
flask.pdf
smart.py
smart.txt
VirtualBox-5.2-5.2.14_123301_el6-1.x86_64.rpm
/home/smart

El comando tee es una herramienta asombrosa, podemos leer la entrada estándar y escribirla tanto en la salida estándar como en uno o más archivos.

Leer también:

  • Cómo usar el comando Tr de Linux con ejemplos