ps aux | grep hogehoge で grep プロセスを出さない方法

友人にクイズで出されてわからなかったのだが、

$ ps aux | grep init
root         1  0.0  0.0  23820  2016 ?        Ss   03:02   0:00 /sbin/init
account1  3154  0.0  0.0   7176  1016 pts/0    S+   14:17   0:00 grep init

となるが、どうやって grep プロセスが表示に含まれるのを除去するか。もちろん ps aux | grep init | grep -v grep とかでもよいが、grep 1回で済ますには・・・?

$ ps aux | grep '[i]nit'
root         1  0.0  0.0  23820  2016 ?        Ss   03:02   0:00 /sbin/init

衝撃を受けました。

追記

pgrep -lf init という技も教えてもらいました。

追記2

$ touch init
$ ps aux | grep [i]nit
root         1  0.0  0.0  23816  2016 ?        Ss   00:01   0:00 /sbin/init
account1  2505  0.0  0.0   7176  1012 pts/0    S+   00:19   0:00 grep init
$ rm init
$ ps aux | grep [i]nit
root         1  0.0  0.0  23816  2016 ?        Ss   00:01   0:00 /sbin/init

bash でも grep のパターンはシングルクォートで囲む必要がある。囲んでいないと、カレントにマッチするファイルがあった場合に bash がファイル名に展開してしまう。grep には上記のように展開済みの引数が渡されてしまい、意図した動作にならない。