/dev/null 文件
如果希望執行某個命令,但又不希望在屏幕上顯示輸出結果,那么可以將輸出重定向到 /dev/null:
$ command > /dev/null
/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件讀取內容,那么什么也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。
如果希望屏蔽 stdout 和 stderr,可以這樣寫:
$ command > /dev/null 2>&1
注意:0 是標準輸入(STDIN),1 是標準輸出(STDOUT),2 是標準錯誤輸出(STDERR)。
############################
一般在shell包括dos下都可能會這樣使用。
null是一個名叫null小桶的東西,將輸出重定向到它的好處是不會因為輸出的內容過多而導致文件大小不斷的增加。其實,你就認為null就是什么都沒有,也就是,將命令的輸出扔棄掉了。
1表示標準輸出,2表示標準錯誤輸出,2>&1表示將標準錯誤輸出重定向到標準輸出,這樣,程序或者命令的正常輸出和錯誤輸出就可以在標準輸出輸出。
一般來講標準輸出和標準錯誤輸出都是屏幕,那為什么還要這么用呢?原因是標準輸出的重定向。你的例子是重定向到了null,如果重定向到文件,例如:
dir?>?out.txt?
表示標準輸出重定向到out.txt文件。此時如果dir命令出錯,那么錯誤信息不會輸出到out.txt文件,錯誤信息仍然會輸出到屏幕——標準錯誤輸出。為了使正確的信息和錯誤的信息都重定向到out.txt文件,那么需要將錯誤信息的標準錯誤輸出重定向到標準輸出。即命令如下:
dir?>?out.txt?2>&1
重定向到null是一個道理。
dir?>?null?2>&1
不希望某一命令或程序產生任何輸出的時候,就可以這樣做。