一、檔案描述符
檔案描述符是乙個非負的整數,linux 中每個執行中的程式(程序),都有一些與之關聯的檔案描述符,你可以使用檔案描述符來訪問開啟的檔案或裝置。在標準 i/o 庫中,與檔案描述符對應的是流。當乙個程式開始執行時,它一般會有 3 個已經開啟的檔案描述符,分別對應三個檔案流:
檔案描述符流0
標準輸入流(stdin)
1標準輸出流(stdout)
2標準錯誤流(stderr)
顯然,還有其他的檔案描述符,這裡暫時不做討論。一般情況下,乙個程式開啟時,會去讀取標準輸入,將結果寫入標準輸出,將錯誤結果寫入標準錯誤輸出(預設的標準輸入、標準輸出和標準錯誤輸出都是終端):
如圖上圖所示,cat 命令後面沒有接引數,則預設讀取標準輸入,將結果輸出到標準輸出。很多情況下,我們不希望從標準輸入獲取程式輸入,也不想將程式結果寫入標準輸出,將錯誤結果寫入到標準錯誤輸出,這時就可以使用重定向來完成相應的需求。
二、輸出重定向
輸出重定向使用 > 或 >> 操作符。其中 > 操作符表示覆蓋輸出;>> 操作符表示將輸出內容附加到檔案尾。
2.1 將標準輸出重定向到檔案
command > file使用 command > file 命令,可以將 command 的標準輸出修改為 file,若當前目錄下沒有 file 檔案,則會建立該檔案;若已經存在 file 檔案,則會覆蓋 file 檔案,file 檔案原本的資料將會丟失。command >> file
使用 command >> file 命令,可以將 command 的標準輸出修改為 file,若當目錄下沒有 file 檔案,則建立該檔案;若已經存在 file 檔案,則將程式結果附加到檔案尾。
同樣的,以 cat 命令為例:
cat >newfile結果如下:my name is tongye
how are you
^d # ctrl +d,結束輸入
cat >>newfile
i am fine
^d
2.2 將標準錯誤輸出重定向到檔案
command 2> file使用 2> 或 2>> 來對標準錯誤輸出進行重定向。command
2>> file
2.3 將標準輸出和標準錯誤輸出重定向到不同檔案
command > file1 2> file2該命令將標準輸出和標準錯誤輸出分別重定向到不同檔案。
2.4 將標準輸出和標準錯誤輸出重定向到同一檔案
command &> file這兩個命令都可以將標準輸出和標準錯誤輸出重定向到同乙個檔案。其中, &> 是 bash 提供的乙個特殊的重定向符號。command > file
2>&1 # 將先將標準輸出重定向到檔案 file,然後將標準錯誤重定向到標準輸出
在重定向到檔案描述符時,必須在檔案描述符數字之前加上 & 符號。
三、輸入重定向
使用 < 操作符進行輸入重定向:
command < file該命令可以將 command 的標準輸入改為從檔案 file 輸入。
Shell 輸入 輸出重定向
大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...
Shell 輸入 輸出重定向
大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...
Shell輸入輸出重定向
大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...