Shell 丟棄錯誤和輸出信息


shell中使用>/dev/null 2>&1 丟棄信息

 

在一些Shell腳本中,特別是Crontab的腳本中,經常會看到 >/dev/null 2>&1這樣的寫法。

其實這個很好理解。我們分兩部分解釋。

1.  >/dev/null

大家知 “>”(右尖括號) 在unix/linux shell 中表示 輸入到 的意思,就是把”>”左邊的內容輸入到”>”右邊。

比如:echo text>1.txt 就把“text”這個文本輸入到1.txt這個文件中。

那么 “/dev/null” 又是個什么東東呢?它代表一個空設備,即不存在的設備。也就是說,拋棄”>”左邊的內容,不進行輸出。

2.    2>&1

這個其實是三個部分組成的:2, >&, 1 。我們先來搞清楚這里的2和1是什么意思。在/usr/include/unistd.h中,你可以找到如下代碼。

#define STDIN_FILENO    0   

#define STDOUT_FILENO   1   

#define STDERR_FILENO   2  

這是三種不同的流。

2代表stderr.

1代表sdtout.

而 >& 則表示把符號左邊的內容以符號右邊的形式輸出。

2>&1 就是把,把stderr做為stdout輸出。

現在我們結合這兩個部分來看。2&>1定義了把stderr做為標准的stdout流輸出,然后stdout的內容全部寫入/dev/null,也就是說被舍棄掉。

結論就是,無論執行的是什么命令,哪怕運行中出現了error都不會有回顯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM