通常,我经常在if语句中遇到使用这种语法的小型bash脚本:
some command > /dev/null 2>&1
这样输出到
/dev/null
的目的是什么,而2>&1
的含义是什么? > #1 楼
>/dev/null
将命令标准输出重定向到空设备,这是一个特殊设备,该设备会丢弃写入其中的信息2>&1
将标准错误流重定向到标准输出流(stderr = 2,stdout = 1 )。请注意,这将采用标准错误流,并将其指向与标准输出相同的位置。这就是订购>/some/where 2>&1
的原因,因为如果要在最后合并两个流,则需要先将stdout指向某个位置,然后将stderr指向相同的位置。实际上,它会阻止任何输出从命令(stdout和stderr)开始显示。当您不关心命令输出时使用。
评论
那&在1之前在2>&1中表示什么
–没人
17年6月27日在23:46
@Nobody“&表示其后是文件描述符而不是文件名。” stackoverflow.com/a/818284/5948237
– Vivek Chavda
17年9月19日在18:41
@VivekChavda 2(stderr)为何不需要这种区别?
–迪安树脂
18/12/2在5:54
我只是从链接的答案中复制而已,我本人对此并不熟悉。这是该答案下的评论:stackoverflow.com/questions/818255/…
– Vivek Chavda
18/12/3在21:07
最后两个句子(“实际上,它防止显示命令(stdout和stderr)的任何输出。当您不在乎命令输出时使用。”)应加粗。最后,这是一条非常重要的信息。我希望它能突出更多。
–加百利·斯台普斯
19年2月7日在22:24
#2 楼
STDIN用0表示,STDOUT用1表示,STDERR用2表示。/ dev / null是位存储桶:在其中转储不需要的任何内容。
因此,STDOUT被重定向到位桶(垃圾桶),STDERR被重定向到STDOUT所在的位置:位桶。
您也可以执行以下操作:
>/dev/null 2>/dev/null
评论
很好的解释。我也认为上面有一个快捷方式:&> / dev / null
–芯片城堡
13年8月1日在20:48
快捷方式&>和>&有点烦人,因为它们是“ bashism”-它们确实可以与bash shell一起使用,但与某些其他POSIX兼容shell不兼容。 > ... 2>&1 ...语法可在每个POSIX兼容shell中使用。
– Mikko Rantalainen
'18 Sep 11'在6:05
评论
不知道为什么这个问题被标记为骗子,它显然已经开放了3年,甚至还没有发布。穆鲁已经赢得了胜利,尽管时不时地处于失败的判断中,但我相信他会结束这个问题,即使您说的是大三岁也是如此。我既没有阅读问题也没有阅读答案,但我认为他的判断是基于这样的事实,那就是另一个答案更好。巧合的是,我刚刚实现了:“ bash -c“ echo $ IntBrightness | sudo tee $ backlight”> / dev / null`可以抑制不必要的终端输出。您可以使用mod进行标记,并要求将所有的重复候选答案都合并到此问答中。似乎需要做很多工作...
我只是注意到您是OP,而不是路人。我已经审查了常见问题解答,并投票希望重新提出您的问题。我认为您的浏览器更通用,并且适合我今晚的需求(根据夜间或白天的亮度水平消除屏幕上的650或3000回声。而另一个问题严格地是关于错误消息(文件描述符2> / dev / null),一个臭名昭著的例子是Zenity和Yad中的Gtk瞬态父级,它们使用Dialog Windows而不是完整窗口。 null