2013-10-01 58 views
4
scriptlist=`ls $directory_/fallback_* 2> /dev/null` 

2>部分命令的目的究竟是什么? 我省略了它并运行命令,它工作正常。2>在Unix命令行中的含义是什么?

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

+1

'$ {script} $ * >> $ logfile 2>&1&1 <'代表什么? 回答:[在shell中,什么是“2>&1”?](http://stackoverflow.com/questions/818255/in-the-shell-what-is-21) – Smith

回答

3

任何想法究竟是什么“2”是做在这里

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

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

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

7

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

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

放在一起,这行代码存储命令ls $directory_/fallback_* 2> /dev/null INT变量scriptlist(和标准错误被丢弃)的标准输出。

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

正如您已经封闭在反引号整行ls $directory_/fallback_* 2> /dev/null, 的ls命令的输出被存储在scriptlist变量。

此外,2>redirecting所述的stderr输出到/dev/null 无处 )。

相关问题