¿Qué logra la salida a /dev/null en los scripts bash?

¿Qué logra la salida a /dev/null en los scripts bash?

A menudo me encuentro con pequeños scripts bash que utilizan este tipo de sintaxis en sentencias if:

some command > /dev/null 2>&1

¿Cuál es el propósito de generar algo /dev/nullasí y qué significa 2>&1?

Siempre parece funcionar, pero me gustaría saber qué está haciendo.

Respuesta1

>/dev/nullRedirige la salida estándar del comando al dispositivo nulo, que es un dispositivo especial que descarta la información escrita en él.

2>&1redirige el flujo de error estándar al flujo de salida estándar (stderr = 2, stdout = 1). Tenga en cuenta que esto toma el flujo de error estándar y lo dirige a la misma ubicación que la salida estándar en ese momento. Este es el motivo del pedido >/some/where 2>&1porque primero es necesario señalar stdout a algún lugar yentoncesapunte stderr a la misma ubicación si uno quiere combinar ambas secuencias al final.

En la práctica, evita que se muestre cualquier resultado del comando (tanto stdout como stderr). Se usa cuando no te importa la salida del comando.

Respuesta2

STDIN está representado por 0, STDOUT por 1 y STDERR por 2.

/desarrollador/nuloes el bit-bucket: el lugar donde tiras todo lo que no necesitas.


Entonces, el STDOUT se redirige al depósito de bits (basura) y el STDERR se redirige a donde se encuentra el STDOUT: el depósito de bits.


También puedes hacer esto:

>/dev/null 2>/dev/null

información relacionada