在Unix命令行中2>是什么意思?

Smi*_*ith 22 unix linux bash shell command-line-interface

scriptlist=`ls $directory_/fallback_* 2> /dev/null`
Run Code Online (Sandbox Code Playgroud)

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

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

Yu *_*Hao 21

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

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

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


Suv*_*yil 6

scriptlist=`ls $directory_/fallback_* 2> /dev/null`
Run Code Online (Sandbox Code Playgroud)

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

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


dev*_*ull 5

知道这里的“2”到底在做什么

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

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

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