miércoles, 27 de mayo de 2015

Redirigiendo la salida estándar y el error estándar a un archivo

Hay casos en que querremos capturar toda la salida de un comando a un archivo. Para hacerlo, debemos redirigir tanto la salida estándar como el error estándar al mismo tiempo. Hay dos formas de hacerlo. Primero, la forma tradicional, que funciona con versiones antiguas del shell:

[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt 2>&1

Utilizando este método, conseguiremos dos redirecciones. Primero redirigimos la salida estándar al archivo ls-output.txt y después redirigimos el descriptor de archivo 2 (error estándar) al descriptor de archivo 1 (salida estándar) usando la notación 2>&1.

Fíjate que el orden de las redirecciones es fundamental. La redirección del error estándar siempre debe ocurrir después de redirigir la salida estándar o no funcionará. En el ejemplo anterior,

>ls-output.txt 2>&1

se redirige el error estándar al archivo ls-output.txt, pero si cambiamos el orden a

2>&1 >ls-output.txt

el error estándar es redirigido a la pantalla.

Versiones recientes de bash proporcionan un segundo, y más eficiente método para realizar esta redirección combinada:

[me@linuxbox ~]$ ls -l /bin/usr &> ls-output.txt

En este ejemplo, usamos la notación simple &> para redirigir tanto la salida estándar como el error estándar al archivo ls-output.txt. Podrías también añadir la salida estándar y el error estándar a un archivo existente así:

[me@linuxbox ~]$ ls -l /bin/usr &>> ls-output.txt

No hay comentarios:

Publicar un comentario