输出到/ dev / null在bash脚本中完成了什么?

我经常遇到在b语句中使用这种语法的小bash脚本:

some command > /dev/null 2>&1 

输出到/dev/null的目的是什么, 2>&1是什么意思?

它总是似乎工作,但我想知道它在做什么。

>/dev/null将命令标准输出重定向到空设备,这是一个丢弃写入其中的信息的特殊设备

2>&1将标准错误流重定向到标准输出流(stderr = 2,stdout = 1)。 请注意,这会采用标准错误流并将其指向与此时标准输出相同的位置。 这就是订单>/some/where 2>&1原因,因为需要首先将stdout指向某处, 然后将stderr指向同一位置,如果想要最终组合两个流。

实际上,它会阻止显示命令的任何输出(stdout和stderr)。 当你不关心命令输出时使用它。

STDIN由0表示,STDOUT由1表示,STDERR由2表示。

/ dev / null是bit-bucket:你转储不需要的东西的地方。


因此,STDOUT被重定向到bit-bucket(垃圾箱),STDERR被重定向到STDOUT所在的位置:bit-bucket。


你也可以这样做:

 >/dev/null 2>/dev/null