Unix 命令行上的 `2>` 是什么意思?

问题描述 投票:0回答:3
scriptlist=`ls $directory_/fallback_* 2> /dev/null`

命令的

2>
部分的目的到底是什么? 我省略了它并运行了命令,它工作正常。

而且,如果 ls 的输出存储在 /dev/null 文件中,变量

scriptlist
将包含什么? 当我执行代码时,输出在变量中,文件中什么也没有
null
。如果我们删除
2
,那么输出在文件中而不是变量中。 知道这行代码到底在做什么吗?

linux bash shell unix command-line-interface
3个回答
54
投票

文件描述符

2
代表标准错误。 (其他特殊文件描述符包括
0
用于标准输入和
1
用于标准输出)。

2> /dev/null
表示将标准错误重定向到
/dev/null
/dev/null
是一种特殊的设备,它会丢弃写入它的所有内容。

综上所述,这行代码将命令

ls $directory_/fallback_* 2> /dev/null
的标准输出存储到变量
scriptlist
中,标准错误被丢弃。


8
投票

知道“2”在这里做什么

这里

2
是一个文件描述符,指的是
STDERR
.

2> /dev/null
意味着
STDERR
被重定向到空设备
/dev/null
.

您提到的完整行存储输出,即

STDOUT
(忽略
STDERR
),由
ls $directory_/fallback_*
返回到变量
scriptlist
中。


6
投票
scriptlist=`ls $directory_/fallback_* 2> /dev/null`

因为您已经用反引号将整行

ls $directory_/fallback_* 2> /dev/null
括起来,
ls
命令的输出存储在
scriptlist
变量中。

此外,

2>
用于重定向
stderr
的输出到
/dev/null
无处)。

© www.soinside.com 2019 - 2024. All rights reserved.