scriptlist=`ls $directory_/fallback_* 2> /dev/null`
2>该命令部分的具体目的是什么?我省略了它并运行了命令,它工作正常。
而且,如果 ls 的输出存储在 /dev/null 文件中,那么该变量scriptlist将包含什么。当我执行代码时,输出在变量中,而文件中没有任何内容null。如果我们删除2,则输出在文件中而不是变量中。知道这行代码到底在做什么吗?
scriptlist=`ls $directory_/fallback_* 2> /dev/null`
2>该命令部分的具体目的是什么?我省略了它并运行了命令,它工作正常。
而且,如果 ls 的输出存储在 /dev/null 文件中,那么该变量scriptlist将包含什么。当我执行代码时,输出在变量中,而文件中没有任何内容null。如果我们删除2,则输出在文件中而不是变量中。知道这行代码到底在做什么吗?
文件描述符2代表标准错误。(其他特殊文件描述符包括0标准输入和1标准输出)。
2> /dev/null表示将标准错误重定向到/dev/null. /dev/null是一种特殊设备,会丢弃写入其中的所有内容。
综上所述,这行代码将 command 的标准输出存储ls $directory_/fallback_* 2> /dev/null到变量scriptlist中,标准错误被丢弃。
知道'2'到底在做什么
这2是一个引用的文件描述符STDERR。
2> /dev/null意味着STDERR被重定向到空设备/dev/null。
您提到的完整行将返回的输出(即STDOUT(忽略STDERR))存储ls $directory_/fallback_*到变量scriptlist中。