連載
» 2017年03月02日 05時00分 UPDATE

Linux基本コマンドTips(90):【 man 】コマンド(検索編)――コマンドのレファレンスマニュアルを全文検索する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「man」コマンドの応用的な使い方を紹介します。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

連載目次

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、コマンドのレファレンスマニュアルを表示する「man」コマンドの応用的な使い方として、マニュアル内を全文検索する方法を紹介します。

manコマンドとは?

 「man」は、コマンドの“レファレンスマニュアル”を表示するためのコマンドです。「man コマンド名」で、コマンドラインで使用するほとんどのコマンドのマニュアルを参照することができます。



manコマンドの書式

man [オプション] コマンド名

※[ ]は省略可能な引数を示しています




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)。

画面1 画面1 「man -K /etc/passwd」で1つ目に見つかったコマンドが表示された
画面2 画面2 表示を終了すると、次のコマンドを表示するかどうかを確認するメッセージが表示される


コマンドのリストを表示する

 「whatis」コマンドや「apropos」コマンドでは、該当するコマンドが一覧表示されますが、manコマンドの「-K」オプションの場合は、該当するコマンドのマニュアルが順次表示されるため、リストをざっと眺めることができません。

 そこで「-w」オプションを使うと、疑似的にではありますが、コマンドのリストを表示することができます。「-w」オプションは“マニュアルのファイルがどこにあるかを表示する”というオプションですが、manコマンドのファイル名は「コマンド名.章番号」または「コマンド名.章番号.gz」なので、ファイル名からコマンド名が分かります。

コマンド実行例

man -Kw /etc/passwd

(指定したキーワードが含まれるコマンドのリストを表示する)(画面3


画面3 画面3 「/etc/passwd」が書かれているコマンドのmanファイルが一覧表示された(件数が多いので「more」コマンドを使用しています)


「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/」のように指定することもできます。



コマンド実行例

zgrep /etc/passwd /usr/share/man/ja/*/*

(日本語版のmanファイルから「/etc/passwd」というキーワードを検索する)

zgrep /etc/passwd /usr/share/man/*/* /usr/share/man/ja/*/*

(英語版と日本語版のmanファイルから「/etc/passwd」というキーワードを検索する)(画面4


画面4 画面4 zgrepコマンドで英語版と日本語版のmanファイルから検索する


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。