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

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

我只是想知道为什么你不能在某些--help命令上进行grep。

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

grep --help | grep null它运行良好。

答案1

ifconfig似乎打印它的帮助标准错误代替标准输出。由于管道仅将标准输出传递给下一个程序,grep而不接收输出。

解决这个问题的一个简单方法是重定向stderr 到 stdout。这里有一个如何在ifconfig的帮助下做到这一点的例子。

ifconfig --help 2>&1 | grep unix

产生想要的输出

unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)

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

相关内容