Shell 基礎 輸入 輸出重定向

2022-03-22 17:18:01 字數 1837 閱讀 2149

一、檔案描述符

檔案描述符是乙個非負的整數,linux 中每個執行中的程式(程序),都有一些與之關聯的檔案描述符,你可以使用檔案描述符來訪問開啟的檔案或裝置。在標準 i/o 庫中,與檔案描述符對應的是流。當乙個程式開始執行時,它一般會有 3 個已經開啟的檔案描述符,分別對應三個檔案流:

檔案描述符流0

標準輸入流(stdin)

1標準輸出流(stdout)

2標準錯誤流(stderr)

顯然,還有其他的檔案描述符,這裡暫時不做討論。一般情況下,乙個程式開啟時,會去讀取標準輸入,將結果寫入標準輸出,將錯誤結果寫入標準錯誤輸出(預設的標準輸入、標準輸出和標準錯誤輸出都是終端):

如圖上圖所示,cat 命令後面沒有接引數,則預設讀取標準輸入,將結果輸出到標準輸出。很多情況下,我們不希望從標準輸入獲取程式輸入,也不想將程式結果寫入標準輸出,將錯誤結果寫入到標準錯誤輸出,這時就可以使用重定向來完成相應的需求。

二、輸出重定向

輸出重定向使用 > 或 >> 操作符。其中 > 操作符表示覆蓋輸出;>> 操作符表示將輸出內容附加到檔案尾。

2.1 將標準輸出重定向到檔案

command > file

command >> file

使用 command > file 命令,可以將 command 的標準輸出修改為 file,若當前目錄下沒有 file 檔案,則會建立該檔案;若已經存在 file 檔案,則會覆蓋 file 檔案,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

command

2>> file

使用 2> 或 2>> 來對標準錯誤輸出進行重定向。

2.3 將標準輸出和標準錯誤輸出重定向到不同檔案

command > file1 2> file2
該命令將標準輸出和標準錯誤輸出分別重定向到不同檔案。

2.4 將標準輸出和標準錯誤輸出重定向到同一檔案

command &> file

command > file

2>&1  # 將先將標準輸出重定向到檔案 file,然後將標準錯誤重定向到標準輸出

這兩個命令都可以將標準輸出和標準錯誤輸出重定向到同乙個檔案。其中, &> 是 bash 提供的乙個特殊的重定向符號。

在重定向到檔案描述符時,必須在檔案描述符數字之前加上 & 符號

三、輸入重定向

使用 < 操作符進行輸入重定向:

command < file
該命令可以將 command 的標準輸入改為從檔案 file 輸入。

Shell 輸入 輸出重定向

大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...

Shell 輸入 輸出重定向

大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...

Shell輸入輸出重定向

大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...