Cómo redirigir stderr a stdout en un archivo con Bash en Linux

1 mar 2021 2 min di lettura
Cómo redirigir stderr a stdout en un archivo con Bash en Linux
Indice dei contenuti

Introducción

Al redirigir la salida de un comando a un archivo o redirigirlo a otro comando, puede notar que se imprimen mensajes de error en la pantalla.

En Bash y otros shells de Linux, cuando se ejecuta un programa, utiliza tres flujos de E /S estándar. Cada flujo está representado por un descriptor de archivo numérico:

  • 0 - stdin, el flujo de entrada estándar.
  • 1 - stdout, el flujo de salida estándar.
  • 2 - stderr, el flujo de errores estándar.

Un descriptor de archivo es solo un número que representa un archivo abierto.

El flujo de entrada proporciona información al programa, generalmente escribiendo el teclado.

La salida del programa va al flujo de entrada estándar y los mensajes de error van al flujo de error estándar. De forma predeterminada, tanto los flujos de entrada como los de error se imprimen en la pantalla.

Redirección de salida

La redirección es una forma de tomar la salida de un programa y enviarla como entrada a otro programa o archivo.

Las secuencias se pueden redirigir utilizando el n>, donde n es el número de descriptor de archivo.

Cuando n, el flujo de salida estándar 1 Por ejemplo, los dos comandos siguientes son iguales; ambos redirigirán el stdout ) al archivo.

command > file
command 1> file

Para redirigir el error estándar ( stderr ) use el operador 2>

command 2> file

Puede escribir stderr y stdout en dos archivos separados:

command 2> error.txt 1> output.txt

Para suprimir la visualización de mensajes de error en la pantalla, redirija stderr a /dev/null:

command 2> /dev/null

Redirigir stderr a stdout

Al guardar la salida del programa en un archivo, es bastante común redirigir stderr a stdout para que pueda tener todo en un solo archivo.

Para redirigir stderr a stdout y enviar mensajes de error al mismo archivo que la salida estándar, utilice lo siguiente:

command > file 2>&1

> file redirige stdout a file y 2>&1 redirige stderr a la ubicación actual de stdout.

El orden de redireccionamiento es importante. Por ejemplo, el siguiente ejemplo solo redirige stdout a file. Esto se debe a que stderr se redirige a stdout antes de redirigir stdout al file.

command 2>&1 > file

Otra forma de redirigir stderr a stdout es usar la construcción &> En Bash &> tiene el mismo significado que 2>&1:

command &> file

Conclusión

Comprender el concepto de redireccionamientos y descriptores de archivos es muy importante cuando se trabaja en la línea de comandos.

Para redirigir stderr y stdout, use las 2>&1 o &>.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.