【发布时间】:2014-09-18 11:42:31
【问题描述】:
当我运行这个命令nginx -V|grep stub 时,我得到了纯粹的nginx -V 命令的输出并且没有看到高亮文本。
但是当我将 stderr 重定向到 stdin nginx -V 2>&1|grep stub 时,搜索到的文本被突出显示。
我想知道为什么我得到了不同。似乎 grep 是在 stderr 内容中执行的。真的吗?
【问题讨论】:
当我运行这个命令nginx -V|grep stub 时,我得到了纯粹的nginx -V 命令的输出并且没有看到高亮文本。
但是当我将 stderr 重定向到 stdin nginx -V 2>&1|grep stub 时,搜索到的文本被突出显示。
我想知道为什么我得到了不同。似乎 grep 是在 stderr 内容中执行的。真的吗?
【问题讨论】:
nginx -V 输出被发送到stderr,管道默认只捕获stdout。
您需要将stderr 重定向到stdout,以便管道(因此grep)可以看到它。
【讨论】:
stderr 以获取无效参数的一般做法的误解。我相信将帮助/版本输出发送到stderr 是事物的一般行为,直到一分钟前我去寻找该行为的历史并发现明确请求的帮助/版本输出通常会发送到stdout 而错误使用输出到stderr。