I/O重定向

 

在软件工具哲学中, 标准I/O也许是最基本的概念。这种概念就是程序应该有数据源,数据接收端和报告问题的地方。这有三个涉及到的三个复合名词:标准输入,标准输出和标准误差。程序应该既不知道,也不关注在它的输入输出后是什么样的设备:磁盘文件,终端,磁带,网络连接或者甚至是另外一个正在运行的程序。程序能认为当它开始的时候,这些标准的地方已经打开并且已经准备好试用了。

很多,并不是大多数unix程序遵循这种设计,通过默认的方式,他们读标准输入,写到标准输出,将错误消息发送到标准错误。这些程序被称为过滤器。标准输入,标准输出和标准误差的默认方式是终端。你也许惊奇,谁为运行的程序初始化了标准输入,标准输出,标砖错误。毕竟有人不得不为某个特定的程序打开文件,甚至运行每一个用户在登录时的交互性shell。

答案是当你登入时,unix为standard input, output, and error 分配默认的地方最为你的终端。IO重定向是一个进程,通过该进程在交互性终端或一个shell脚本,你可以分配一个地方来改变你输入的地方到输出的地方。

 

shell为指明怎样更改默认IO源和目标提供了几个语法标记。

用<更改标准输入:

tr -d '/r' < dos-file.txt ...

用>更改标准输出:

tr -d '/r' < dos-file.txt > unix-file.txt

 

tr命令将dos-file.txt文件中的字符搬运到unix-file.txt。dos-file.txt 中的原始数据没有改变。如果目标文件不存在的话> 重定向会创建目标文件。如果目标文件存在,它会被截掉,所有存在的内容都会丢掉。

 

用>>添加到文件按

如果目标文件不存在,>>操作创建目标文件。但是如果已经存在,程序生成的新数据被添加到文件的尾部,而不是被截掉。

 

| 创建管道:

尽管<和>连接输入输出,但是管道能连接两个或者多个运行的程序。在理想的情况下,管道比使用临时文件要快10倍左右。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值