¿Qué hace y hace en medio de "exec &> / dev / null"?

Respuestas:

22

Es &>, no solo &.

En bash, &>redirige tanto la secuencia de salida estándar como la secuencia de error estándar en alguna parte.

Por lo tanto, utility &>/dev/nulles lo mismo que utility >/dev/null 2>&1.

El comando exec &>/dev/nullredirige ambas secuencias de salida del shell actual /dev/null(es decir, descarta toda la salida de la secuencia de comandos a partir de ese punto, error u otro).

La parte relevante del bashmanual:

Redirecting Standard Output and Standard Error                              
   This construct allows both the standard output (file descriptor 1) and  
   the standard error output (file descriptor 2) to be redirected to the   
   file whose name is the expansion of word.                               

   There are two formats for redirecting standard output and standard      
   error:                                                                  

          &>word                                                           
   and                                                                     
          >&word                                                           

   Of the two forms, the first is preferred.  This is semantically         
   equivalent to                                                           

          >word 2>&1                                                       

   When using the second form, word may not expand to a number or -.  If   
   it does, other redirection operators apply (see Duplicating File        
   Descriptors below) for compatibility reasons.                           
Kusalananda
fuente
El equivalente completo que no sea Bash del ejemplo original seríaexec 2>&1 > /dev/null
trr
66
@trr No, eso redirigiría primero el error estándar a donde fuera la salida estándar y luego redirigiría la salida estándar a /dev/null(pero no el error estándar). Lo que es equivalente a es exec >/dev/null 2>&1. El orden de las redirecciones es importante.
Kusalananda
Tienes razón, estaba confundido
trr
1
@trr No te preocupes.
Kusalananda