Когда я проверяю список процессов и 'grep' выбирает те, которые мне интересны, сам grep
также включается в результаты. Например, для списка терминалов:
$ ps aux | grep terminal
user 2064 0.0 0.6 181452 26460 ? Sl Feb13 5:41 gnome-terminal --working-directory=..
user 2979 0.0 0.0 4192 796 pts/3 S+ 11:07 0:00 grep --color=auto terminal
Обычно я использую ps aux | grep something | grep -v grep
, чтобы избавиться от последней записи... но это не элегантно :)
Есть ли у вас более элегантный хак для решения этой проблемы (помимо обертывания всех команд в отдельный скрипт, что тоже неплохо)
В зависимости от окончательного варианта использования Вы часто хотите предпочесть Awk вместо этого.
ps aux | awk '/[t]erminal/'
Это особенно верно, когда у Вас есть что-то как
ps aux | grep '[t]erminal' | awk '{print $1}' # useless use of grep!
, где, очевидно, regex может быть включен в сценарий Awk тривиально:
ps aux | awk '/[t]erminal/ { print $1 }'
, Но действительно, не переосмысливайте это сами. pgrep
и друзья были вокруг в течение долгого времени и обрабатывают это все пространство задач намного лучше, чем самые специальные перереализации.