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:
Post a Comment