完成這一章,你能夠做以下事情:
改變UNIX命令的輸出,使其輸出到檔。
將UNIX命令產生的錯誤資訊輸出到檔。
改變UNIX命令的輸入。
定義一個篩檢程式
使用一些基本的篩檢程式例如sort,grep和wc。
9.1 輸入輸出重定向簡介
shell提供重定向一個命令的輸入和輸出的功能。 大多數的命令的輸出是輸出到終端螢幕;比如date,ls,who等等,很多命令從鍵盤得到輸入,命令包括mail,write,cat。
在UNIX系統中任何物件都是一個檔,包括終端和鍵盤都是一個檔。 輸出重定向 讓你將一個命令的輸出送到除終端以外的其他的檔中。 而輸入重定向讓你從鍵盤以外的檔中得到輸入。
輸出重定向可以用來捕獲一個命令的輸出,作為日誌記錄記錄下來,或者對其進行更進一步的處理。 輸入重定向可以讓你可以使用一個編輯器創建一個檔,然後將這個檔送到一個命令,而來代替沒有編輯的能力的互動式的輸入方式(例如mail命令)。
這一章介紹輸入輸出重定向,然後介紹一些UNIX的篩檢程式。 篩檢程式是一種特殊的工具,它能進一步處理一個檔的內容。
9.2 標準輸入,標準輸出,和標準錯誤
每一次系統啟動的時候,都會自動建立三個檔,這三個檔叫做標準輸入,標準輸出,標準錯誤。
shell從標準輸入檔得到輸入。 這個檔使用C語言的描述項「0」,來打開,通常指向你的鍵盤。 所以,當shell需要輸入的時候,必須使用鍵盤來輸入資料。
一些命令,如mail,write,cat,從標準輸入得到輸入,其方式為輸入命令和參數,回車,然後命令會等待你提供輸入來進行處理。 輸入的結束標誌是回車和ctrl+d
shell將輸出寫到這標準輸出檔,這個檔使用C語言的描述項號「1」來打開,通常為你的終端。 因此,當shell產生輸出,這些輸出資料通常顯示在你的螢幕上
大多數的UNIX命令會產生標準輸出,這些命令有date,ls,cat,who等等。
shell會將錯誤資訊輸出到標準錯誤檔,這個檔使用C語言的描述項「2」來打開。 同標準輸出一樣,標準錯誤會輸出到你的終端。 標準錯誤可以重新定向輸出到獨立的標準錯誤檔中。
大多數UNIX系統命令在被不恰當調用的時候會產生一個錯誤資訊。 想要看一個標準錯誤的例子,輸入:cp 然後回車。 cp使用資訊會顯示在你的螢幕上,而這些資訊實際上是通過標準錯誤流來傳送的
下面將要告訴你如何更改標準輸入,標準輸出,標準錯誤的預設值,如從一個檔得到輸入而不是從鍵盤,在其它地方產生輸出(而錯誤資訊)而不是在終端。