Introducción
Cuando el usuario ejecuta un comando en un shell interactivo de Linux, el resultado se muestra en el terminal de texto. Sin embargo, hay formas de cambiar este comportamiento utilizando comandos de shell adicionales conectados en una canalización.
En este tutorial, aprenderá a usar el comando tee en Linux para administrar la salida de un comando.
Requisitos previos
- Un sistema que ejecuta Linux
- Acceso a la línea de comando o terminal
- Privilegios de Sudo
¿Qué hace el comando tee en Linux?
La tee
El comando lee la entrada estándar (stdin) y la escribe tanto en la salida estándar (stdout) como en uno o más archivos. tee
suele ser parte de una canalización, y cualquier número de comandos puede precederlo o seguirlo.
Comandos tee en Linux con ejemplos
La tee
El comando se usa solo o con opciones adicionales. Las siguientes secciones enumeran las opciones disponibles y proporcionan ejemplos de uso de comandos.
Uso básico
La sintaxis básica para tee
el comando es:
[command] | tee [options] [filename]
El siguiente ejemplo demuestra el uso de tee
para crear un archivo que almacene información sobre una interfaz de red mientras proporciona el mismo resultado en la terminal:
El comando cat confirma que tee
escribió con éxito la salida de ifconfig
al archivo example.txt
:
Si el archivo utilizado para el comando ya existe, tee
sobrescribe el contenido anterior del archivo.
Anexar al archivo dado
Sobrescribir el contenido del archivo es el comportamiento predeterminado del tee
dominio. Utilice el argumento -a
(o --append
) para agregar la salida del comando al final del archivo.
[command] | tee -a [filename]
Por ejemplo, use el echo
comando para agregar una línea de texto a un archivo:
Confirme la adición exitosa con el cat
comando:
Escribir en varios archivos
Usa tee
seguido de cualquier número de archivos para escribir el mismo resultado en cada uno de ellos:
[command] | tee [options] [filename1] [filename2]...
El siguiente ejemplo muestra cómo escribir la salida de echo
comando a dos archivos:
El ls
comando muestra que tee
archivos creados correctamente example1.txt
y example2.txt
.
Ocultar la salida
Decir tee
para almacenar la salida del comando en un archivo y omitir la salida del terminal, use la siguiente sintaxis:
[command] | tee [options] [filename] >/dev/null
En el siguiente ejemplo, tee
crea un archivo que contiene los datos de la interfaz de red, omitiendo la salida estándar:
Redirigir la salida de un comando a otro
tee
no tiene que ser el último comando en la canalización. Úselo para reenviar la salida a otro comando:
[command] | tee [options] [filename] | [command]
En el siguiente ejemplo, tee
almacena la salida de ls
comando a example.txt
y pasa el contenido de ese archivo al comando grep, que encuentra y muestra todas las instancias de la palabra "ejemplo":
Ignorar interrupciones
Para habilitar tee
para salir correctamente incluso después de que se haya interrumpido el comando anterior, agregue el argumento -i
(o --ignore-interrupts
):
[command] | tee -i [filename]
El siguiente ejemplo muestra tee
escribiendo el resultado del comando ping y completando la acción con éxito incluso después de ping
se interrumpe con Ctrl+C
:
Uso de te con Sudo
Para habilitar tee
para escribir en un archivo propiedad de la raíz o un archivo que pertenece a otro usuario, coloque el comando sudo justo antes de tee
.
[command] | sudo tee [options] [filename]
El siguiente ejemplo muestra un intento fallido de escribir en el sudoex.txt
propiedad de la raíz . Cuando sudo
se agrega el comando, la operación se completa:
Usando te en Vim Editor
Si abre y edita un archivo de propiedad raíz en Vim sin utilizar sudo
comando, intentar guardar los cambios produce un error:
Para anular este error, escriba lo siguiente en Vim:
:w !sudo tee %
Después de ingresar el sudo
contraseña, Vim muestra una advertencia pero escribe los cambios en el archivo.
Diagnóstico de errores al escribir en no conductos
Para instruir tee
para imprimir un mensaje de error cuando falla el proceso, utilice -p
argumento:
[command] | tee -p [filename]
La acción predeterminada de tee -p
es salir e imprimir el mensaje de error inmediatamente después de detectar el error al escribir en una tubería. Para cambiar el comportamiento del comando en caso de error de escritura, use --output-error
argumento, seguido del modo que especifica el comportamiento:
[command] | tee --output-error=[mode] [filename]
Hay cuatro modos posibles:
warn
– diagnostica errores al escribir en cualquier salida.warn-nopipe
– diagnostica errores al escribir en cualquier salida que no sea de tubería.exit
– sale en caso de errores al escribir en cualquier salida.exit-nopipe
– sale en caso de errores al escribir en cualquier salida que no sea de tubería.
Usar el comando tee con Bash Script
La tee
El comando se encuentra a menudo en scripts bash. Considere el siguiente ejemplo:
El script anterior imprime el mensaje "Hello World" y almacena el resultado en un archivo de registro. Ejecutar el script crea un archivo de registro en el tmp
carpeta. El registro contiene la salida del script:
Ver archivos de registro
La escritura de la salida del script en un archivo de registro generalmente se realiza con el >
operador:
./testbash.sh > testbash.log
El comando anterior crea un archivo de registro pero no escribe nada en la salida estándar.
Usa tee
para crear un archivo de registro y ver el resultado en la terminal:
./testbash.sh | tee testbash.log
Ver Ayuda e Información de Versión
Ver la versión actual de la tee
comando escribiendo:
tee --version
Para obtener instrucciones sobre la tee
sintaxis del comando y los argumentos disponibles, use el argumento de ayuda del comando:
tee --help