2015-12-03 82 views
1

我想檢查一個特定的服務是否通過Linux終端運行,並且下面的命令似乎沒有按預期過濾結果。不知道我做錯了什麼......管道grep給太多的結果

service --status-all | grep subversion 

這將產生輸出的幾行,包括,例如,

[ ? ] Networking 

我不知道爲什麼發生這種情況,因爲該字符串「顛覆」 不包含在上述線內...

+1

怎麼樣'服務顛覆狀態; RET = $ ?; echo $ ret'? – Cyrus

+0

謝謝,那肯定會工作,但我仍然想知道爲什麼grep會產生額外的結果... – Andrew

回答

2

你應該使用:

service --status-all |& grep subversion 

因爲沒有一個狀態([ ? ])的服務都發送到stderr,這是不是流水線到grep(然後它被印在終端上如何)。

|&發送標準錯誤到標準輸出,所以grep能夠過濾它。

1

嘗試這個和重定向stderr(2)到stdout(1):

service --status-all 2>&1 | grep subversion