Redirigir stdout y stderr a Archivo
Cuando redirige cualquier salida de 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 secuencia.
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, comprenderemos la información que se incluye al redirigir stdout y stderr a file.
Salida estándar (salida estándar):
Cada sistema operativo basado en Linux tiene una convicción de un lugar predeterminado para el comando ejecutado. Todos se refieren a esta noción como "stdout" 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 un nuevo resultado, lo muestra en la pantalla del terminal para que lo 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 a un archivo usando una terminal. Si desea registrar o almacenar mensajes en un archivo de registro separado u ocultar los mensajes de error, redirigir stderr lo ayudará. Ahora vayamos hacia el lado práctico de la redirección de stdout y stderr.
Redirigir 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 del descriptor del 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 a archivos separados:
A continuación se muestra la sintaxis del comando para redirigir stdout y stderr a archivos separados.
El siguiente comando redirigirá la salida al archivo "out" y los mensajes de error al archivo "error".
Redirigir 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. Esta es la sintaxis del comando para redirigir stderr a stdout:
$ cat samplefile.txt
> out redirecciona redirige stdout a samplefile.txt, y 2>&1 redireccionará stderr a la ubicación actual de stdout.
Si stderr se redirige primero a stdout, use el comando que se indica a continuación para redirigir stdout a un archivo.
$ cat samplefile.txt
“&> ” también se usa para la misma funcionalidad que realiza “2>&1 ”.
$ cat samplefile.txt
Redirigir stdout y stderr a un solo archivo:
Todos los shells no admiten esta redirección de formulario, pero bash y Zsh lo admiten. Stdout y stderr se pueden redirigir utilizando la siguiente sintaxis.
En la próxima sección del artículo, revisaremos el ejemplo separado para la redirección de 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 archivo. Para el comando de redirección 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 es la siguiente:
Estamos utilizando el "archivo de muestra" para almacenar la salida estándar del comando "ls -al"
$ cat sample.txt
$ cat sample.txt
Redirigir stderr a un archivo:
Utilice el operador "2>" para redirigir el stderr a un archivo.
Podemos combinar la ejecución de stderr y stdout en un solo comando de redirección.
En el ejemplo que se muestra a continuación, los mensajes de error se almacenarán en "error.txt", donde "output.txt" tendrá su salida estándar de "comando ls". ”
$ cat output.txt
Conclusión:
Tener el concepto de redirección y descriptores de archivos para flujos de E/S es muy valioso cuando 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 de archivo numérico. A continuación, ha visto el ejemplo práctico de varias formas de redirección stdout y stderr.