Co robi i robi w środku „exec &> / dev / null”?

Odpowiedzi:

22

To &>nie tylko &.

W bash, &>przekierowuje zarówno standardowy strumień wyjściowy i standardowy strumień błędów gdzieś.

Dlatego utility &>/dev/nulljest taki sam jak utility >/dev/null 2>&1.

Polecenie exec &>/dev/nullprzekierowuje oba strumienie wyjściowe bieżącej powłoki do /dev/null(tzn. Odrzuca wszystkie dane wyjściowe skryptu od tego momentu, błąd lub w inny sposób).

Odpowiednia część bashinstrukcji:

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
źródło
Całkowity ekwiwalent innego przykładu niż Bash oryginalnego przykładu toexec 2>&1 > /dev/null
trr
6
@trr Nie, to najpierw przekieruje standardowy błąd na miejsce, w którym poszło standardowe wyjście, a następnie przekieruje standardowe wyjście na /dev/null(ale nie standardowy błąd). To, co jest równoważne, to exec >/dev/null 2>&1. Kolejność przekierowań jest ważna.
Kusalananda
Masz rację, byłem zdezorientowany
TRR
1
@trr Bez obaw.
Kusalananda