unix系统提供了两个在shell编程中特别有用的目录。第一个目录,/dev/null类似一个临时容器,送到这个目录的数据又被系统丢掉了。换句话说,将数据写到该目录的程序通常会认为它成功写数据。但是事实上,它什么事都没有做。当你需要一个命令的退出状态但不输出的时候非常有用。例如判断一个文件是否包含了一个模式。
if grep pattern myfile > /dev/null then ... Pattern is there else ... Pattern is not there fi
和写数据相比,从/dev/null中读数据通常立即返回文件的末尾。从/dev/null中读数据在shell编程中很少用,但是知道文件怎样工作很重要。
另外一个特殊的目录是/dev/tty。当程序打开这个目录时,unix自动重定向到与程序相关的真实的终端(物理显示器或一些列端口)。对于必须从人读取输入或生成错误消息时特别有用。
printf "Enter new password: " Prompt for input stty -echo Turn off echoing of typed characters read pass < /dev/tty Read password printf "Enter again: " Prompt again read pass2 < /dev/tty Read again for verification stty echo Don't forget to turn echoing back on ...stty(set tty)命令控制了终端的各种变量。选项-echo关闭了自动打印你输入的每一个字符,stty echo储存它。
将自定义路径加入到默认路径中:
$ PATH=$PATH:$HOME/bin Append our bin directory to PATH