もう1つ、初級小ネタ。
DebianやUbuntuで、あるパッケージがインストールされているか否か調べるのに、今まで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)を常用していない兼業状態なので、安直にネットで拾った情報に頼ってしまう。どうしたものか。