为什么这个grep命令不起作用?

Modified on: Sat, 09 Jun 2018 14:11:23 +0800

当我尝试以这种方式使用grep时:

service --status-all | grep network

它仍会列出所有服务,即使我将其传输到grep中以将其限制为仅限“网络”字符串


  

事实之后:

  
  

注意到这个文章这解释了为什么命令行为这样,这就是我喜欢的linux,总有一个很好的理由,但不是必要的直观

最佳答案

尝试:

service --status-all |& grep network

命令行应用程序可以打印到两个文本流,称为标准输出(标准输出)和标准错误(stderr)。默认情况下,终端只显示相同的输出。

Stdout的编号为1,stderr的编号为2.默认情况下,重定向操作符,如>|<

|&将stdout和stderr一起连接到右侧标准输入(stdin)流上的进程,这使grep按预期工作。

我不知道为什么service --status-all在这里打印到stderr,但一般来说,拥有一个单独的stderr流是非常有用的,因为它让你即使在stdout时也能看到错误沉默了。

作者:Flimm

相关问答

添加新评论