Redirigir stdout y stderr a archivo

Redirect Stdout Stderr File



Cuando redirige la salida de cualquier comando a un archivo, notará que los mensajes de error se imprimen en la ventana del terminal. Cualquier comando ejecutado en cualquier shell de Linux, como bash, utiliza tres flujos de E / S regulares. Se utiliza un descriptor de archivo numérico para representar cada flujo.

  • El flujo de entrada estándar (stdin): 0
  • El flujo de salida estándar (stdout): 1
  • El flujo de error estándar (stderr): 2

En esta publicación, captaremos la información que viene al redirigir stdout y stderr al archivo.







Salida estándar (salida estándar):

Cada sistema operativo basado en Linux tiene la convicción de un lugar predeterminado para el comando ejecutado. Todo el mundo se refiere a esta noción como salida estándar o salida estándar para que suene más fácil. Su shell Bash o Zsh busca constantemente la ubicación de salida predeterminada. Cuando el shell detecta una nueva salida, la muestra en la pantalla del terminal para que la vea. De lo contrario, enviará la salida a su ubicación predeterminada.



Error estándar (stderr):

El error estándar o stderr es similar a la entrada y salida estándar, pero se utiliza para almacenar mensajes de error. El error estándar se puede redirigir a la línea de comando o un archivo usando una terminal. Si desea grabar o almacenar mensajes en un archivo de registro separado u ocultar los mensajes de error, redirigir stderr lo ayudará. Ahora vayamos al lado práctico de stdout y stderr redirección.



Redirigiendo stdout y stderr a un archivo:

La redirección es un método para capturar la salida de un programa y enviarla como entrada a otro comando o archivo. Los flujos de E / S se pueden redirigir poniendo en uso el operador n>, donde n es el número de descriptor de archivo. Para redirigir stdout, usamos 1> y para stderr, 2> se agrega como operador.





Hemos creado un archivo llamado sample.txt para almacenar la salida redirigida en nuestro directorio actual.



El (comando> archivo) se considera como el operador de redirección clásico que solo redirige la salida estándar con el error estándar que se muestra en la terminal. También demostraremos diferentes opciones para redirigir stderr.

Redirigir stderr y stdout para separar archivos:

A continuación se muestra la sintaxis del comando para redirigir stdout y stderr a archivos separados.

mando >fuera2>error

El siguiente comando redirigirá la salida al archivo de salida y los mensajes de error al archivo de error.

$gatosample.txt>fuera2>error

Redirigiendo stderr a stdout:

Es una práctica común redirigir el stderr con la salida estándar de un programa para almacenar todo en un solo archivo. Aquí está la sintaxis del comando para redirigir stderr a stdout:

mando >fuera2>&1$ls >samplefile.txt2>&1

$gatosamplefile.txt

> out redirecciona redirigir stdout a samplefile.txt, y 2> & 1 redirigirá stderr a la ubicación actual de stdout.

Si stderr se redirige primero a stdout, use el siguiente comando para redirigir stdout a un archivo.

mando 2>&1 > expediente$ls -al 2>&1 >samplefile.txt

$gatosamplefile.txt

&> también se usa para la misma funcionalidad que realiza 2> & 1.

mando &> expediente$ls &>samplefile.txt

$gatosamplefile.txt

Redirigiendo stdout y stderr a un solo archivo:

Todos los shells no admiten esta redirección de formularios, pero bash y Zsh la admiten. Stdout y stderr se pueden redirigir utilizando la siguiente sintaxis.

mando &>fuera$gatosample.txt&>fuera

En la próxima sección del artículo, veremos el ejemplo separado para la redirección stdout y stderr.

Redirigir stdout a un archivo:

La salida estándar está representada por el 1 en la lista de números de descriptores de archivos. Para el comando de redireccionamiento sin ningún número de descriptor de archivo, el terminal establece su valor en 1. La sintaxis para redirigir la salida estándar a un archivo se proporciona de la siguiente manera:

mando > expediente

Estamos usando sample.file para almacenar la salida estándar del comando ls -al

$ls -al >sample.txt

$gatosample.txt

mando 1> expediente$ls 1>sample.txt

$gatosample.txt

Redirigiendo stderr a un archivo:

Utilice el operador 2> para redirigir el stderr a un archivo.

mando 2> expediente $ls -al 2>sample.txt

Podemos combinar la ejecución de stderr y stdout en un solo comando de redirección.

mando 2>error.txt1>output.txt

En el siguiente ejemplo, los mensajes de error se almacenarán en error.txt, donde output.txt tendrá su salida estándar del comando ls.

$ls 2>error.txt1>output.txt

$gatooutput.txt

Conclusión:

Tener el concepto de redirección y descriptores de archivos para flujos de E / S es muy valioso mientras se trabaja en una terminal Linux. En esta publicación, hemos hablado sobre los flujos de E / S regulares, incluidos stdout y stderr. La primera sección de esta publicación le brinda información detallada sobre la redirección, los flujos de E / S y el descriptor numérico del archivo. A continuación, ha visto el ejemplo práctico de varias formas de redirección stdout y stderr.