在 bash 腳本中輸出到 /dev/null 能完成什麼?

在 bash 腳本中輸出到 /dev/null 能完成什麼?

我經常遇到在 if 語句中使用這種語法的小型 bash 腳本:

some command > /dev/null 2>&1

輸出 like that 的目的是什麼/dev/null,意味著什麼2>&1

它似乎總是有效,但我想知道它在做什麼。

答案1

>/dev/null將命令標準輸出重新導向到空設備,這是一種特殊設備,會丟棄寫入其中的資訊

2>&1將標準錯誤流重新導向到標準輸出流(stderr = 2,stdout = 1)。請注意,這採用標準錯誤流並將其指向與當時標準輸出相同的位置。這就是順序的原因,>/some/where 2>&1因為需要先將標準輸出指向某個地方,然後然後如果想最終合併兩個流,請將 stderr 指向同一位置。

實際上,它會阻止顯示命令的任何輸出(stdout 和 stderr)。當您不關心命令輸出時使用它。

答案2

STDIN 以 0 表示,STDOUT 以 1 表示,STDERR 以 2 表示。

/dev/空是位桶:您轉儲不需要的任何東西的地方。


因此,STDOUT 被重定向到位桶(垃圾),STDERR 被重定向到 STDOUT 所在的位置:位元桶。


您也可以這樣做:

>/dev/null 2>/dev/null

相關內容