2008年11月25日 星期二

UNIX系統中標準輸出入、錯誤的轉向

UNIX系統中,每個 process 有三個特殊的檔案裝置(標準輸入、標準輸出、標準錯誤輸出):
1.標準輸入(standard input),代碼為 0 ,使用 < 或 <<。
2.標準輸出(standard output),代碼為 1 ,使用 > 或 >>。
3.標準錯誤輸出(standard error),代碼為 2 ,使用 2> 或 2>>。

平時在shell中執行指令若不指定標準輸入、標準輸出、標準錯誤輸出,這三個平常是接受終端機(terminal)的輸入及顯示出去,但是可以使用">"和"<"來進行輸出入轉向至一般的檔案或"pipe"來取代這些標準輸出入設備。

我們可將在shell中執行指令視為
command>
>!
1>
1>!
>>
>>!
2>
2>!
2>>
2>>!
>&
>&!
<
<<
裝置或檔案

範例
command < file
將程式中須要由終端機輸入資料,改由編入檔案中,利用轉向輸入。

command > file
將一個指令的輸出結果轉向到一個檔案,如果檔案已經存在,則原檔案內容將被覆蓋。

command >> file
將一個指令的輸出結果轉向到一個檔案,如果檔案已經存在,結果將會附加到檔案的末端。若檔案不存在則將結果存入檔案中。

command >! file
忽略系統警告訊息,強迫將一個指令的輸出結果轉向到一個檔案,如果檔案已經存在,則原檔案內容將被覆蓋。

command >>! file
忽略系統警告訊息,強迫將一個指令的輸出結果轉向到一個檔案,如果檔案已經存在,將會附加到檔案的末端。若檔案不存在則將結果存入檔案中。

command >& file
command > file 2>&1
將一個指令的輸出連錯誤結果轉向到一個檔案,如果檔案已經存在,則原檔案內容將被覆蓋。

command >>& file
將一個指令的輸出連錯誤結果轉向到一個檔案,如果檔案已經存在,將會附加到檔案的末端。若檔案不存在則將結果存入檔案中。

command >&! file
忽略系統警告訊息,強迫將一個指令的輸出連錯誤結果轉向到一個檔案,如果檔案已經存在,則原檔案內容將被覆蓋。

command >>&! file
忽略系統警告訊息,強迫將一個指令的輸出連錯誤結果轉向到一個檔案,如果檔案已經存在,將會附加到檔案的末端。若檔案不存在則將結果存入檔案中。

command 1> file 2>error
將結果存入file,錯誤輸出存入error

沒有留言: