| 臺灣-繁體中文 |
|
|
|
![]() |
使用HP-UX: HP 9000電腦 > 第 3 章. 使用Shell瞭解標準輸入、標準輸出和標準錯誤 |
|
每一個處理程序會開啟三個標準的「檔案」:標準輸入 (stdin)、標準輸出 (stdout) 和標準錯誤 (stderr)。程式使用如下:
下圖說明處理程序與這些檔案的關係。 shell讓您把處理程序的標準輸出自螢幕 (預設) 重新指向檔案。重導輸出的方向,讓您得以將命令所產生的文字儲存在檔案中;同時也可便利地選擇程式所使用的檔案或裝置 (如印表機)。 最簡單的命令語法格式如下: stdout
其中,command是重導其輸出的命令,而outfile是處理程序寫入標準輸出的檔案名稱。如果輸出檔案已經存在,其原先的內容會遺失。如果檔案不存在,則會建立一個新檔。 若要附加輸出到現存檔案,請使用兩個大於符號 (>>) 指向要附加上去的檔案。 下圖說明當輸出重導至檔案時,stdin、stdout和stderr的去處。 下面的例子顯示使用who命令的輸出重導;此who命令將列示目前登入系統的使用者。輸出被重導至檔案whoison,而不將使用者顯示在終端機的螢幕上。 who(1)
shell可讓您改變處理程序的標準輸入方向,亦即,可從檔案而非從鍵盤讀取輸入。若要改變處理程序的輸入方向,請使用指向命令名稱的小於符號 (<) 分開命令和輸入檔案名稱。任何可讀取由 stdin (您的鍵盤)輸入的命令,皆能加以輸入重導。 最簡單的命令語法格式如下: stdin
其中,command是重導其輸入的命令,而infile是處理程序讀取標準輸入的檔案名稱。檔案必須存在,重導才會成功。 下圖說明當輸入方向改為從檔案輸入時,stdin、stdout和stderr的去處。 在下面的範例中,who命令的標準輸出被重導至savewho檔案。接下來,more命令顯示savewho的內容。最後,wc (word count)命令的標準輸入改為由savewho檔案輸入: 使用「>」
使用「<」
在前面的例子中,有-l選項的wc命令會計算輸入檔案中的行數。因為輸入方向已改為自savewho檔案輸入,所以結果和執行who命令時所得之登入系統使用者的人數一樣。 您可以重導一個單一命令的標準輸入與標準輸出。不過,標準輸入和標準輸出請不要使用相同的檔案名稱,否則輸入檔案的原有內容會遺失。 下圖說明當輸出和輸入起迄的檔案改變時,stdin、stdout和stderr被導向之處。 以下的例子使用sort命令排序由鍵盤鍵入的文字。鍵入CTRL-D結束標準輸入。以下的範例為顯示在終端機螢幕上的標準輸出: sort(1)
在以下的例子中已重導輸入的方向:
在前面的例子中,sort命令使用socks檔案作為輸入。標準輸出顯示在終端機的螢幕上。 shell可讓您連接二或多個處理程序,使得一個處理程序的標準輸出可做為另一個處理程序的標準輸入。處理程序之間的連接稱為導引(pipe)。若要導引一個處理程序的輸出到另一個處理程序,請用垂直線 (|) 來分開命令。以下為導引的一般語法:
command1是將此命令的標準輸出重導或導引至另一個命令,而command2是此命令的標準輸入讀取先前命令的輸出。您可以將二或多個命令結合成單一的導引線。每一個連續命令的輸出,都被導引為命令行中下一個命令的輸入。
在以下的例子中,who命令的輸出再次儲存於檔案savewho中。然後,savewho檔案則做為wc命令的輸入: wc(1)
利用導引線,這兩個命令合而為一:
如例子所示,使用導引則不再需要暫時的中間檔案。相反地,第一個命令的標準輸出直接送達第二個命令,做為該命令的標準輸入。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||