Linux/Unix 命令行:輸入輸出重定向

    在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   把這個錯誤命令的標準錯誤輸出重定向到標準輸出

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