man ページ/ナビゲーション

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Man page/Navigate and the translation is 100% complete.

このガイドでは、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 には他にも移動のためのコマンドがいくつかありますが、通常は矢印キーで事足りるでしょう:

コード 追加の 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 つめは前方への検索を行います。patternman 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 を押してください。これによりページの終端に移動するでしょう:

コード SHIFT+g 後の man ページの終端
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 ページを閲覧するための他の手法を好む場合は、以下も利用可能です:

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.