grepがそれ自体で返されるのを防ぐ方法

grepがそれ自体で返されるのを防ぐ方法
# ps -ef | grep gre
root     15067 63614  0 11:03 pts/0    00:00:00 grep --color=auto gre

他の例

# ps -ef | grep sshd
root      1186     1  0 Jul26 ?        00:00:00 /usr/sbin/sshd -D
root     15439 63614  0 11:05 pts/0    00:00:00 grep --color=auto sshd

grepコマンドが自動的に検出され、フィールドに返されないようにするにはどうすればよいですか?

答え1

この作業にはより良いアプローチが使用されますpgrep。最近、ほとんどのシステムで利用できるようです。

答え2

やや陳腐で厄介な方法がたくさんあります。私が好きなのは、検索文字列の文字の前に二重バックスラッシュを挿入することです。

ps -ef | grep ss\\hd

\\ はシェルで \ として解釈され、 \h は grep で 'h' と同じように解釈されます。したがって、以前と同様に「sshd」を効果的に検索します。ただし、独自のコマンド文字列には「sshd」が含まれず、「ss \ hd」が含まれているため、それ自体は一致しません。

答え3

リテラルテキストと一致しない正規表現になるようにパターンを変更します。

    ps -ef | grep [s]shd

答え4

あなたに必要なものps -e | grep sshd

ps -efプロセスとそのパラメータをリストし、ps -eプロセスのみをリストします。)

関連情報