Những gì & làm ở giữa của exec exec &> / dev / null '?


Câu trả lời:


22

&>, không chỉ &.

Trong bash, &>chuyển hướng cả luồng đầu ra tiêu chuẩn và luồng lỗi tiêu chuẩn ở đâu đó.

Do đó, utility &>/dev/nullgiống như utility >/dev/null 2>&1.

Lệnh exec &>/dev/nullchuyển hướng cả hai luồng đầu ra của shell hiện tại /dev/null(nghĩa là nó loại bỏ tất cả đầu ra của tập lệnh từ thời điểm đó, lỗi hoặc cách khác).

Phần có liên quan của bashhướng dẫn:

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.                           

Tương đương hoàn toàn không phải Bash của ví dụ ban đầu sẽ làexec 2>&1 > /dev/null
trr

6
@trr Không, điều đó trước tiên sẽ chuyển hướng lỗi tiêu chuẩn đến bất cứ nơi nào đầu ra tiêu chuẩn đi, và sau đó chuyển hướng đầu ra tiêu chuẩn sang /dev/null(nhưng không phải lỗi tiêu chuẩn). Những gì nó tương đương với là exec >/dev/null 2>&1. Thứ tự của các chuyển hướng là quan trọng.
Kusalananda

Bạn nói đúng, tôi đã nhầm lẫn
trr

1
@trr Đừng lo lắng.
Kusalananda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.