Apa yang dilakukan & dilakukan di tengah "exec &> / dev / null"?

Jawaban:

22

Bukan &>hanya &.

Dalam bash, &>mengalihkan aliran output standar dan aliran kesalahan standar di suatu tempat.

Oleh karena itu, utility &>/dev/nullsama dengan utility >/dev/null 2>&1.

Perintah ini exec &>/dev/nullmengarahkan ulang kedua aliran keluaran dari shell saat ini ke /dev/null(yaitu membuang semua output dari skrip sejak saat itu, kesalahan atau sebaliknya).

Bagian yang relevan dari bashmanual ini:

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
sumber
Setara non-Bash lengkap dari contoh aslinya adalahexec 2>&1 > /dev/null
trr
6
@tr Tidak, itu akan mengarahkan ulang kesalahan standar ke mana pun output standar pergi, dan kemudian mengarahkan output standar ke /dev/null(tetapi bukan kesalahan standar). Ini setara dengan apa exec >/dev/null 2>&1. Urutan pengalihan penting.
Kusalananda
Anda benar, saya bingung
trr
1
@tr. Jangan khawatir.
Kusalananda