2015-12-03 3 views
1

Я пытаюсь проверить, работает ли конкретная служба через терминал Linux, и следующая команда, похоже, не фильтрует результаты, как ожидалось. Не уверен, что я делаю неправильно ...Трубопроводы для Grep дают слишком много результатов

service --status-all | grep subversion 

Это производит несколько линий продукции, в том числе, например,

[ ? ] Networking 

Я не знаю, почему это происходит, так как строки "подрывной деятельности" не содержится в строке выше ...

+1

Как насчет статуса службы subversion; RET = $ ?; echo $ ret'? – Cyrus

+0

Спасибо, это определенно сработает, но мне все равно интересно, почему grep производит дополнительные результаты ... – Andrew

ответ

2

Вы должны использовать:

service --status-all |& grep subversion 

Поскольку услуги, не имеющие статуса ([ ? ]) направляются в стандартный поток ошибок, который не является конвейером, чтобы Grep (а затем печатается на терминале независимо).

|& отправляет stderr в stdout, поэтому grep может его фильтровать.

1

Попробуйте это и перенаправлять stderr (2) на стандартный вывод (1):

service --status-all 2>&1 | grep subversion 
Смежные вопросы