首页 > 学院 > 操作系统 > 正文

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

2024-06-28 13:19:35
字体:
来源:转载
供稿:网友
特殊文件: /dev/null和/dev/tty

转自: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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表