Búsqueda de sitios web

Redirigir stderr usando el comando tee en Ubuntu


El comando tee toma la entrada estándar y la envía a uno o más archivos y la salida estándar. El comando en T se deriva del divisor en T de tubería. Simplemente desglosa la salida de un programa para que pueda mostrarse y guardarse en un archivo. Realiza ambos trabajos simultáneamente, copia la salida a los archivos o variables dados y muestra la salida.

Sintaxis:

$ tee [options] [file]

Opciones:

  • -a: agregar (en lugar de sobrescribir los archivos, agregarlos a los existentes)

  • -i: ignorar interrupciones (ignorar las señales que interrumpen)

Archivos: Hay varios archivos. Los datos de salida se escriben en cada uno de ellos.

El descriptor de archivo predeterminado para el proceso de escribir mensajes de error es stderr, a menudo conocido como error estándar. Los errores estándar se pueden reenviar a la línea de comando en Bash. Este artículo trata sobre cómo redirigir la salida de stderr usando el comando tee en diferentes escenarios.

Redirigir stderr usando el comando tee

Los errores estándar se reenvían a la línea de comandos en Bash. Redirigir stderr podría permitirle capturar mensajes de error en un archivo de registro distinto o eliminar los mensajes de error por completo. Explicaremos el procedimiento para redirigir stderr usando el comando tee con los siguientes ejemplos.

Paso 1: crea un archivo Bash

Primero, cree un archivo Bash "linux.sh" usando el siguiente comando:

$ nano linux.sh

Paso 2: escribir el código

Ahora, escriba el siguiente código en el archivo, o puede escribir algo más según sus requisitos:

$ #!/bin/bash

echo hello

1>&2 echo world

Paso 3: compruebe si el archivo Bash funciona

Ahora, verifique si el archivo Bash funciona correctamente o si el código escrito en él es correcto ejecutando el siguiente comando en la terminal:

$ ./linux.sh

El resultado dado genera el resultado correcto, lo que prueba que el código funciona correctamente.

Ejecute otro comando mencionado a continuación para verificar el código de trabajo:

$ ./linux.sh >/dev/null

Ahora, ejecute el siguiente comando para verificar el funcionamiento del código:

$ ./linux.sh 2>/dev/null

Obtuvimos el resultado esperado; significa que el código es correcto.

Paso 4: Redirigir el stderr al comando tee

El >(…) (sustitución de proceso) establece un FIFO y lo pone a disposición del tee para que lo escuche. Luego, emplea > (redireccionamiento de archivos) para enviar el STDOUT del comando al FIFO que está monitoreando su primer tee.

El siguiente comando redirige stderr al tee. Redirige la salida a “/tmp/log”:

$ ./linux.sh 2> >(tee /tmp/log)

Ahora, genere el archivo al que redirigimos la salida.

$ cat /tmp/log

De forma predeterminada, la camiseta se imprime en STDOUT. Imprime esto en STDERR.

$ (./linux.sh 2> >(tee /tmp/log >&2)) >/dev/null

Conclusión

El comando tee lee los datos de un archivo o archivos de entrada y escribe la salida recibida en muchos archivos. La redirección de errores a stderr se puede hacer con la ayuda del comando tee. Hay muchas formas de redirigir la salida. Pero en este artículo, describimos un procedimiento, con la ayuda de un ejemplo, para redirigir stderr al tee usando un archivo Bash y mostramos el resultado en Ubuntu (sistema operativo Linux). Encontrará este artículo útil para redirigir stderr usando el comando tee.

Artículos relacionados: