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 楼
简而言之,它将重定向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?
–克雷格·麦昆(Craig McQueen)
2015年11月30日下午6:43
@CraigMcQueen&>是Bash 4中的新功能,前者只是传统方式,我已经习惯了(容易记住)。
–王T
2015年11月30日12:24
@CraigMcQueen根据对此答案的评论,&> / dev / null可能在某些shell中不起作用,但> / dev / null 2>&1将在所有POSIX兼容shell中起作用。
–堆栈下溢
19年1月6日在23:41
为什么2>&1而不是2&1>?
– Marienbad
19年3月11日在21:30
@marienbad实际上是一个值得发布的问题:-)语法是fn> target,其中fn是文件号(通常为0-2,某些程序定义了更多数字),target通常是文件名,但这里是另一个文件号-前缀为&的语法是“我想要一个文件号而不是文件名”。
–toolforger
19年6月7日在4:12
#3 楼
/dev/null
在Linux / Unix中被视为黑洞,因此您可以在其中放入任何内容,但无法从/dev/null
取回。进一步,
2>
表示您正在重定向(例如,>
)将stderr(即2
)插入黑洞(即/dev/null
)中。您的命令是:grep -i 'abc' content 2>/dev/null
不要尝试结束还有另一个这样的正斜杠-
2>/dev/null/
(它不是目录)。#4 楼
grep -i'abc'内容将生成显示在控制台上的输出,包括任何错误。指定
2>/dev/null
将滤除错误,以便不将其输出到您的控制台。更详细:
2表示错误描述符,将错误写入该描述符。默认情况下,它们在控制台上打印出来。
\>
将输出重定向到指定的位置,在这种情况下,/dev/null
/dev/null
是标准Linux设备,您在其中将输出发送给您。要忽略。评论
简洁明了。好答案。
– Sergiy Kolodyazhnyy
19年5月24日在23:13
#5 楼
首先我们需要谈谈>
运算符。它将符号左侧的输出重定向到符号右侧。 因此必须将其视为:
source_command> target_file
其他我们必须知道的其他内容
0 means stdin
1 means stdout(useful output)
2 means stderr(error message output)
默认情况下,它用作
command 1 > target_file
关于
/dev/null
->这是一个特殊的文件,它丢弃重定向到它的通道输出。所以在您的问题中表示
运行命令,不要显示错误消息,请丢弃它们。
评论
了解不同描述符的含义非常有用,以获得更多上下文,并为我节省了更多的Google搜索。
– maulik13
20 Dec 14'在10:05
评论
> / dev / null 2>&1和&> / dev / null之间有区别吗
–亚历山大·米尔斯(Alexander Mills)
17-10-19在0:25
在今天的实践中,我不认为2>&1是较旧的语法,因此&>几年前就无法使用,但两者都是等效的。
–沃伦·希尔
17-10-19在2:47
foobar 2&1>文件不起作用。它将foobar 2命令发送到后台,然后运行命令1,这将失败,它也不会重定向任何输出。您需要foobar> / dev / null 2&> 1或更短的(和imo清除器):foobar&> / dev / null。
– ruohola
20-10-3在12:08