Bienvenido! - Willkommen! - Welcome!

Bitácora Técnica de Tux&Cía., Santa Cruz de la Sierra, BO
Bitácora Central: Tux&Cía.
Bitácora de Información Avanzada: Tux&Cía.-Información
May the source be with you!

Monday, October 18, 2010

> /dev/null 2 > &1

Fuente por Asfasfos
Cuando empecé a tocar sistemas Unix y veía en la crontab líneas de scripts que se ejecutaban y acababan en "> /dev/null 2>&1" me quedaba un poco anonadado ya que no entendía bien lo que hacía esta sentencia.
Había aprendido que el comando "mayor que" (>) servía para desviar la salida de un programa a otro sitio y que "/dev/null" lo que hacía era desviar esa salida hacia un fichero que no guarda ningún tipo de información (como si fuera un agujero negro) y por lo tanto conseguimos que no nos saque nada por pantalla. Esto lo sabía de las veces que tenía que borrar el contenido de un fichero y usaba el siguiente comando:
cat /dev/null > fichero.txt
STDIN, STDOUT y STDERR
Estos tres valores son las entradas y salidas standard para un programa. La entradaSTDIN (Standard Input) normalmente viene por teclado o también puede venir desde otro programa. La salida STDOUT (Standard Output) es la salida por defecto de los programas y la STDERR es igual que la STDOUT pero para los errores de los programas.

A veces, estos valores los podemos encontrar en forma de número, siendo STDIN (0),STDOUT (1) y STDERR (2). Una vez que sabemos esto podemos deducir que el comando "> /dev/null 2>&1" lo que intenta es sacar el STDOUT a /dev/null y después de esto redirige la STDERR a la STDOUT.

En resumen, lo que hace "> /dev/null 2>&1" es mandar todo lo que salga a un agujero negro en donde no vamos a ver nada por pantalla y con lo cual tendremos un programa que no saca ninguna información sobre su ejecución.

Para verlo todavía mas claro podríamos decir que "> /dev/null 2> &1" es lo mismo que "> /dev/null 2> /dev/null

No comments: