Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Archivos por Etiqueta: stderr

Redirecciones en Linux

En Linux se utilizan muchísimo las redirecciones.

Siguiendo la filosofía de Unix “todo es un archivo”, cualquier programa puede generar una salida, que puede ser redireccionada a un archivo (Standard output, o stdout) en vez de sacarlo por pantalla.

Los mensajes de estado se envían a través de la Standard error (stderr).

Por defecto, ambos están enlazados a la pantalla y no a un archivo.

Para hacer una redirección de la salida de un comando es muy sencillo:

ls /etc > salida-etc

El operador ‘>’ crea un archivo nuevo con la salida del comando indicado, en el caso de que ya exista, se sobrescribe.

Si queremos unir varias salidas, tenemos que utilizar el operador ‘>>’ que provocará que se vaya añadiendo al final del archivo, y si no existe, lo creará.

Con las redirecciones, existe un pequeño truco para truncar archivos existentes o crear archivos vacios:

>salida.txt

Con esa orden estamos redireccionando nada a el archivo salida.txt.

Si intentamos redireccionar algo que no existe, nos mostrará el error en pantalla y no en el archivo. Esto es debido a que los errores, habría que redireccionarlos por la Standard error.

Para redireccionar errores, no hay ningún operador específico, así que deberemos utilizar el descriptor.

  • 0 – stdin
  • 1- stdout
  • 2 –stderr

Para redireccionar errores utilizaremos el descriptor 2, por ejemplo:

tar –xzvf archivo.tar.gz 2>> extrac.log

Si queremos redireccionar la stdout y stderr al mismo archivo, deberemos hacerlo de la siguiente manera

……… 2>&1 > salida.txt

En las últimas versiones de bash se incluyó el siguiente método:

……. &> salida.txt

En otras ocasiones, no nos interesa conservar ninguna salida, ni por pantalla ni por fichero, entonces deberemos redireccionarlo a ‘/dev/null’

……………… 2>&1> /dev/null

Anuncios