shell中的I/O重定向介绍

发布时间:2020-03-27编辑:脚本学堂
shell中的I/O重定向介绍,供大家学习参考。
当用户登录linux系统时,系统已经将标准输入,标准输出,标准出错打开,并且默认是终端。
shell中的I/O重定向就是通过和终端交

shell中的I/O重定向介绍,供大家学习参考。
当用户登录linux系统时,系统已经将标准输入,标准输出,标准出错打开,并且默认是终端。
shell中的I/O重定向就是通过和终端交互,或者是在shell脚本中设置,从新安排从哪里输入和将数据输出到哪。

重定向和管道
 
(1)重定向输入“<”
  program < file 可以将program的标准输入修改为file。例如:
  tr -d 'r' < kou.txt
 
 (2) 重定向输出“>”
  program > file 可以将program的标准输出修改为file。例如:
  tr -d 'r' < kou.txt > file2.txt
  意思是:从kou.txt读入数据,删除文件中的回车,然后将结果输出到file2.txt
 
 (3)追加重定向输出">>"
  program >> file 可以将program的标准输出修改为file,但是和重定向输出的不同是:它并不会覆盖掉原来file中的数据,而是追加到末尾。
 
 (4)管道
  program1 | program2 可以将program1的标准输出修改成program2的标准输入, 这样可以比使用临时文件效率快好多,例如:
  tr -d 'r' < file1 | sort > file2
  意思是:从file1中读入数据然后删除文件中的回车后,将其数据排序,并输出到file2. 例子中删除回车后的数据的输出作为排序操作的输入。
 
  最后是shell中两个比较重要的特殊文件:/dev/null和/dev/tty
  /dev/null是一个位桶,送到其中的文件都会被丢掉,即彻底删除。
  /dev/tty当程序打开此文件时,linux会自动将其重定向到一个终端(一个  实体控制台或者一个串行端口,或者是一个通过网络和窗口登录的伪终端)在  和程序结合,这在程序必须读取人工输入时特别有用。
 
  例如:
  printf "Enter new password:" #输出提示信息
  stty -echo                   #关闭自动打印输入字符的功能
  read pass < /dev/tty         #读取密码
  printf "Enter again:"        #输出提示信息
  read pass2 < /dev/tty        #读取密码
  stty echo                    #打开自动打印输入字符的功能
  ...