2> 2是什么?在Unix命令行上意味着什么?

时间:2013-10-01 05:49:38

标签: linux bash shell unix command-line-interface

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

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

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

3 个答案:

答案 0 :(得分:15)

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

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

总而言之,这行代码将命令ls $directory_/fallback_* 2> /dev/null的标准输出存储到变量scriptlist中,并且标准错误被丢弃。

答案 1 :(得分:5)

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

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

另外,2>用于redirecting stderr/dev/null的输出(无处)。

答案 2 :(得分:3)

  

知道'2'在这里做了什么

此处2是引用STDERR的文件描述符。

2> /dev/null表示将STDERR重定向到空设备/dev/null

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