特殊文件: /dev/null和/dev/tty


轉自:http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html

Linux系統提供了兩個對Shell編程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null將會丟掉所有寫入它的數據,換句換說,當程序將數據寫入到此文件時,會認為它已經成功完成寫入數據的操作,但實際上什么事都沒有做。如果你需要的是命令的退出狀態,而非它的輸出,此功能會非常有用,見如下Shell代碼:
    /> vi test_dev_null.sh
    
    #!/bin/bash
    if grep hello TestFile > /dev/null
    then
        echo "Found"
    else
        echo "NOT Found"
    fi
    在vi中保存並退出后執行以下命令:
    /> chmod +x test_dev_null.sh  #使該文件成為可執行文件
    /> cat > TestFile
    hello my friend
    CTRL + D                             #退出命令行文件編輯狀態
    /> ./test_dev_null.sh
    Found                                 #這里並沒有輸出grep命令的執行結果。
    將以上Shell腳本做如下修改:
    /> vi test_dev_null.sh
    
    #!/bin/bash
    if grep hello TestFile
    then
        echo "Found"
    else
        echo "NOT Found"
    fi
    在vi中保存退出后,再次執行該腳本:
    /> ./test_dev_null.sh
    hello my friend                      #grep命令的執行結果被輸出了。
    Found
    
    下面我們再來看/dev/tty的用途。當程序打開此文件是,Linux會自動將它重定向到一個終端窗口,因此該文件對於讀取人工輸入時特別有用。見如下Shell代碼:
    /> vi test_dev_tty.sh
    
    #!/bin/bash
    printf "Enter new password: "    #提示輸入
    stty -echo                               #關閉自動打印輸入字符的功能
    read password < /dev/tty         #讀取密碼
    printf "\nEnter again: "             #換行后提示再輸入一次
    read password2 < /dev/tty       #再讀取一次以確認
    printf "\n"                               #換行
    stty echo                                #記着打開自動打印輸入字符的功能
    echo "Password = " $password #輸出讀入變量
    echo "Password2 = " $password2
    echo "All Done"

    在vi中保存並退出后執行以下命令:
    /> chmod +x test_dev_tty.sh #使該文件成為可執行文件
    /> ./test_dev_tty
    Enter new password:             #這里密碼的輸入被讀入到腳本中的password變量
    Enter again:                          #這里密碼的輸入被讀入到腳本中的password2變量
    Password = hello
    Password2 = hello
    All Done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM