在一些Shell腳本中,特別是Crontab的腳本中,常常會看到 >/dev/null 2>&1這樣的寫法。linux
其實這個很好理解。咱們分兩部分解釋。shell
1. >/dev/nullspa
你們知 「>」(右尖括號) 在unix/linux shell 中表示 輸入到 的意思,就是把」>」左邊的內容輸入到」>」右邊。unix
好比:echo text>1.txt 就把「text」這個文本輸入到1.txt這個文件中。class
那麼 「/dev/null」 又是個什麼東東呢?它表明一個空設備,即不存在的設備。也就是說,拋棄」>」左邊的內容,不進行輸出。error
2. 2>&1腳本
這個實際上是三個部分組成的:2, >&, 1 。咱們先來搞清楚這裏的2和1是什麼意思。在/usr/include/unistd.h中,你能夠找到以下代碼。tab
#define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 文件
這是三種不一樣的流。ab
2表明stderr.
1表明sdtout.
而 &> 則表示把符號左邊的內容以符號右邊的形式輸出。
2&>1 就是把,把stderr作爲stdout輸出。
如今咱們結合這兩個部分來看。2&>1定義了把stderr作爲標準的stdout流輸出,而後stdout的內容所有寫入/dev/null,也就是說被捨棄掉。
結論就是,不管執行的是什麼命令,哪怕運行中出現了error都不會有回顯。