GNU/Linux >> Tutoriales Linux >  >> Linux

Shell:redirigir stdout a /dev/null y stderr a stdout

¿Qué tal esto:

./script 3>&1 1>/dev/null 2>&3 | ./other-script

La idea es "hacer una copia de seguridad" del descriptor de salida estándar, cerrar la salida estándar original y luego redirigir strerr a la salida estándar guardada.

Es muy similar a la solución provista por geirha, pero es más explícita (la codificación bash puede oscurecerse fácilmente).


quieres

./script 2>&1 1>/dev/null | ./other-script

El orden aquí es importante. Supongamos que stdin (fd 0), stdout (fd 1) y stderr (fd 2) están todos conectados inicialmente a un tty, entonces

0: /dev/tty, 1: /dev/tty, 2: /dev/tty

Lo primero que se instala es la tubería. El stdin de other-script se conecta a la canalización, y el stdout de la secuencia de comandos se conecta a la canalización, por lo que los descriptores de archivo de la secuencia de comandos hasta ahora se ven así:

0: /dev/tty, 1: pipe, 2: /dev/tty

A continuación, se producen las redirecciones, de izquierda a derecha. 2>&1 hace que fd 2 vaya dondequiera que vaya actualmente fd 1, que es la tubería.

0: /dev/tty, 1: pipe, 2: pipe

Por último, 1>/dev/null redirige fd1 a /dev/null

0: /dev/tty, 1: /dev/null, 2: pipe

Resultado final, la salida estándar del script se silencia y su stderr se envía a través de la canalización, que termina en la entrada estándar de otro script.

Consulte también http://bash-hackers.org/wiki/doku.php/howto/redirection_tutorial

También tenga en cuenta que 1>/dev/null es sinónimo de, pero más explícito que >/dev/null


Linux
  1. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  2. ¿Cuándo usar /dev/random Vs /dev/urandom?

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

  4. Cómo mapear dispositivos /dev/sdX y /dev/mapper/mpathY desde el dispositivo /dev/dm-Z

  5. Redirigir stderr a /dev/null

Cómo redirigir la salida a /dev/null en Linux

¿Diferencia entre 2>&-, 2>/dev/null, |&, &>/dev/null y>/dev/null 2>&1?

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

¿Qué son los archivos /dev/zero y /dev/null en Linux?

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

kernel:deshabilitar /dev/kmem y /dev/mem