標準輸入 輸出和錯誤和檔案重定向

2021-06-21 11:33:49 字數 1504 閱讀 9840



標準輸入、輸出和錯誤

當我們在shell中執行命令的時候,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名。

下面就是這些檔案描述符及它們通常所對應的檔名:

檔案檔案描述符

輸入檔案—標準輸入0:它是命令的輸入,預設是鍵盤,也可以是檔案或其他命令的輸出。

輸出檔案—標準輸出1:它是命令的輸出,預設是螢幕,也可以是檔案。

錯誤輸出檔案—標準錯誤2:這是命令錯誤的輸出,預設是螢幕,同樣也可以是檔案。

系統中實際上有1 2個檔案描述符,但是正如我們在上表中所看到的, 0、1、2是標準輸入、輸出和錯誤。可以任意使用檔案描述符3到9。

標準輸入是檔案描述符0。它是命令的輸入,預設是鍵盤,也可以是檔案或其他命令的輸出。

標準輸出是檔案描述符1。它是命令的輸出,預設是螢幕,也可以是檔案。

標準錯誤是檔案描述符2。這是命令錯誤的輸出,預設是螢幕,同樣也可以是檔案。你可能會問,為什麼會有乙個專門針對錯誤的特殊檔案?這是由於很多人喜歡把錯誤單獨儲存到乙個檔案中,特別是在處理大的資料檔案時,可能會產生很多錯誤。

如果沒有特別指定檔案說明符,命令將使用預設的檔案說明符(你的螢幕,更確切地說是你的終端)。

檔案重定向

在執行命令時,可以指定命令的標準輸入、輸出和錯誤,要實現這一點就需要使用檔案重定向。下表列出了最常用的重定向組合,並給出了相應的檔案描述符。

在對標準錯誤進行重定向時,必須要使用檔案描述符,但是對於標準輸入和輸出來說,這不是必需的。為了完整起見,下表列出了兩種方法。

command > filename 把把標準輸出重定向到乙個新檔案中

command >> filename 把把標準輸出重定向到乙個檔案中(追加)

command 1 > fielname 把把標準輸出重定向到乙個檔案中

command > filename 2>&1 把把標準輸出和標準錯誤一起重定向到乙個檔案中

command 2 > filename 把把標準錯誤重定向到乙個檔案中

command 2 >> filename 把把標準輸出重定向到乙個檔案中(追加)

command >> filename 2>&1 把把標準輸出和標準錯誤一起重定向到乙個檔案中(追加)

command < filename > filename2把command命令以filename檔案作為標準輸入,以filename2檔案作為標準輸出

command < filename 把command命令以filename檔案作為標準輸入

command << delimiter 把從標準輸入中讀入,直至遇到delimiter分界符

command <&m 把把檔案描述符m作為標準輸入

command >&m 把把標準輸出重定向到檔案描述符m中

command <&- 把關閉標準輸入

這個連線有一些其它說明

**:

標準輸入標準輸出標準錯誤重定向

重定向操作符 描述 將命令輸出寫入到檔案或裝置 如印表機 而不是命令提示符視窗或控制代碼。從檔案而不是從鍵盤或控制代碼讀入命令輸入。將命令輸出新增到檔案末尾而不刪除檔案中已有的資訊。將乙個控制代碼的輸出寫入到另乙個控制代碼的輸入中。從乙個控制代碼讀取輸入並將其寫入到另乙個控制代碼輸出中。從乙個命令中...

分享 Linux標準輸入 輸出和重定向

注意ctrl c與ctrl d的區別 ctrl d 只是表示eof 代表輸入完成或者登出 ctrl c 向當前程序傳送sigterm訊號 終止程式 wc才將命令結果寫在螢幕上。如果給出乙個檔名作為wc命令的引數,如下例所示,wc將返回該檔案所包含的行數 單詞數和字元數。wc etc passwd 2...

重定向》 與標準輸入 標準輸出 標準錯誤輸出

當linux執行乙個程式的時候,會自動開啟三個流,標準輸入 standard input 標準輸出 standard output 標準錯誤輸出 standard error 比如在開啟命令行時,預設情況下,命令列的標準輸入連線到鍵盤,標準輸出和標準錯誤都連線到螢幕,儘管三個流都開啟,但他會根據需要...