shell重定向(> /dev/null 2>&1)

5 篇文章 0 订阅

当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用:
        类型                                        文件描述符    默认情况                                对应文件句柄位置
        标准输入(standard input)    0                    从键盘获得输入                    /proc/self/fd/0
        标准输出(standard output)  1                    输出到屏幕(即控制台)     /proc/self/fd/1
        错误输出(error output)         2                    输出到屏幕(即控制台)    /proc/self/fd/2

 输出重定向
        命令                                介绍
        command >filename       把标准输出重定向到新文件中(默认省略1:标准输出)
        command 1>filename     同上
        command >>filename     把标准输出追加到文件中
        command 1>>filename   同上
        command 2>filename     把标准错误重定向到新文件中
        command 2>>filename   把标准错误追加到新文件中
        当使用>时,会判断右边的文件存不存在,如果存在的话就先删除,然后创建一个新的文件,不存在的话则直接创建。但是当使用>>进行追加时,则不会删除原来已经存在的文件; 不存在的话则直接创建。

注:

1)指定的标准格式(输入输出和错误)必须紧接重定向符号(2>err / 2> err);后面的文件可以不紧跟符号。

2)cat output output2 > out 2> err:将所有的标准输出,输出到out;将全部的标准错误,输出到err;并不是将output输出到out,将output2标准错误输出到err,不是对应关系。

输入重定向
        命令                介绍
        command <filename    以filename文件作为标准输入(默认省略0:标准输入)
        command 0<filename    同上
        command <<delimiter    从标准输入中读入,直到遇到delimiter分隔符(输入delimiter分隔符结束)

/dev/null:代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。
2>&1 : 这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符;&符号跟哪个标准方式,就是将两个标准方式当作那同一个标准方式;

1>&2:将标准输出当作标准错误使用;2>&1:将标准错误当作标准输出使用;

cat file1 file3 file5 2> file2 2>&1:文件file2中不会有标准错误的输出;

cat file1 file3 file5 2> file2 1>&2:将输出当作错误描述符,file2中有全部的输出;
> /dev/null 2>&1:linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出);错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。

 参考链接:https://www.cnblogs.com/ultranms/p/9353157.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值