重温文件描述符 >/dev/null 2>&1

对于很多人来说重定向一定很熟悉,对于下面的命令也一定眼熟 .

sar 2 5 -o /tmp/data > /dev/null 2>&1

sar 2 5 -o /tmp/data 这部分好理解输出至文件

 > /dev/null 2>&1

可以理解2步:
1 前面命令的 标准输出 重定向 到 /dev/null 文件
2 将 标准错误 重定向 到 标准输出的引用中 ,当前为/dev/null
(&为引用, &1 引用文件1, 文件描述符引用了标准输出)

关于几个代码大家自己思考

ls >1测试一下,不会报没有2文件的错误,但会输出一个空的文件1ls >2 也会产生空的文件2
ls 2>1
这个1,2 是什么呢,是标准输入,标准输出 重定向生成真实的文件
ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中,真实文件中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了,也就是屏幕上;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。

其实 >/dev/null 2>&1 这句话意思是 将输出和错误重定向到空(/dev/null)中,不显示任何东西.

关于文件描述符,大家可以参考此文
https://blog.csdn.net/qq_29350001/article/details/65437279

猜你喜欢

转载自blog.csdn.net/CSDN1887/article/details/81567139