linux中的 2> /dev/null

1、文件描述符

Linux系统预留可三个文件描述符:0、1和2,他们的意义如下所示:

0——标准输入(stdin)

1——标准输出(stdout)

2——标准错误(stderr)

标准输出——stdout

假设:在当前目录下,有且只有一个文件名称为123.txt的文件,这时我们运行这个命令【ls 123.txt】,就会获得一个标准输出stdout的输出结果:123.txt

错误输出——stderr

按照上面的假设,我们运行另一条命令【ls abc.txt】,这样我们就会获得一个标准错误stderr的输出结果“ls:无法访问abc.txt:没有那个文件或目录”。

2、重定向

重定向的符号有两个:>或>>,两者的区别是:前者会先清空文件,然后再写入内容,后者会将重定向的内容追加到现有文件的尾部。举个例子:

(a)重定向标准输出stdout

如上图所示,对比没有添加重定向的操作,这条命令在使用之后并没有将123.txt打印到屏幕。在紧接的cat操作后,可以发现本来应该被输出的内容被记录到stdout.txt中。

(b)重定向标准输出

(c)可以将stderr单独定向到一个文件,stdout重定向到另一个文件

cmd 2> stderr.txt 1>stdout.txt

(d)也可以将stderr和stdout重定向到同一个文件

cmd > output.txt 2>&1

或采用下面的方法,可以少写几个字,能达到同样的效果

cmd &> output.txt

cmd >& output.txt     #两个表达式效果一样的

3、Linux特殊文件

/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。

所以,2>/dev/null的意思就是将标准错误stderr删掉。
--------------------- 
作者:gramdog 
来源:CSDN 
原文:https://blog.csdn.net/gramdog/article/details/80374119 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_19004627/article/details/86623125