執行一個 Shell命令列通常會自動打開三個標準檔,即標準輸入檔(stdin),通常對應終端的鍵盤;標準輸出檔( stdout)和標準錯誤輸出檔案( stderr),這兩個檔都對應終端的螢幕。 進程從標準
輸入檔得到資料,將正常輸出資料輸出到標準輸出檔,而將錯誤資訊送到標準錯誤檔中。 下面以 cat命令為例, cat命令的功能是從命令列給出的檔中讀取資料,並將這些資料直接送到標準輸出。 例如命令:
$ cat config
將會把檔 config的內容依次顯示到螢幕上。 但是,如果 cat的命令列中沒有參數,它就會從標準輸入中讀取資料,並將其送到標準輸出。 例如:
$ cat
Hello world
Hello world
$
直接使用標準輸入/輸出檔存在以下問題:
資料從標準終端輸入時,輸入的資料只能用一次,下次再想用這些資料時就需要重新輸入,而且在終端上輸入時要修改有誤的輸入也很不方便;
輸出到終端螢幕上的資訊只能查看不能修改,使用者無法將輸出的內容進行更多處理,如將輸出作為另一命令的輸入進行進一步的處理等。 為解決上述問題,Linux系統為輸入、輸出的傳送引入了另外兩種機制,即輸入 /輸出重定向和管道。
8.4.1輸入重定向
輸入重定向是指把命令(或可執行程式)的標準輸入重定向到指定的檔中,即輸入可以不是來自于鍵盤,而來自于某個指定檔。 例如,命令 wc統計指定檔包含的行數、單詞數和字元數。 如果僅在命令列上鍵入:
$ wc
245
wc將等待使用者的輸入,這時 Shell好像死了一樣,從鍵盤鍵入的所有文本都出現在螢幕上,但並沒有什麼結果,直至按下<Ctrl+D>,wc才將命令結果寫在螢幕上。 如果給出一個檔案名作為 wc命令的參數,wc將返回該檔所包含的行數、單詞數和字元數。 另一種把/etc/passwd檔內容傳給 wc命令的方法是重定向 wc的輸入。 輸入重定向的一般形式為:命令<檔案名可以用下面的命令把 wc命令的輸入重定向為 /etc/passwd檔:
$ wc < /etc/passwd
20 23 726
大多數命令都以參數的形式在命令列指定輸入檔的檔案名,所以輸入重定向並不經常使用。 儘管如此,當使用一個不接受檔案名作為輸入參數的命令,或需要的輸入內容存在於一個檔裡時,就能用輸入重定向HTTP://www.aliyun.com/zixun/aggregation/7432.html">解決問題。