預設情況下,總是有三個檔案處於開啟狀態,標準輸入(鍵盤輸入)、標準輸出(輸出到螢幕)、標準錯誤(也是輸出到螢幕),它們分別對應的檔案描述符是0,1,2 。那麼我們來看看下面的幾種重定向方法的區別:
>/dev/null 2>&1
2>&1 >/dev/null
// 咋一看,這個跟上面那個有啥區別呢,不也是標準錯誤重定向到標準輸出,而標準輸出重定向到/dev/null麼? 最後不應該都重定向/dev/null麼? 我是這麼理解的!一條指令同一時刻要麼產生標準錯誤,要麼產生標準輸出。 當產出標準錯誤的時候,因這個標準錯誤重定向到了標準輸出,而標準輸出是輸出到螢幕。這個時候標準輸出還沒有被重定向到/dev/null,於是在螢幕上列印了。當產生標準輸出時,那麼它就不是標準錯誤,2>&1無效,於是標準輸出重定向dev/null,不列印到螢幕。所以最終結果將是:標準錯誤列印到螢幕,而標準輸出不列印到螢幕。
Shell中的重定向
幾乎所有的linux命令都是以鍵盤作為輸入,以顯示屏作為輸出。但在linux中,通過重定向你也可以以檔案作為輸入輸出。有三個重定向符號 作用 將命令執行結果輸出到檔案,如果檔案不存在則新建乙個,如果檔案存在則重寫檔案。舉例 cal mycal cat mycal 作用 將命令執行結果輸出到檔案,如果...
shell中輸入重定向,輸出重定向,管道
什麼是檔案描述符 1 程序中開啟乙個檔案就會有乙個檔案描述符 2 檔案描述符是乙個非負整數 3 系統為每乙個程序維護乙個檔案描述符表 程序級檔案描述符 4 同乙個程序裡面不同檔案描述符可以對應同乙個檔案 乙個檔案被開啟多次 5 不同程序的檔案描述符可以相同 不影響 可以指向同乙個檔案,也可以指向不同...
shell中的重定向 1 2 2 1 2
當初在shell中,看到 1 和 2 始終不明白什麼意思.經過在網上的搜尋得以解惑.其實這是兩種輸出.在 shell 程式中,最常使用的 fd file descriptor 大概有三個,分別是 0 standard input stdin 1 standard output stdout 2 st...