grep(1)しない話

もう1つ、初級小ネタ。

DebianUbuntuで、あるパッケージがインストールされているか否か調べるのに、今までdpkg(1)とgrep(1)を組み合わせていた。

dpkg -l | grep acpi

ところで先日、dpkg(1)のmanを見たところ:

-l, --list package-name-pattern...

package-name-pattern」という怪しい文言が……。

dpkg --help」の内容も:

-l|--list [<pattern> ...]

pattern」! 実に怪しいな。

dpkg-query(1)のmanに:

Normal shell wildchars are allowed in package-name-pattern.

――と書かれていたので、*?[...]といった一般的なワイルドカードが使えるようだ。

dpkg -l 'acpi*'     # acpiで始まるパッケージを探す
dpkg -l '?awk'      # awkで終わる4文字のパッケージを探す
dpkg -l '[gm]awk'   # gawkかmawkを探す

ということで、grep(1)で引っかけたい対象がパッケージ名である場合に限り、シェルのパス名展開と同じワイルドカードでパターンを書けば、grep(1)が不要だと分かった。

もう「お前、何年Debianディストリビューション触ってんだよ!」的な事案である。Ubuntuとは8.04の頃からの付き合いだし、Debianも6.0が出る直前ぐらいから実験用に最小構成インストールの仮想マシンを使ったりしていたのに、この体たらくである。

やっぱりmanを読まないとアカンなあ……しかしLinux(ないしPC-Unix)を常用していない兼業状態なので、安直にネットで拾った情報に頼ってしまう。どうしたものか。