man ページ/ナビゲーション
このガイドでは、man コマンドを用いた man ページの閲覧方法について紹介します。
はじめに
manプログラム
Linux の経験の中で誰もが一度は man コマンドを使ったことがあることでしょう。しかし、man プログラム自体はどちらかと言うとシンプルな構成のように思える一方、単にページをスクロールするだけではない、いくつかの機能が備わっています。このドキュメントが、そうした機能に光を当てる助けとなっていれば幸いです。
Manレイアウト
man ページは主に /usr/share/man ディレクトリに保管されます。しかし、MANPATH 環境変数の場所に置かれてさえいれば、man はその man ページを見つけることができます。Gentoo は通常、MANPATH 変数を /etc/env.d で設定します。これらのディレクトリの中に、manX (ここで X はセクション番号です) という構造のフォルダがいくつかあります。例えば、標準の man のレイアウトは以下のようになっているかもしれません:
user $
ls /usr/share/man | grep man
man0p man1 man1p man2 man3 man3p man4 man5 man6 man7 man8 man9 mann
実際のセクション番号の付け方は、まあまあ標準化されているように見えます。しかし、mann フォルダと、いくつかの man#p フォルダもあることに気づくでしょう。次の表に、上の man ページディレクトリと、そこに何が含まれているかの一覧を示します:
Man ディレクトリ | 説明 |
---|---|
man0p | ここでの "p" は POSIX の略で、名前に p が含まれる他のディレクトリも同様です。このディレクトリ内の man ページはさまざまな POSIX ヘッダファイルの機能について記述しています。 |
man1 | このセクションは標準的なコマンドのためのものです。ほとんどのプログラムは自身の man ページをここに置くことになるので、このセクションが最大になる傾向にあります。 |
man1p | このセクションは 1p で記述されたコマンドの POSIX 版です。基本的なコマンドのみを記述しているので、man1 よりもずっと小さいです。 |
man2 | このセクションは Linux カーネルシステムコールを記述します。 |
man3 | このセクションは C 言語標準ライブラリ関数を記述します。 |
man4 | このセクションはスペシャルデバイスを記述します。これらのデバイスは通常はカーネルに関連するものですが、Xorg-X11 もこの中にエントリを持っています。 |
man5 | このセクションは、特定のファイルの構造と、プログラムがどのファイルを使用するかを記述します。このドキュメントを読んでいる方の中には、Portage のファイル構造の記述を見るための man 5 portage コマンドへの言及や、make.conf の構造のための man 5 make.conf コマンドで馴染み深いという人もいるでしょう。 |
man6 | このセクションはゲームやその他特別な遊び道具を紹介します。 |
man7 | このセクションは標準とその他の雑多な項目を記述します。これらの標準は、文字集合、SQL 文、ISO 標準、正規表現を含みます。 |
man8 | このセクションは管理コマンド (通常は root ユーザによって実行されるコマンド) を記述します。 |
man9 | このセクションはいくぶん存在感が薄いですが、カーネルの様々なパーツのドキュメントを格納することが意図されています。 |
mann | このセクションは主に dev-lang/tcl または dev-lang/tk によって使用されます。"n" は new の略です。 |
これは完全で詳細な一覧ではありませんが、多くの人々が興味を持つであろう man ページをの範囲を網羅できているでしょう。しかしながら、各セクションが何を扱うのかは、この表を見るのと同じくらい簡単に分かるかもしれません。次のチャプターでは、このレイアウトを横断するために man を使う方法について見ていきましょう。
man のレイアウト内で操作する
man のレイアウトから情報を探す
man のレイアウトについて理解できたら、コマンドの man ページを眺めてみることにしましょう。場合によっては、読みたい man ページを絞り込む必要があるかもしれません。最初の方法はセクションによって指定する方法です。セクションについての説明を探すには、次のように man <section> intro を利用することができます:
user $
man 3 intro
## (出力は文書に適切に合わせるために多少異なることがあります) INTRO(3) Linux Programmer's Manual INTRO(3) NAME intro - Introduction to library functions DESCRIPTION This chapter describes all library functions excluding the library functions described in chapter 2, which implement system calls. There are various function groups which can be identified by a letter which is appended to the chapter number: ....
残念ながら、この方法がいつもうまく行くとは限りません。しかしながら幸運にも、複数の結果を返すことがあるコマンド (ライブラリ呼び出しとシステムコマンドが同じ名前を持っている場合など) の中から検索するための方法は、他にもあります。次のように man コマンドの -K
を使用してください:
user $
man -K sleep
/usr/share/man/man0p/time.h.0p.gz? [ynq] n /usr/share/man/man0p/unistd.h.0p.gz? [ynq] n /usr/share/man/man2/alarm.2.gz? [ynq] n /usr/share/man/man2/pause.2.gz? [ynq] n /usr/share/man/man2/futex.2.gz? [ynq] n /usr/share/man/man2/nanosleep.2.gz? [ynq] y /usr/share/man/man2/semop.2.gz? [ynq] q
出力はもっと長くなることもあります。その場合は、もっと絞り込めるキーワードを指定したほうがいいかもしれません。man ページがどこにあるか探す方法が分かったら、次の節では man ページの閲覧について見ていきましょう。
man ページを閲覧する
man ページの閲覧は 2 通りの方法で行うことができます。1 番目の方法は man [man ページ名]
を使う方法です。2 番目の方法は man <セクション> [man ページ名]
です。sys-devel/bc を例に取ります。bc に関して見つかる最初の man ページを閲覧することができます (これはセクション 1 になるでしょう、それが bc に関する man ページを含む最初のセクションだからです):
user $
man bc
bc(1) bc(1) NAME bc - An arbitrary precision calculator language ...
ですが、POSIX バージョンを読みたい場合はどうでしょう? その場合は、2 番目の形式を使用することができます:
user $
man 1p bc
BC(P) POSIX Programmer's Manual BC(P) NAME bc - arbitrary-precision arithmetic language ...
こうすれば、man ページが表示されます。これで man ページを開くことができたので、次はこれを操作していきます。次の節では移動と検索について見ていきましょう。
man ページ内を移動し、検索する
man ページ内の移動はきわめて単純です。行単位で上下に移動するには、↑ および ↓ 矢印キーを使用してください。ページ単位で上下に移動するには、Page up および Page down キーを使用することができます。しかしながら、これらの移動命令は、環境変数 PAGER がデフォルトのページャである less を使用するように設定されていることが前提であることに注意してください。less には他にも移動のためのコマンドがいくつかありますが、通常は矢印キーで事足りるでしょう:
e ^E j ^N CR * Forward one line (or N lines).
y ^Y k ^K ^P * Backward one line (or N lines).
f ^F ^V SPACE * Forward one window (or N lines).
b ^B ESC-v * Backward one window (or N lines).
z * Forward one window (and set window to N).
w * Backward one window (and set window to N).
ESC-SPACE * Forward one window, but don't stop at end-of-file.
d ^D * Forward one half-window (and set half-window to N).
u ^U * Backward one half-window (and set half-window to N).
ESC-) RightArrow * Shift view right one half screen width (or N positions).
ESC-( LeftArrow * Shift view left one half screen width (or N positions).
F Forward forever; like "tail -f".
一方で、検索はより興味深いものです。最も基本的な検索は、/pattern
と ?pattern
の 2 通りの方法です。1 つめは後方への検索を行い、2 つめは前方への検索を行います。pattern
は man 7 regex に記載されている正規表現パターンです。例として、emerge に渡す -D
オプションの検索をしてみましょう。まず、emerge の man ページを開いてください:
user $
man emerge
次にこの画面で / キーを押して後方検索の入力プロンプトを開き、検索パターンを入力してください:
gracefully handles updating installed packages to newer releases as well.
It handles both source and binary packages, and it can be used to create
binary packages for distribution.
EBUILDS, TBZ2S, CLASSES AND DEPENDENCIES
/\-D
通常であれば正規表現の一部として使用される
-
記号をエスケープするために、\
を付けています。これは man ページを検索して、見つかった項目をフォーカス内に持って来るでしょう:
--deep (-D)
When used in conjunction with --update, this flag forces emerge to consider the entire
dependency tree of packages, instead of checking only the immediate dependencies of
the packages. As an example, this catches updates in libraries that are not directly
listed in the dependencies of a package.
意図しない検索結果が見つかったので同じ結果の検索を続けたいという場合は、単にもう一度 / キーを押して (パターンを入力せずに) Enter を押してください。こうすると、直前に使用したパターンがデフォルトとして選択され、検索が実行されるでしょう。man ページでは、オプションが列挙され、その後に説明が続きます。man 5 portage man ページを例に取ります。このページは使用されるファイルを列挙し、次に使用法について説明しています。後方検索でも数回行えば結果を返してくれるでしょうが、2 つめの検索形式、前方検索を使って、この状況により簡単に対処する方法があります。package.unmask の説明を見つけるためにこれを使用しましょう。まず、man 5 portage を開いてください:
user $
man 5 portage
ここで Shift+g を押してください。これによりページの終端に移動するでしょう:
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
lines 418-442/442 (END)
それでは ?pattern
前方検索オプションを使って、検索したいパターンを入力してみましょう。まず ? キーを押してプロンプトを開き、クエリである package.unmask を入力してください:
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
?package.unmask
次に結果を表示するために Enter を押してください:
package.unmask
Just like package.mask above, except here you list packages you want to unmask.
Useful for overriding the global package.mask file (see below). Note that
this does not override packages that are masked via KEYWORDS.
...
これで検索が完了しました! /
と同じように、パターンを入力せずに ?
を使用すると、直前の検索パターンが使用されることに注意してください。
まとめ
これで man のガイドは終わりです。この記事によって、man ページの移動について光を当ることができ、またより経験のあるユーザにもいくつかの新しいヒントを与えることができていれば幸いです。man ページを閲覧するための他の手法を好む場合は、以下も利用可能です:
- sys-apps/man2html - man ページを HTML に変換するプログラム。
- app-text/tkman - tk ベースの man ページブラウザ。
KDE web ブラウザの kde-apps/konqueror も、アドレスバー内で man:
構文を使用することで、man ページを閲覧することができます。
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Chris White
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.