grep on --help 对某些命令不起作用

0xA*_*ffe 3 grep

我只是想知道为什么您不能 grep 某些 --help 命令。

例如,如果我使用ifconfig --help | grep unix它仍然打印整个帮助而不是 unix 行。

grep --help | grep null它工作正常。

drc*_*drc 6

ifconfig似乎将其帮助打印到stderr而不是stdout。由于管道只将标准输出传递给下一个程序,因此grep不接收输出。

一个简单的方法是stderr重定向到 stdout。这是一个关于如何在ifconfig's 帮助下做到这一点的例子。

ifconfig --help 2>&1 | grep unix

产生想要的输出

unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
Run Code Online (Sandbox Code Playgroud)

更新2>&1实际上是将(>)stderr(2)重定向到与&stdout(1)相同的输出()。由于通常 stdout 和 stderr 都会打印到您的终端,因此您看不到区别,但对于管道,实际的流很重要。