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