在一些Shell腳本中,特別是Crontab的腳本中,經常會看到 >/dev/null 2>&1這樣的寫法
分兩部份說明:
1. >/dev/null
大家知">"(右尖括弧) 在unix/linux shell 中表示 輸入到 的意思,就是把">"左邊的內容輸入到">"右邊
Example:echo aa>bb.txt 就把"aa"這個文本輸入到bb.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
系統將標準輸入輸出分成三個
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
請先 登入 以發表留言。