36
scriptlist=`ls $directory_/fallback_* 2> /dev/null`

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

而且,如果 ls 的输出存储在 /dev/null 文件中,那么该变量scriptlist将包含什么。当我执行代码时,输​​出在变量中,而文件中没有任何内容null。如果我们删除2,则输出在文件中而不是变量中。知道这行代码到底在做什么吗?

4

3 回答 3

42

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

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

综上所述,这行代码将 command 的标准输出存储ls $directory_/fallback_* 2> /dev/null到变量scriptlist中,标准错误被丢弃。

于 2013-10-01T05:52:53.197 回答
6
scriptlist=`ls $directory_/fallback_* 2> /dev/null`

由于您已将整行括ls $directory_/fallback_* 2> /dev/null在反引号中,因此ls命令的输出存储在scriptlist变量中。

此外,2>用于将输出重定向stderr/dev/null无处)。

于 2013-10-01T06:06:06.670 回答
5

知道'2'到底在做什么

2是一个引用的文件描述符STDERR

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

您提到的完整行将返回的输出(即STDOUT(忽略STDERR))存储ls $directory_/fallback_*到变量scriptlist中。

于 2013-10-01T05:52:36.523 回答