【问题标题】:What does & mean in a shell code script redirect stderr to stdout (2>&1)? [duplicate]& 在 shell 代码脚本中将 stderr 重定向到 stdout (2>&1) 是什么意思? [复制]
【发布时间】:2012-11-11 19:37:55
【问题描述】:

我知道2>&1 可以让您将stderr 重定向到stdout 的任何位置。

  • 但是& 在这个shell 代码中是什么意思?不是追加操作符吗?
  • 是否可以将所有描述符流式传输到标准输出?

【问题讨论】:

    标签: linux shell stdout stderr


    【解决方案1】:

    绝对准确 - 运算符 >& 将在运算符之前记录的描述符合并到在运算符之后写入的描述符。

    所以如上所述,运营商是>&,问& 是什么意思没有任何意义。

    关于您的第二个问题 - 我认为只有一个操作员是不可能的/您需要为您需要的每个操作重复它。

    控制台应用程序的标准/默认描述符是:

    0 - stdin
    1 - stdout
    2 - stderr
    

    任何其他都可以由应用程序定义...

    【讨论】:

      【解决方案2】:

      当您编写“控制台”程序时,您有 2 个不同的流可以将输出发送到 stdout 和 sterr。

      stout 用于正常输出,sterr 用于打印错误消息,默认情况下两者都打印在控制台上。什么是“输出”和什么是“错误”并没有明确的划分,无论如何,如果您想重定向到一个文件,您可以将输出和错误重定向到两个不同的文件 - 但如果您希望两者都在同一个文件上(或管道)您最好的选择是将标准错误重定向到标准输出,然后将标准输出转储到文件中

      &符号的含义见http://en.wikipedia.org/wiki/Ampersand#Unix_shells

      【讨论】:

        猜你喜欢
        • 2015-05-29
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 2021-09-08
        • 2010-12-25
        • 2017-08-15
        • 2017-04-17
        • 2013-04-08
        相关资源
        最近更新 更多