I/O重定向以及管道

I/O重定向

    通常對於程序來講,輸入輸出可以使鍵盤、鼠標、顯示器等;當然有時候輸入的數據是程序自身內部所具有的。同樣,輸出的數據也有顯示器或文件,因此我們到底從哪裏輸入數據,產生的數據又存放在哪裏。


程序:指令+數據

讀入數據:Input

輸出數據:Output

標準輸入:鍵盤

標準輸出:顯示器

程序的數據流有三種:

    輸入的數據流:<-- 標準輸入(stdin),鍵盤

    輸出的數據流:--> 標準輸出(stdout),顯示器

    錯誤輸出流:--> 標準輸出(stdout),顯示器


fd(File descriptor):即文件描述符,內核利用fd來訪問文件

    標準輸入:鍵盤,0

    標準輸出:顯示器,1

    標準錯誤輸出:顯示器,2


輸出重定向:COMMAND > NEW_POS 或 COMMAND >> NWE_POS

    >:覆蓋重定向,會將目標文件內容覆蓋

wKiom1efNFmDBD1aAAAnDW151Ec983.png

    >>:追加重定向,將輸出的內容追加至目標文件尾部

wKioL1efNOGgUywCAAAoeL-orB8126.png


set -C:禁止輸出重定向覆蓋文件內容

    強制覆蓋,可使用>|

wKiom1efNnjycdIPAAA5TWf_fRU440.png

set +C:允許輸出重定向覆蓋文件內容

    

錯誤輸出重定向:COMMAND 2> NEW_POST 或 COMMAND 2>> NEW_POS

    2>:覆蓋錯誤輸出重定向,覆蓋指定的文件內容

    2>>:追加覆蓋,將錯誤輸出內容追加至文件尾部

wKioL1efN7njJUwlAAAuspLgqZQ251.png


合併標準輸出和錯誤輸出

    (1)&>:覆蓋標準輸出和錯誤輸出,覆蓋指定文件內容

wKiom1efOuehFAkdAAAEQMgE2bg843.png

      &>>:追加輸出

wKioL1efOxCjfiQyAAAEgDOL588921.png

    (2)2>&1:

wKiom1efOzeT9X7XAAAErtYX7zE383.png

wKioL1efPG6gXzaOAAAFCDwOIgc717.png


輸入重定向:<    COMMAND < INPUT_FILE

    把另一個文件的內容當做程序的輸入

wKiom1efPceSPFqFAAAFy2Uuxh8653.png


兩個特殊文件:

    /dev/null:數據黑洞,可將所有無關緊要要的輸出信息輸出至此設備當中,一般在編寫腳本時用的比較多

    /dev/zero:吐零機,可無限輸出000數據,一般用於生成文件 或覆蓋文件


tr命令:刪除或轉換字符

    tr [OPTIONS...] SET1 [SET2]

        -c:取字符集的補集

        -d:刪除SET1定義的字符

        -s:把連續的字符顯示一次

        -t:第一個字符集對應字符轉化爲第二字符集對應的字符

wKiom1efPzHzGpIOAABctibqhMo073.png

wKioL1efP4ugVJdAAAAhJlGvRBk325.png

Here Document:<<

    cat << EOF

    cat << EOF > aa.txt

wKiom1efQCfj85zBAAAZBpLxq-0708.png


管道:|

    將一個命令的輸出當做下一條命令的輸入,實現命令鏈接

    COMMAND1 | COMMAND2 | COMMAND3 |...

wKiom1efQRKCWiLdAAAGKaeLsK0780.png將/etc/passwd文件內容轉換爲大寫並輸出至aa.txt文件中


tee命令:將標準的輸入和標準輸出和文件

    COMMAND | tee /PATH/TO/SOMEFILE

wKiom1efQb6R1QRYAAAPE7YMGiI103.png將輸入的文檔輸出至標準輸出並保存至aa.txt文件中


    

      

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