linux 2>&1 命令

在Linux系统中0 1 2是一个文件描述符.

image.png

从上表看的出来,我们平时使用的

echo "hello" > t.log 

其实也可以写成

echo "hello" 1> t.log

linux shell中"2>&1"

把标准出错重定向到标准输出,然后扔到某个文件下面去。
通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。

命令
command > out.file 2>&1 &
command > out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。

2>&1是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。
最后一个&,是让该命令在后台执行。

解释
我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:

本来1----->屏幕 (1指向屏幕)
执行>log后, 1----->log (1指向log)
执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

command > file 2>&1
首先是command > file将标准输出重定向到file中,2>&1是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

command 2>&1 > file
2>&1标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file后输出才被重定向到file,但标准错误仍然保持在终端。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容