【 man 】コマンド(検索編)――コマンドのレファレンスマニュアルを全文検索する:Linux基本コマンドTips(90)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「man」コマンドの応用的な使い方を紹介します。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、コマンドのレファレンスマニュアルを表示する「man」コマンドの応用的な使い方として、マニュアル内を全文検索する方法を紹介します。
manコマンドとは?
「man」は、コマンドの“レファレンスマニュアル”を表示するためのコマンドです。「man コマンド名」で、コマンドラインで使用するほとんどのコマンドのマニュアルを参照することができます。
- [参考]manコマンド(基本編)――コマンドのレファレンスマニュアルを表示する(本連載 第86回)
- [参考]manコマンド(章番号編)――章番号を指定する/マニュアルの場所を確認する(本連載 第87回)
manコマンドの主なオプション
manコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-C | --config-file=設定ファイル | 設定ファイルを指定する |
-M | --manpath=パス | manファイルの検索パスを指定する |
-d | --debug | デバッグメッセージを表示する |
-D | --default | 全てのオプションを初期値にする |
-u | --update | キャッシュを更新する |
短いオプション | 長いオプション | 意味 |
---|---|---|
-a | --all | 一致した全てのマニュアルページを表示する |
-S/-s | --sections=リスト | 表示対象とするセクションのリストを指定する(リストは「:」で区切る) |
--regex | 正規表現に一致した全てのマニュアルページを表示する | |
--wildcard | ワイルドカードに一致した全てのマニュアルページを表示する | |
--names-only | 「--regex」と「--wildcard」による指定対象を、コマンドの名前部分のみにする | |
-K | --global-apropos | キーワードを全文検索し、該当する全てのマニュアルページを表示する |
-f | --whatis | 該当するコマンドを一覧表示する(概要部分から検索。「whatis」コマンド相当) |
-k | --apropos | 該当するコマンドを一覧表示する(単語の一部だけでも可能。「apropos」コマンド相当) |
-i | --ignore-case | 大文字小文字を区別しないで検索する(デフォルト) |
-I | --match-case | 大文字小文字を区別して検索する |
-w | --where/--path/--location | マニュアルファイルがどこにあるかを表示する |
-W | --where-cat/--location-cat | 整形済みのマニュアルファイルがどこにあるかを表示する |
-l | --local-file | コマンド名ではなく、表示するファイルを指定する(ファイル名として「-」を指定すると標準入力から読み込む) |
##短いオプション | 長いオプション | 意味 |
---|---|---|
-P | --pager=コマンド | 出力を表示するコマンドを使用する(デフォルトは「less」コマンド) |
-r | --prompt=文字列 | lessコマンド(デフォルトの表示コマンド)のプロンプト |
-E | --encoding=ENCODING | 出力時のエンコーディング |
--no-hyphenation/--nh | ハイフンによる行末処理を無効にする | |
--no-justification/--nj | 均等割り付けを無効にする | |
-t | --troff | ページ整形に「groff」を使用する |
-H | --html[=ブラウザ] | Webブラウザで表示する(無指定時は「elinks」コマンドを使用する) |
マニュアルを全文検索する
「man -K キーワード」を実行すると、manコマンドで表示されるマニュアルの全文から指定したキーワードを検索し、順次表示します。
デフォルトでは大小文字を区別しません。「-I」オプションを付けると、大小文字を区別して検索します。区別しないことを明示したい場合は、「-i」オプションを使います。また、正規表現を使いたい場合は、「--regex」オプションを使用します。
コマンド実行例
man -K /etc/passwd
(マニュアル内で「/etc/passwd」が使われているコマンドを順番に表示する)
man -K 1 /etc/passwd
(第1章(一般コマンド)のマニュアル内で「/etc/passwd」が使われているコマンドを順番に表示する)
man -KI --regex "\bPASSWORD\b"
(大文字の「PASSWORD」という単語が使われているコマンドを順番に表示する)
該当するコマンドがあると、まず、最初に見つけたマニュアルの本文が表示されます(画面1)。ここで「q」キーを押してマニュアルの表示を終了すると、次のコマンドを表示するかどうかを確認するメッセージが表示されます(画面2)。
コマンドのリストを表示する
「whatis」コマンドや「apropos」コマンドでは、該当するコマンドが一覧表示されますが、manコマンドの「-K」オプションの場合は、該当するコマンドのマニュアルが順次表示されるため、リストをざっと眺めることができません。
そこで「-w」オプションを使うと、疑似的にではありますが、コマンドのリストを表示することができます。「-w」オプションは“マニュアルのファイルがどこにあるかを表示する”というオプションですが、manコマンドのファイル名は「コマンド名.章番号」または「コマンド名.章番号.gz」なので、ファイル名からコマンド名が分かります。
- [参考]whatisコマンド――コマンドを検索する(「man -f」相当)(本連載 第88回)
- [参考]aproposコマンド――キーワードに関連するコマンドを検索する(「man -k」相当)(本連載 第89回)
コマンド実行例
man -Kw /etc/passwd
(指定したキーワードが含まれるコマンドのリストを表示する)(画面3)
「grep」コマンドで検索する
manコマンドで表示されるマニュアルの本体は、gzip形式で圧縮されたテキストファイルなので、gzipファイルに対応した「grep」コマンドである「zgrep」コマンドでキーワード検索することができます。
例えば、manファイルが「/usr/share/man/章番号/」にある場合、「zgrep キーワード /usr/share/man/*/*」のように指定します。なお、日本語ファイルが「/usr/share/man/ja/」下にまとまっている場合は、別途指定してください(コマンド実行例参照※)
【※】※zgrepコマンドが「-r」オプションに対応している場合は「zgrep -r キーワード /usr/share/man/」のように指定することもできます。
- [参考]grepコマンド――特定の文字を含む行を抽出する(本連載 第9回)
- [参考]gzipコマンド/gunzipコマンド――ファイルを圧縮する/伸張する(本連載 第39回)
コマンド実行例
zgrep /etc/passwd /usr/share/man/ja/*/*
(日本語版のmanファイルから「/etc/passwd」というキーワードを検索する)
zgrep /etc/passwd /usr/share/man/*/* /usr/share/man/ja/*/*
(英語版と日本語版のmanファイルから「/etc/passwd」というキーワードを検索する)(画面4)
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.