При выполнении фильтрации grep по каналам, как в следующем примере,
$ ps -ef | grep 24604
username 18660 24604 0 16:38 pts/3 00:00:00 ps -ef
username 18661 24604 0 16:38 pts/3 00:00:00 grep --color=auto 24604
username 24604 23548 0 Aug13 pts/3 00:00:00 /bin/bash
сама команда grep является частью результатов, и обычно - я отфильтровываю ее другим grep -v,
а именно:
$ ps -ef | grep 24604 | grep -v grep
username 20375 24604 0 16:40 pts/3 00:00:00 ps -ef
username 24604 23548 0 Aug13 pts/3 00:00:00 /bin/bash
Есть ли grep
аргумент, который отфильтрует строку grep?
(Или любой другой трюк, чтобы избежать grep -v
?)
Обычно это делается путем заключения первого символа в скобки:
$ ps auxw | grep [c]ron
root 5710 0.0 0.0 10640 1800 ? Ss 14:41 0:00 /usr/sbin/cron
$
Это работает, потому что cron
больше не появляется в grep
s командная строка ([c] ron делает). Более современный подход - использовать pgrep
команда, если есть.
Как насчет:
pgrep -l 24604
Это действительно зависит от использования, но pgrep
обычно больше подходит для автоматизации, что, вероятно, и пытаетесь сделать вы.