轉自:http://www.CUOXin.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
新聞熱點
疑難解答