重定向解釋

Unix系統中,任何命令,包括Shell本身,默認情況下總是讀取來自終端鍵盤輸入的數據,這個數據輸入源通常稱作標準輸入(stdin),其文件描述符爲0.

默認情況下,命令的處理結果總是輸出到用戶終端的屏幕上,這個輸出目的通常稱作標準輸出(stdout),其文件描述符爲1.

另外,在命令的執行期間,如果出現問題,相應的錯誤信息默認情況下也將輸出到用戶的終端屏幕上,這個輸出目的通常稱作標準錯誤輸出(stderr),其文件描述符爲2.

 

有上面的基礎知識後,我們現在來討論Linux/Unix系統命令行的精妙之處:輸入輸出重定向.

 

例如:

ls -l > fname

上述命令就是把ls命令的返回結果輸出到fname這個文件中去,但是要注意的事情是輸出前將清空原文件內容(如果原文件存在).

使用ls -l >>fname這個命令是將結果附加到原文件後面.

 

grep root < fname

上述命令是在fname這個文件中尋找帶有root這個字段的內容,是把標準輸入重定向爲文件輸入.

 

上述命令其實是簡化後的形式,其原始形式爲

0 < fname   把標準輸入重定向到指定文件中

1 > fname   把標準輸出重定向到文件中

2 > fname   把標準錯誤輸出重定向到文件中

 

還有一個重要的用法

i>& j   把文件描述符i表述的輸出文件重定向到文件描述符j表示的文件

例如:

command_1 2 >& 1   把這個錯誤命令的標準錯誤輸出重定向到標準輸出

 

其原理是用指針實現的.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章