Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819741
  • 博文数量: 97
  • 博客积分: 3042
  • 博客等级: 中校
  • 技术积分: 1610
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:48
文章存档

2015年(1)

2014年(3)

2013年(4)

2012年(43)

2011年(44)

2010年(2)

分类: LINUX

2011-11-07 21:22:43

在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                    #打开自动打印输入字符的功能
  ...
阅读(2084) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~