Mortuux

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

Archivos mensuales: mayo 2010

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