Answers:
简而言之,它将重定向stderr
(fd 2)到黑洞(丢弃命令的输出)。
一些更常见的重定向用例:
command > /dev/null 2>&1 &
command
在后台运行,丢弃stdout
并stderr
command >> /path/to/log 2>&1 &
运行command
并将stdout和stderr附加到日志文件。
在Bash 4+中,可以使用较短(但可读性较差)的形式
command &>> /path/to/log
> /dev/null 2>&1
代替使用&> /dev/null
?
&>
是Bash 4中的新功能,前者只是传统方式,我已经习惯了(容易记住)。
fn>target
,其中fn
是文件号(通常为0-2,某些程序定义了更多数字),target
通常是文件名,但这里是另一个文件号-前缀&
为“我想要文件号而不是文件名”的语法。
grep -i'abc'内容将生成显示在控制台上的输出,包括所有错误。
指定2>/dev/null
将滤除错误,以使它们不会输出到您的控制台。
更详细地:2表示错误描述符,将其写入错误。默认情况下,它们被打印在控制台上。
\>
在这种情况下,将输出重定向到指定位置 /dev/null
/dev/null
是将要忽略的输出发送到的标准Linux设备。
> /dev/null 2>&1
和之间有区别&> /dev/null