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

在一些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都不會有回顯。

相關文章
相關標籤/搜索