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 

しかし、そうしたくない場合は、以下に関連するすべてを除外できます。grepそして:

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にカプセル化する必要があります。

関連情報