我只是想知道为什么您不能 grep 某些 --help 命令。
例如,如果我使用ifconfig --help | grep unix它仍然打印整个帮助而不是 unix 行。
但grep --help | grep null它工作正常。
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 都会打印到您的终端,因此您看不到区别,但对于管道,实际的流很重要。