我只是想知道为什么你不能在某些--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