首頁 > 軟體

Shell 基礎 - 輸入輸出重定向

2020-06-16 16:38:05

一、檔案描述符

  檔案描述符是一個非負的整數,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 2>&1

  該命令將標準輸出和標準錯誤輸出重定向到同一個檔案。

三、輸入重定向

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

command < file

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


IT145.com E-mail:sddin#qq.com