美文网首页
>/dev/null 2>&1 和 2>

>/dev/null 2>&1 和 2>

作者: 大飞哥 | 来源:发表于2016-12-29 11:14 被阅读26次

>>>,是输入输出重定向,前者是覆盖,后者是追加。

还有<<<,是输入重定向,
command <filename 或者 command 0<filename 以filename文件作为标准输入
command <<delimiter 从标准输入中读入,直到遇到delimiter分隔符

& 是 重定向绑定

>/dev/null 2>&1 将标准输出重定向到空设备, 然后将错误输出保定到标准输出,这样,错误输出也是重定向到空设备

2>&1 >/dev/null 先将错误输出绑定到标准输出,因为此时,标准输出还没有重定向,所以是默认输出,屏幕,然后将标准输出重定向到空设备。这样,结果就是,标准输出重定向到空设备,错误输出到屏幕。

命令 标准输出 错误输出
>/dev/null 2>&1 丢弃 丢弃
2>&1 >/dev/null 丢弃 屏幕

那么为什么要用重定向绑定,而不是像>/dev/null 2>/dev/null这样子重复一遍呢?
例子

# ls a.txt b.txt >out 2>out
# cat out
a.txt
无法访问b.txt: 没有那个文件或目录

这是因为采用这种写法,标准输出和错误输出会抢占往out文件的管道,所以可能会导致输出内容的时候出现缺失、覆盖等情况。
而且,由于out文件被打开了两次,两个文件描述符会抢占性的往文件中输出内容,所以整体IO效率不如>/dev/null 2>&1来得高。

相关文章

  • >/dev/null 2>&1 和 2>

    >和>>,是输入输出重定向,前者是覆盖,后者是追加。 还有<和<<,是输入重定向,command

  • nohup 和>/dev/null 2>&1

    一、用途:nohup表示永久运行。&表示后台运行 在应用Unix/Linux时,我们一般想让某个程序在后台运行 该...

  • nohup >/dev/null 2>&1

    转自https://my.oschina.net/zhaocx/blog/10509 shell中可能经常能看到:...

  • shell中>/dev/null 2>&1是

  • Linux下 /dev/null 2>&1 解释

    command >/dev/null 2>&1 & == command 1>/dev/null 2>&1 & ...

  • shell里的/dev/null 2>&1详解

    shell中可能经常能看到:[>/dev/null 2>&1] 命令的结果可以通过%>的形式来定义输出 分解这个组...

  • 1>/dev/null 2>&1的含义

    shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 /dev/nu...

  • `2>&1`

    博客引流 初识这个命令的时候,还是山川dalao帮我在开发机上部署java程序时,打印日志的时候使用的 当时觉得 ...

  • Linux 2>&1

    ./test.sh > log.txt 2>&1 2>&1表明将文件描述2(标准错误输出)的内容重定向到文件描述符...

  • linux 2>&1 &是什么

    linux常见输出到文件命令行,如:find /data -name 'login' -print > find....

网友评论

      本文标题:>/dev/null 2>&1 和 2>

      本文链接:https://www.haomeiwen.com/subject/ubwuvttx.html