详解shell中gt;/dev/null 2gt;amp;1到底是什么(2)
再回到文章的开头,我说我弄反了
我们用一个表格来更好地说明这两条命令的区别:
>/dev/null 2>&1 VS >/dev/null 2>/dev/null 那么可能会有些同学会疑问,为什么要用重定向绑定,而不是像 为了回答这个问题,我们回到刚才介绍输出重定向的场景。我们尝试将标准输出和错误输出都定向到out文件中: # ls a.txt b.txt >out 2>out # cat out a.txt 无法访问b.txt: 没有那个文件或目录 WTF?竟然出现了乱码,这是为啥呢?这是因为采用这种写法,标准输出和错误输出会抢占往out文件的管道,所以可能会导致输出内容的时候出现缺失、覆盖等情况。现在是出现了乱码,有时候也有可能出现只有error信息或者只有正常信息的情况。不管怎么说,采用这种写法,最后的情况是无法预估的。 而且,由于out文件被打开了两次,两个文件描述符会抢占性的往文件中输出内容,所以整体IO效率不如 nohup结合 我们经常使用 # nohup java -jar xxxx.jar & 为了不让一些执行信息输出到前台(控制台),我们还会加上刚才提到的 # nohup java -jar xxxx.jar >/dev/null 2>&1 & 总结 本文主要介绍了linux重定向的原理以及一些基本命令,并且详细地分析了 总而言之,在工作中用到最多的就是 好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。 (编辑:ASP站长网) |