GNU/Linux >> Tutoriales Linux >  >> Linux

¿Evitar que un comando envíe Stdout y Stderr a cualquier terminal o archivo?

Esta pregunta ya tiene respuestas aquí :redirigir a /dev/null

(6 respuestas)
Cerrado hace 6 años.

Me gustaría evitar que mi programa envíe stdout y stderr a cualquier terminal, archivo o dispositivo. Para esto, tengo tres comandos cruzando mi mente, pero no puedo distinguir sus diferencias. ¿Podría explicarme el significado de cada uno de ellos, por favor?

# ./run > /dev/null
# ./run > /dev/null 1>&2
# ./run > /dev/null 2>&1

Respuesta aceptada:

# ./run > /dev/null

Esto redirige la salida estándar a /dev/null , pero no hace nada en absoluto con stderr. Dado que solicitó redirigir desde stdout y stderr, esto no hace lo que desea.

# ./run > /dev/null 1>&2

Esto redirige la salida estándar a /dev/null , y luego redirige stdout nuevamente (1> ) a cualquier lugar al que apunte stderr (&2 ) que es probablemente la terminal y es probablemente donde apuntó stdout antes de redirigirla. Entonces, el efecto neto aquí es (probablemente) ninguna redirección para stdout, y en cuanto a stderr, todavía no haces nada con él. Así que esto tampoco es lo que quieres.

# ./run > /dev/null 2>&1

Esto redirige la salida estándar a /dev/null , y luego redirige stderr (2> ) a donde apunte la salida estándar, que es /dev/null porque ahí es donde acabas de redirigirlo. Esto parece ser lo que quieres.

No puedo distinguir sus diferencias.

En realidad, debería poder distinguir las diferencias con bastante facilidad. Digamos ./run contiene esto:

#!/bin/sh
echo stdout
echo stderr >&2

Entonces los resultados deberían ser los siguientes:

# ./run > /dev/null
stderr
# ./run > /dev/null 1>&2
stdout
stderr
# ./run > /dev/null 2>&1

¡La diferencia es clara!


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. ¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

  3. pantalla No se puede abrir su terminal '/dev/pts/0' - verifique

  4. Redirigir stdout mientras se ejecuta un proceso:¿qué está enviando ese proceso a/dev/null?

  5. /dev/sdb:No existe tal archivo o directorio (pero /dev/sdb1, etc. existe)

/dev/null en Linux

Redirigir stderr a /dev/null

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

DD de /dev/zero a /dev/null... lo que realmente sucede

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

Crear un dispositivo de bloque virtual que escriba en /dev/null