用实例讲解输出/输入重定向/管道以及标准错误

输入重定向:

命令执行的结果,默认情况是输出到终端设备的,但是如果加上重定向符号,也可以输出到文件:

[root@localhost travel_life]# echo first time > a.txt

[root@localhost travel_life]# cat a.txt

first time

 [root@localhost travel_life]# echo second time > a.txt  ---- 用一个’>’ ,把当前的内容覆盖文件中已存在的内容

[root@localhost travel_life]# cat a.txt

second time

[root@localhost travel_life]# echo third time >> a.txt  ---- 用两个’>’,则不会覆盖已存在的内容,而是追加到原来内容的尾部

[root@localhost travel_life]# cat a.txt

second time

third time

 

也可以用cat把一个文件的内容追加到另一个文件后面:
[root@localhost travel_life]# cat b.txt

aaaa

[root@localhost travel_life]# cat a.txt >> b.txt

[root@localhost travel_life]# cat b.txt

aaaa

second time

third time

 

[root@localhost travel_life]# cat a.txt b.txt  ---- cat后面指定两个文件名,就把两个文件的内容相继显示出来,为什么是这样?因为是catcatenate(连接)的缩写。

second time

third time

aaaa

second time

third time

 

 

输入重定向:

比如想知道当前有多少用户登录,可以把who运行结果的行数先输出重定向到文件a.txt, 然后再让输入重定向到a.txt从而让wc –l打印出行数也就是用户的个数。
[root@localhost travel_life]# who

root     pts/0        2014-10-11 23:23 (10.201.222.58)

root     pts/1        2014-10-11 23:23 (10.201.222.58)

[root@localhost travel_life]# who > a.txt

[root@localhost travel_life]# wc -l < a.txt

2

 

当然还有更简单方法显示当前用户数,就是即将要讲的管道。

 

管道:

管道,顾名思义,就是一根管子,我们可以假定管子左右两边分别有两个人,左边的人在执行一个命令,做完之后把结果(想象成一个球)扔进管子,球会沿着管子滚到右边那一侧,右边的人拿到结果后,可以接着做事情。相当于左边第一条命令的标准输入作为第二条命令的标准输入。

[root@localhost travel_life]# who | wc -l

2

 

标准错误:

跟标准输入和标准输出一样,标准错误也是一种标准设备。UNIX把大部分错误信息都写到这里。与其他两类设别一样,标准错误默认也是终端。大多情况下,根本分不清标准输出和标准错误。

比如上篇文章里的ln错误:

[root@localhost travel_life]# ln /boot/xen-syms-2.6.18-53.el5 .

ln: creating hard link `./xen-syms-2.6.18-53.el5' to `/boot/xen-syms-2.6.18-53.el5': Invalid cross-device link

 

即使输出重定向到a.txt,仍然会在终端打印错误信息:

[root@localhost travel_life]# ln /boot/xen-syms-2.6.18-53.el5 . > a.txt

ln: creating hard link `./xen-syms-2.6.18-53.el5' to `/boot/xen-syms-2.6.18-53.el5': Invalid cross-device link

[root@localhost travel_life]#

 

但是如果真想让错误不显示在终端,而是输出重定位到某个文件,可以用’2>’,务必注意2和>之间不能有空格。实际,这个我们经常会用到,比如把执行一个大型shell脚本中遇到的错误全部打印到一个文件,执行完之后再看这个文件。

[root@localhost travel_life]# ln /boot/xen-syms-2.6.18-53.el5 . 2> a.txt

 [root@localhost travel_life]# cat a.txt

ln: creating hard link `./xen-syms-2.6.18-53.el5' to `/boot/xen-syms-2.6.18-53.el5': Invalid cross-device link

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值