標準輸入、輸出和錯誤
當我們在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 比如在開啟命令行時,預設情況下,命令列的標準輸入連線到鍵盤,標準輸出和標準錯誤都連線到螢幕,儘管三個流都開啟,但他會根據需要...