【问题标题】:why do I need 2>&1 before grep when using a pipe为什么在使用管道时在 grep 之前需要 2>&1
【发布时间】:2014-09-18 11:42:31
【问题描述】:

当我运行这个命令nginx -V|grep stub 时,我得到了纯粹的nginx -V 命令的输出并且没有看到高亮文本。

但是当我将 stderr 重定向到 stdin nginx -V 2>&1|grep stub 时,搜索到的文本被突出显示。

我想知道为什么我得到了不同。似乎 grep 是在 stderr 内容中执行的。真的吗?

【问题讨论】:

    标签: redirect grep pipe


    【解决方案1】:

    nginx -V 输出被发送到stderr,管道默认只捕获stdout

    您需要将stderr 重定向到stdout,以便管道(因此grep)可以看到它。

    【讨论】:

    • 为什么输出到stderr就好像nginx -V执行不成功一样?
    • 我不能肯定地说,但也许这是对将使用输出发送到stderr 以获取无效参数的一般做法的误解。我相信将帮助/版本输出发送到stderr 是事物的一般行为,直到一分钟前我去寻找该行为的历史并发现明确请求的帮助/版本输出通常会发送到stdout 而错误使用输出到stderr
    • 我明白了。非常感谢!
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2021-07-19
    • 2017-03-30
    • 2015-08-19
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2012-02-23
    相关资源
    最近更新 更多