2>/dev/null 是什么意思?

2>/dev/null 是什么意思?

我想要对以下命令行进行简要解释:

grep -i 'abc' content 2>/dev/null 

答案1

>操作符通常将输出重定向到文件,但也可以重定向到设备。您也可以使用>>附加操作。

如果您未指定数字,则假定使用标准输出流,但您也可以重定向错误:

> file将 stdout 重定向到文件
1> file将 stdout 重定向到文件

2> file将 stderr 重定向到文件

&> file将 stdout 和 stderr 重定向到文件
> file 2>&1将 stdout 和 stderr 重定向到文件

/dev/null是空设备,它接受任何您想要的输入并将其丢弃。它可用于抑制任何输出。

请注意,这> file 2>&1是一个较旧的语法,它仍然有效,&> file更简洁,但在较旧的系统上不起作用。

答案2

简而言之,它将stderrfd2)重定向到黑洞(丢弃命令的输出)。

一些常用的重定向模式:

command > /dev/null 2>&1 &

command在后台运行,丢弃stdoutstderr

command >> /path/to/log 2>&1 &

运行command,并将 附加stdoutstderr日志文件。

在 Bash 4+ 中,可以使用更短(但可读性较差)的形式

command &>> /path/to/log

答案3

/dev/null在 Linux/Unix 中被视为黑洞,因此​​您可以将任何东西放入其中,但无法从中取回/dev/null

进一步说,这2>意味着你正在将>stderr重定向2到黑洞/dev/null

你的命令是:

grep -i 'abc' content 2>/dev/null 

不要尝试以这样的另一个正斜杠结尾 - 2>/dev/null/(它不是一个目录)。

答案4

首先我们需要讨论一下>运算符。它将符号左侧的输出重定向到符号右侧。

因此必须认为:

源命令 > 目标文件

我们必须知道的其他事情

0 means stdin 
1 means stdout(useful output)
2 means stderr(error message output)

作为默认,其工作原理如下command 1 > target_file

至于/dev/null--> 它是一个特殊的文件,它丢弃了到它的通道输出重定向。

所以在你的问题中这意味着

运行命令并不要显示错误消息丢弃它们

相关内容