& ทำอะไรในช่วงกลางของ“ exec &> / dev / null”?


11

คำสั่งของฉันคือ:

exec &>/dev/null

คำสั่งนี้และคำสั่งเต็มรูปแบบทำอะไรที่นี่ ฉันรู้ว่ามันถูกเปลี่ยนเส้นทางไปยังที่เก็บข้อมูล


คำตอบ:


22

มันไม่ได้เป็นเพียง&>&

ในbash, &>เปลี่ยนเส้นทางทั้งกระแสออกมาตรฐานและบางกระแสข้อผิดพลาดมาตรฐาน

จึงเป็นเช่นเดียวกับutility &>/dev/nullutility >/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.