我正在尝试检查特定服务是否通过Linux终端运行,并且以下命令似乎没有按预期过滤结果。不确定我做错了什么......
service --status-all | grep subversion
这会产生几行输出,例如
[ ? ] Networking
我不确定为什么会这样,因为字符串“subversion”不包含在上面的行中...
答案 0 :(得分:2)
您应该使用:
service --status-all |& grep subversion
因为没有状态([ ? ]
)的服务被发送到stderr,而stderr没有流水线化为grep(然后无论如何都打印在你的终端上)。
|&
将stderr发送到stdout,因此grep能够过滤它。
答案 1 :(得分:1)
尝试此操作并将stderr(2)重定向到stdout(1):
service --status-all 2>&1 | grep subversion