管道与IO重定向之输出重定向

首先来了解一下什么叫IO..

I/O是Input与Output的缩写..

input就是linux下的标准输入设备,output就是标准输出设备了.

那么在linux下,标准输出设备跟标准输入设备分别是什么呢,分别是显示器跟键盘

例如,使用ls命令将某个目录下的文件列出来,那么linux会将ls的结果输出到标准输出设备中,就是显示器.

那么所谓的I/O重定向,从字面的理解,就是将执行的结果重新定向输出在别的设备上,可以是文件也可以是其他设备..

输出重定向

使用 >符号来将输出重定向,如下
ls -lh /var/ > ./elson/output.put 这里的语法是将前者的执行输出结果重定向到 ./elson/output.out文件中,后面文件就是输出重定向的接受者.如图


>也有一个别的称呼叫做覆盖重定向,因为使用>的话,假如output.out里面本来是有内容的,那么就覆盖原本内容,那么想追加内容呢?
>>叫做追加重定向...语法使用跟>是一样的.>>会在原本内容中追加新的重定向内容.
使用格式: ls -lh /var/ >> ./elson/output.out
这里有一个小小的问题..如果ls -lh命令执行失败呢?什么情况下会失败,比如 ls -l /var/directory 假设directory不存在,或者ls不小心写错了.

那么错误信息还会输出到重定向文件中吗?.答案是不会的,同样,linux有标准输入输出,也有错误的输入输出.
系统设定,默认输出设备是:STDOUT 描述符是1,输入设备是STDIN,描述符是0,标准错误输出:STDERR,描述符是2
那么我如果想将执行失败的错误信息也重定向到目标文件,那么可以使用 2>符号错误信息重定向.如下
ls -lh /etc/xxxx  2> ./elson/output.out
如果使用2>来错误重定向,那么如果ls执行的是没有错误的,那2>能不能重定向标准输出呢?答案是不可以的.
如果想ls命令不管执行错误还是成功都想重定向到文件中.如下
ls -lh /etc  >> ./elson/output.out  2> ./elson/output.out
但是如上的命令太麻烦了,linux提供&>可以做到如上的效果
ls -lh /etc &> ./elson/output.out
这里也有一个假设题,能不能使用&>> 追加重定向呢?,是不可以的.linux 不支持 &>> 这个方式,起码在我了解的redhat是不行的.





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值