Overview
$ ps aux | grep zsh
qiita 10548 0.6 0.0 4268056 808 s000 S+ 11:43AM 0:00.00 grep zsh
qiita 1294 0.4 0.0 4334752 2896 s000 S 10:04AM 0:00.22 -zsh
grep で grep 自身のプロセスは無視して表示させたい時ありますよね。
そんな時に使える方法を2つ紹介します ![]()
grep -v を使う
多分よく知られている方法。
$ ps aux | grep zsh | grep -v 'grep zsh'
qiita 1294 0.0 0.0 4334752 2896 s000 S 10:04AM 0:00.23 -zsh
もう一回パイプして grep -v 'grep *' で自身のプロセスを除外できます。
[](brackets) を使う
grep -v でもいいんですが、もう一個パイプを挟んでいる関係で余計にプロセスをフォークしていることが気になったりしませんか?そんな時は [](brackets) を使いましょう。
$ ps aux | grep [z]sh
qiita 1294 0.3 0.0 4334752 2896 s000 S 10:04AM 0:00.24 -zsh
仕組みとしては z 1文字 + sh という条件で検索が実行されるが、grep に渡されている文字列は [z]sh なので z 1文字 + sh という条件には引っかからないので表示されませんよ、という話。
エレガントですね。