存在しないプロセスを検索する場合、例えば
$ 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 内にラップする必要があるだけです。