ps の結果に 'grep' が表示されないようにするにはどうすればよいですか?

ps の結果に 'grep' が表示されないようにするにはどうすればよいですか?

存在しないプロセスを検索する場合、例えば

$ ps aux | grep fnord                          
wayne    15745  0.0  0.0  13580   928 pts/6    S+   03:58   0:00 grep fnord

もちろん、私は grep については気にしません。それはプロセスを検索するのと同じくらい意味がありますps

grep が結果に表示されないようにするにはどうすればよいですか?

答え1

解決策は見つかったキーチェーン

$ ps aux | grep "[f]nord"

文字を括弧で囲み、文字列を引用符で囲むことで、「文字 'f' の後に 'nord' が続く文字を検索する」という正規表現を検索します。

しかし、パターンに括弧を入れたので、「f」の後に「]」が続くため、grep結果リストには表示されません。いいですね!

答え2

私が使用するもう 1 つのオプション (特に、プロセスが実行中かどうかを確認する場合) は、pgrep コマンドです。このコマンドは、一致するプロセスを検索しますが、検索の grep 行は表示しません。正規表現やエスケープ処理を必要とせず、すばやく検索できるため、気に入っています。

pgrep fnord

さらに、一致しているプロセスIDとプロセス名の両方を出力するには、(フェマー

pgrep -l fnord

答え3

理想的な解決策はBriGuyが提示したものです

pgrep fnord 

しかし、それをしたくない場合は、一致するすべての行を除外することができます。グレップと:

ps aux | grep -v grep | grep "fnord"

答え4

zsh では、grep fnord =(ps aux).

考え方としては、まず を実行しps aux、その結果をファイルに保存し、grepそのファイルに対して を使用します。ただし、zsh の「プロセス置換」を使用するため、ファイルはありません。

例えば、

ps aux > ps.txt
grep fnord ps.txt
rm ps.txt

結果は同じになるはずです。

一般的なコメント他の回答のいくつかについて。いくつかは、入力するには複雑すぎたり長すぎたりします。正しいことだけでなく、使いやすくなければなりません。しかし、それはそれらのソリューションの一部が悪いという意味ではありません。使いやすくするためには、ミニ UI 内にラップする必要があるだけです。

関連情報