Linux中重定向輸出>/dev/null 2>&1

原文鏈接:https://www.cnblogs.com/liaojie970/p/7856749.html

Unix/Linux默認情況下,總是有三個文件處於打開狀態,

標準輸入(鍵盤輸入)、標準輸出(輸出到屏幕)、標準錯誤(也是輸出到屏幕),它們分別對應的文件描述符是0,1,2 ;

/dev/null代表linux的空設備文件,所有往這個文件裏面寫入的內容都會丟失,俗稱“黑洞”

下面的來看看這幾種重定向方法的區別:

第一種:>/dev/null 2>&1

應該等同於這樣: 1>/dev/null 2>/dev/null ,默認情況下就是1,標準輸出,所以一般都省略。

而&符號,後面接的是必須的文件描述符[即上面的0,1,2]。

不能寫成2>1,這樣就成了標準錯誤重定向到文件名爲1的文件中了,而不是重定向標準錯誤到標準輸出中。

所以這裏就是:標準輸出重定向到了/dev/null,而標準錯誤又重定向到了標準輸出

結論:標準輸出和標準錯誤都重定向到了/dev/null

第二種:2>&1 >/dev/null

命令行的重定向 是在執行命令之前就準備好了的. 解釋順序從左至右依次進行, 2>&1 ,而1是屏幕, 所以標準錯誤重定向到屏幕,

再而 1>/dev/null , 即標準輸出重定向到 /dev/null,

結論:標準錯誤打印到屏幕,而標準輸出不打印到屏幕

第三種:&>/dev/null

不管你是啥玩意兒文件描述符,通通重定向到/dev/null

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章