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

分兩部份說明:

1.  >/dev/null

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

Example:echo aa>bb.txt 就把"aa"這個文本輸入到bb.txt這個檔中

151225_1  

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

2.    2>&1

這個其實是三個部分組成的:[ 2] ,[ >&],[ 1] 。先來了解21是什麼意思。在/usr/include/unistd.h中,你可以找到如下代碼

#define STDIN_FILENO    0   

#define STDOUT_FILENO   1  

#define STDERR_FILENO   2  

系統將標準輸入輸出分成三個

0=標準輸入 (stdin) 

1=標準輸出 (stdout) 

2=以及標準錯誤輸出 (stderr)

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

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

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

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

參考文件:

http://www.cnblogs.com/Cherie/p/3309177.html

創作者介紹
創作者 無止盡天空 的頭像
無止盡的天空

無止盡天空

無止盡的天空 發表在 痞客邦 留言(0) 人氣( 18 )