Що робити та робити посеред "exec &> / dev / null"?


Відповіді:


22

Це &>, не просто &.

У bash, &>десь переспрямовує як стандартний вихідний потік, так і стандартний потік помилок.

Отже, utility &>/dev/nullте саме, що utility >/dev/null 2>&1.

Команда exec &>/dev/nullпереспрямовує обидва вихідні потоки поточної оболонки на /dev/null(тобто вона відкидає весь вихід скрипту з цього моменту, помилку чи інше).

Відповідна частина bashпосібника:

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.                           

Повний не-Баш еквівалент оригінального прикладу був биexec 2>&1 > /dev/null
trr

6
@trr Ні, це спочатку перенаправить стандартну помилку туди, куди йшов стандартний вихід, а потім перенаправить стандартний вихід на /dev/null(але не стандартну помилку). Що це рівнозначно exec >/dev/null 2>&1. Порядок переадресацій важливий.
Kusalananda

Ви маєте рацію, я був розгублений
trr

1
@trr Не хвилюйтесь.
Kusalananda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.