Linux下的輸入 輸出重定向

2021-06-20 00:52:08 字數 1389 閱讀 2469

2、 基本io

cmd > file 把 stdout 重定向到 file 檔案中;

cmd >> file 把 stdout 重定向到 file 檔案中(追加);

cmd 1> fiel 把 stdout 重定向到 file 檔案中;

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中;

cmd 2> file 把 stderr 重定向到 file 檔案中;

cmd 2>> file 把 stderr 重定向到 file 檔案中(追加);

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 檔案中(追加);

cmd < file >file2 cmd 命令以 file 檔案作為 stdin,以 file2 檔案作為 stdout;

cat <>file 以讀寫的方式開啟 file;

cmd < file cmd 命令以 file 檔案作為 stdin;

cmd << delimiter here document,從 stdin 中讀入,直至遇到 delimiter 分界符。

3、 高階io

>&n 使用系統呼叫 dup (2) 複製檔案描述符 n 並把結果用作標準輸出;

<&n 標準輸入複製自檔案描述符 n;

<&- 關閉標準輸入(鍵盤);

>&- 關閉標準輸出;

n<&- 表示將 n 號輸入關閉;

n>&- 表示將 n 號輸出關閉;

上述所有形式都可以前導乙個數字,此時建立的檔案描述符由這個數字指定而不是預設的 0 或 1。如:

... 2>file 執行乙個命令並把錯誤輸出(檔案描述符 2)定向到 file。

... 2>&1 執行乙個命令並把它的標準輸出和輸出合併。(嚴格的說是通過複製檔案描述符 1 來建立檔案描述符 2 ,但效果通常是合併了兩個流。)

我們對 2>&1詳細說明一下 :2>&1 也就是 fd2=fd1 ,這裡並不是說fd2 的值 等於fd1的值,因為 > 是改變送出的資料通道,也就是說把 fd2 的 「資料輸出通道」 改為 fd1 的 「資料輸出通道」。如果僅僅這樣,這個改變好像沒有什麼作用,因為 fd2 的預設輸出和 fd1的預設輸出本來都是 monitor,一樣的!但是,當 fd1 是其他檔案,甚至是其他 fd 時,這個就具有特殊的用途了。請大家務必理解這一點。

exec 0exec 1>outfilename # 開啟檔案outfilename作為stdout。

exec 2>errfilename # 開啟檔案 errfilename作為 stderr。

exec 0<&- # 關閉 fd0。

exec 1>&- # 關閉 fd1。

exec 5>&- # 關閉 fd5。

這樣就完成了linux重定向的學習。

Linux重定向(輸入輸出重定向)

我們知道,linux 中標準的輸入裝置預設指的是鍵盤,標準的輸出裝置預設指的是顯示器。而本節所要介紹的輸入 輸出重定向,完全可以從字面意思去理解,也就是 通常是用檔案或命令的執行結果來代替鍵盤作為新的輸入裝置,而新的輸出裝置通常指的就是檔案。對於輸入重定向來說,其需要用到的符號以及作用如表 1 所示...

Linux下的輸入 輸出重定向

linux環境中支援輸入輸出重定向,用符號 和 來表示。0 1和2分別表示標準輸入 標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2 lee.dat 表示將錯誤資訊輸出到檔案lee.dat中。同時,還可以在這三個標準輸入輸出之間實現重定向,比如將錯誤資訊重定向到標準輸出,...

Linux下的輸入 輸出重定向

linux環境中支援輸入輸出重定向,用符號 和 來表示。0 1和2分別表示標準輸入 標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2 lee.dat 表示將錯誤資訊輸出到檔案lee.dat中。同時,還可以在這三個標準輸入輸出之間實現重定向,比如將錯誤資訊重定向到標準輸出,...