shell中> /dev/null 2 > &1

linux在執行shell命令之前,就會確定好所有的輸入輸出位置,並且從左到右依次執行重定向的命令。

command > /dev/null 2>&1

1. >/dev/null

這條命令的作用是將標準輸出1重定向到/dev/null中。/dev/null代表linux的空設備文件,所有往這個文件裏面寫入的內容都會丟失,俗稱“黑洞”。那麼執行了 > /dev/null之後,標準輸出就會不再存在,沒有任何地方能夠找到輸出的內容。

2. 2>&1

這條命令用到了重定向綁定,採用&可以將兩個輸出綁定在一起。這條命令的作用是錯誤輸出將和標準輸出同用一個文件描述符,說人話就是錯誤輸出將會和標準輸出輸出到同一個地方。

command > out.txt 2> out.txt

採用這種寫法,標準輸出和錯誤輸出會搶佔往out文件的管道,所以可能會導致輸出內容的時候出現缺失、覆蓋等情況,最後的情況是無法預估的。

而且,由於out文件被打開了兩次,兩個文件描述符會搶佔性的往文件中輸出內容,所以整體IO效率不如 > /dev/null 2>&1來得高。

 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章