I/O重定向:
通过与终端交互,或是在Shell脚本里设置,重新安排从哪里输入或输出到哪里。
1.以 < 改变标准输入
2.以 > 改变标准输出
>重定向符(redirector)在目的文件不存在时,会新建一个。如目的文件已存在,覆盖;原本的数据都会丢失;
3.以 >> 附加到文件
>>目的文件不存在时,新建;存在,不覆盖,将程序所产生的数据附加到文件结尾处。
4.以 | 建立管道
program1 | program2可将program1的标准输出修改为program2的标准输入。
虽然 < 与 > 可将输入与输出连接到文件,不过管道(pipeline)可把两个以上执行中的程序衔接在一起。管道可以使得执行速度比使用临时文件的程序快上十倍。
特殊文件:/dev/null与/dev/tty
/dev/null:位桶(bit bucket)
传送到此文件的数据都会被系统丢掉;即:当程序将数据写到此文件时,会认为它已成功写入数据的操作,实际上什么事都没做。
如需要的是命令的推出状态,而非它的输出,可用此功能。
读取/dev/null的操作很少会出现在Shell程序里。
/dev/tty
stty(set tty)命令用来控制终端(或窗口)的各种设置。-echo选项用来关闭自动打印每个输入字符的功能;stty echo用来恢复该功能。
例:
printf "Enter new password:" 提示输入
stty -echo 关闭自动打印输入字符的功能
read pass < /dev/tty 读取密码
printf "Enter again:" 提示再输入一次
read pass2 < /dev/tty 再读取一次以确认
stty echo 别忘了打开自动打印打印输入字符的功能
...