【问题标题】:What does the 2> mean on the Unix command-line? [closed]Unix 命令行中的 2> 是什么意思? [关闭]
【发布时间】:2013-10-01 05:49:37
【问题描述】:
scriptlist=`ls $directory_/fallback_* 2> /dev/null`

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

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

【问题讨论】:

  • ${script} $* >> $logfile 2>&1 < /dev/null `2>&1 In the shell, what is “ 2>&1 ”?

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


【解决方案1】:

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

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

综合起来,这行代码将命令ls $directory_/fallback_* 2> /dev/null的标准输出存储到变量scriptlist中,标准错误被丢弃。

【讨论】:

    【解决方案2】:
    scriptlist=`ls $directory_/fallback_* 2> /dev/null`
    

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

    另外,2> 用于 redirecting 的输出 stderr/dev/nullnowhere)。

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-06
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        • 2014-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多