大多數由 Unix
指令啟動的程序都會將資訊輸出於螢幕,稱為標準輸出,許多程序也從鍵盤讀取輸入,稱為標準輸入。
此外,還有一個標準錯誤輸出,預設情況下,程序會將錯誤訊息寫入終端螢幕。除了鍵盤與螢幕之外,很多程序也需要
輸出資訊於檔案中或從檔案中讀取資訊。
在Unix之前的傳統作業系統中,一個程式的輸出檔與輸入檔的檔名都是寫死在程式中的,非常難以改變。
如果要改變輸出檔與輸入檔的檔名,必須改寫程式,非常麻煩。
Unix做了一個革命性的改進,
除了提供傳統的檔案讀寫方式之外,還額外提供了一個方法讓使用者不須改寫程式就可以任意改變輸入輸出的標的。
只要一個程序從標準輸入檔讀進資料並將運算結果儲存在標準輸出檔中,使用者就能運用
I/O
轉向將輸入或輸出導向任意的檔案。意即執行一個程式時,可以任意指定輸入檔以及輸出檔。標準輸入檔的預設值是鍵盤,而標準輸出檔的預設值是螢幕。
例如:
'ls'這個指令的輸出是螢幕,將一個目錄內的檔案名稱列印在螢幕上。但如果要將'ls'這個指令的執行結果放入一個檔案,便可以用下法:
對比於我們常用的視窗系統,要將一個資料夾內的檔案名稱存入一個檔案中, 沒有方便的方法。 |
標準輸入/輸出/錯誤
|
Unix 系統主動為每一個程序(Process)預設開啟三個檔案:
標準輸入(檔案代碼為 0),預設連結到鍵盤;標準輸出(檔案代碼為
1),預設連結到螢幕;標準錯誤(檔案代碼為 2),
通常也是預設連結到螢幕。
|
變更輸入與輸出檔案
|
將標準輸入與輸出導向其他檔案的方法如下:
|
變更標準錯誤輸出
|
標準錯誤輸出(STDERR, standard error),
用來顯示錯誤訊息,如果標準輸出(STDOUT)已經被轉向到一個檔案去,
我們還是可以從螢幕上看到錯誤訊息。
在 Bourne Shell (sh) 及 Korn Shell (ksh) 中,
可以使用"2>"符號把它轉向到另一個檔案,
當然也可以將 STDOUT 及 STDERR合併轉向到同一檔案去。
|
合併標準輸出(STDOUT)與標準錯誤輸出(STDERR)
|
當撰寫一個電腦程式時,在除錯的過程中,
經常要將錯誤資訊儲存起來慢慢分析,如前所述可用 2>
將標準錯誤輸出(STDERR)轉向到一個檔案,如果
要合併標準輸出(STDOUT)與標準錯誤輸出(STDERR)並且存到
一個檔案時,就需用到
|