man ページ

提供: ArchWiki
2015年6月21日 (日) 16:09時点におけるKusakata (トーク | 投稿記録)による版 (→‎man ページのカラー出力)
ナビゲーションに移動 検索に移動

man ページ ("マニュアルページ"の略) は Arch Linux を含む、ほとんどの主要な UNIX ライクなオペレーティングシステムで最初からインストールされているドキュメントです。man ページを表示するには man コマンドを使います。

man ページのカバーする範囲の如何を問わず、man ページは完結型のドキュメントとして作られており、必然的に、関連する話題を述べるときに他の man ページを参照するということが控えられています。このことはハイパーリンクを使用する info ファイルと対象的であり、GNU は info ファイルで伝統的な man ページ形式を置き換えようとしています。

Man ページの表示

man ページを読むには、次を入力してください:

$ man page_name

マニュアルは複数のセクションに分類されています:

  1. 一般的なコマンド
  2. システムコール (カーネルによって提供されている関数)
  3. ライブラリコール (C ライブラリの関数)
  4. 特殊ファイル (通常は /dev 以下に存在します) とドライバー
  5. ファイルのフォーマットと規則
  6. ゲーム
  7. その他 (約束事など)
  8. システム管理コマンド (通常は root 権限を必要とします) とデーモン

基本的に Man ページはページの名前で呼ばれ、括弧で囲まれたセクション番号が後ろに付きます。man(1) と man(7) のように、同じ名前の man ページが存在することも時々あります。この場合は、man を呼び出すときにセクション番号と man ページの名前を指定します。例:

$ man 5 passwd

上記のコマンドを実行すると passwd ユーティリティではなく、/etc/passwd についての man ページが表示されます。

whatis コマンドを使用することで man ページの一行説明を表示できます。例えば、ls の man ページセクションの簡単な説明を見るには、次を入力:

$ whatis ls
ls (1p)              - list directory contents
ls (1)               - list directory contents

形式

全ての Man ページは標準の書式に従って書かれており、読みやすいようになっています。よく出てくるセクションは以下の通り:

  • NAME - コマンドの名前、コマンドの使用目的について一行の説明。
  • SYNOPSIS - コマンドが受け付けるオプションや引数のリスト、または関数が使用するパラメータやヘッダーファイル。
  • DESCRIPTION - コマンドや関数の目的・動作に関する詳しい説明。
  • EXAMPLES - 一般的な例。シンプルなコマンドからやや複雑なコマンドまで様々。
  • OPTIONS - コマンドが受け付けるオプションの説明、何が変わるのか。
  • EXIT STATUS - 様々な終了コードの意味。
  • FILES - コマンドや関数に関連するファイル。
  • BUGS - 解決が棚上げされているコマンドや関数の問題。いわゆる既知のバグ。
  • SEE ALSO - 関連するコマンドや関数のリスト。
  • AUTHOR, HISTORY, COPYRIGHT, LICENSE, WARRANTY - プログラムに関する情報、プログラムの履歴、利用条件、開発者。

マニュアルの検索

man ユーティリティを使えば man ページを表示することはできますが、そもそも読みたいマニュアルページの名前を知らない場合に問題が起こります。幸いに、-k または --apropos オプションを使うことで、キーワードを指定してマニュアルページの説明文を検索することができます。

検索機能は専用のキャッシュを使っています。デフォルトでは、キャッシュが作成されていないために、何を検索しても該当するページは見つからないという結果になってしまいます。次を実行することでキャッシュを生成または更新することが可能です:

# mandb

新しい man ページをインストールしたら上のコマンドを実行するようにしてください。

キャッシュを作成したら検索をすることができます。例えば、"password" に関する man ページを検索するには:

$ man -k password

または:

$ man --apropos password

上記のコマンドは以下のように apropos コマンドを実行するのと同じです:

$ apropos password

デフォルトでは、指定したキーワードは正規表現として解釈されます。

ページ全体でキーワードが検索されるように細かく検索して欲しい場合、-K オプションを使います:

$ man -K password

man ページのカラー出力

man ページのカラー出力を有効にすることで見た目をよくして中身を理解しやすくすることが可能です。man ページのカラー出力を行う方法は2つ存在します: less を使用する方法、または most を使用する方法。

less を使う (推奨)

ソース: Less Colors For Man Pages | Linux Tidbits

この方法には less の方が most よりも機能が豊富だということ、そして man ページを見る時のデフォルトになっているという利点があります。

シェルの設定ファイルに以下を追加してください。Bash の場合:

~/.bashrc
man() {
    env LESS_TERMCAP_mb=$'\E[01;31m' \
    LESS_TERMCAP_md=$'\E[01;38;5;74m' \
    LESS_TERMCAP_me=$'\E[0m' \
    LESS_TERMCAP_se=$'\E[0m' \
    LESS_TERMCAP_so=$'\E[38;5;246m' \
    LESS_TERMCAP_ue=$'\E[0m' \
    LESS_TERMCAP_us=$'\E[04;38;5;146m' \
    man "$@"
}

(bash や linux を再起動しないで) Man ページに変更を適用するには、次を実行:

# source ~/.bashrc

Fish の場合、基本的な設定は以下の通りです:

~/.config/fish/config.fish
set -xU LESS_TERMCAP_mb (printf "\e[01;31m")      # begin blinking
set -xU LESS_TERMCAP_md (printf "\e[01;31m")      # begin bold
set -xU LESS_TERMCAP_me (printf "\e[0m")          # end mode
set -xU LESS_TERMCAP_se (printf "\e[0m")          # end standout-mode
set -xU LESS_TERMCAP_so (printf "\e[01;44;33m")   # begin standout-mode - info box
set -xU LESS_TERMCAP_ue (printf "\e[0m")          # end underline
set -xU LESS_TERMCAP_us (printf "\e[01;32m")      # begin underline

(fish や linux を再起動しないで) Man ページに変更を適用するには、次を実行:

# source ~/.config/fish/config.fish

色をカスタマイズするときは、Wikipedia:ANSI escape code を参照してください。

most を使う (非推奨)

'most' の基本的な機能は lessmore と似ていますが、備えている機能の数はやや少なくなっています。most でカラー出力を使うように設定するのは less よりも簡単ですが、less のように most を使うには別の設定が必要になります。pacman を使って most をインストールしてください:

# pacman -S most

/etc/man_db.conf を編集して、ページャの定義をアンコメントして次のように変更:

DEFINE     pager     most -s

新しい設定は以下を入力することでテストできます:

$ man whatever_man_page

カラーの値を変更するには ~/.mostrc または /etc/most.conf (システム全体に変更が適用されます) を編集する必要があります (ファイルが存在しない場合は作成してください)。~/.mostrc の例:

% Color settings
color normal lightgray black
color status yellow blue
color underline yellow black
color overstrike brightblue black

less と同じようなキーバインドを使う例 (行ジャンプを 'J' に設定):

% less-like keybindings
unsetkey "^K"
unsetkey "g"
unsetkey "G"
unsetkey ":"

setkey next_file ":n"
setkey find_file ":e"
setkey next_file ":p"
setkey toggle_options ":o"
setkey toggle_case ":c"
setkey delete_file ":d"
setkey exit ":q"

setkey bob "g"
setkey eob "G"
setkey down "e"
setkey down "E"
setkey down "j"
setkey down "^N"
setkey up "y"
setkey up "^Y"
setkey up "k"
setkey up "^P"
setkey up "^K"
setkey page_down "f"
setkey page_down "^F"
setkey page_up "b"
setkey page_up "^B"
setkey other_window "z"
setkey other_window "w"
setkey search_backward "?"
setkey bob "p"
setkey goto_mark "'"
setkey find_file "E"
setkey edit "v"

xterm や rxvt-unicode で man ページのカラー出力

ソース: XFree resources file for XTerm program[リンク切れ 2013-09-10]

xterm/uxtermrxvt-unicode でマニュアルページを表示するときにカラーを追加したいときは ~/.Xresources を編集するのが簡単です。

xterm

修飾をカラーで置き換える:

*VT100.colorBDMode:     true
*VT100.colorBD:         red
*VT100.colorULMode:     true
*VT100.colorUL:         cyan

カラーと修飾 (太字や下線) を同時に使いたい場合:

*VT100.veryBoldColors: 6

veryBoldColors の説明は man xterm を見て下さい。

rxvt-unicode

URxvt.colorIT:      #87af5f
URxvt.colorBD:      #d7d7d7
URxvt.colorUL:      #87afd7

次を実行:

$ xrdb -load ~/.Xresources

xterm/uxtermrxvt-unicode を新しく起動すると man ページがカラフルになっているはずです。 This combination puts colors to bold and underlined words in xterm/uxterm or to bold, underlined, and italicized text in rxvt-unicode. You can play with different combinations of these attributes (see the sources[リンク切れ 2013-09-10] of this item).

ローカルの man ページを読む

標準のインターフェイスの代わりに、lynxFirefox などのブラウザを使って man ページを見ることで info ページの利点 (ハイパーリンク) を得ることができます。

KDE ユーザーは次のようにして Konqueror で man ページを読めます:

man:<name>

他に、公式リポジトリには2つの選択肢があります:

1. xorg-xmanX で man ページをカテゴライズされた形で見ることができます。

2. GNOME のヘルプブラウザ yelp はさらに小奇麗な方法ですが依存パッケージが複数存在します。

ブラウザで表示できる HTML に変換する

mdocml

AUR から mdocmlAUR をインストールします。例えば free(1) のページを変換するなら:

$ gunzip -c /usr/share/man/man1/free.1.gz | mandoc -Thtml -Ostyle=style.css 1> free.html

free.html ファイルをお好きなブラウザで開いて下さい。

man2html

まず、公式リポジトリから man2html をインストールします。

そして、man ページを変換:

$ man free | man2html -compress -cgiurl man$section/$title.$section$subsection.html > ~/man/free.html

他の使い方として印刷しやすいように man2html でプレーンテキストにすることもできます:

$ man free | man2html -bare > ~/free.txt

man -H

Arch のリポジトリに入っている man の GNU 実装には HTML で表示する機能が付いています:

$ man -H free

使用されるブラウザは BROWSER 環境変数によって決まります。-H オプションにバイナリを渡すことで上書きできます。

roffit

AUR から roffitAUR をインストールしてください。

man ページを変換するには:

$ gunzip -c /usr/share/man/man1/free.1.gz | roffit > free.html

PDF に変換する

man ページは基本的に印刷ができるようになっています。man ページは troff で書かれており、troff はもともと組版言語だからです。ghostscript をインストールしていれば、man ページを PDF に変換するのはとても簡単に行えます: man -t <manpage> | ps2pdf - <pdf>。どんな風になるかは google で画像検索 してみればわかります。これは万人向けとは言えないでしょう。

ノート: 基本的にフォントは決まったサイズの Times に制限されています。ハイパーリンクは存在しません。man ページによってはターミナルでの表示に特化されていることがあり、PS や PDF のような形だと上手くいかないことがあります。

以下の perl スクリプトは man ページを PDF に変換して、PDF を $HOME/.manpdf/ ディレクトリにキャッシュし、PDF ビューア (特に mupdf) を起動します。

Usage: manpdf [<section>] <manpage>
#!/usr/bin/perl
use File::stat;

$pdfdir = $ENV{"HOME"}."/.manpdf";
-d $pdfdir || mkdir $pdfdir || die "can't create $pdfdir";
$manpage = $ARGV[0];
chop($manpath = `man -w $manpage`);
die if $?;

$maninfo = stat($manpath) or die;
$manpath =~ s@.*/man./(.*)(\.(gz|bz2))?$@$1@;
$pdfpath = "$pdfdir/$manpath.pdf";
$pdftime = 0;
if (-f $pdfpath) {
    $pdfinfo = stat($pdfpath) or die;
    $pdftime = $pdfinfo->mtime;
}
if (!-f $pdfpath || $maninfo->mtime > $pdftime) {
    system "man -t $manpage | ps2pdf -dPDFSETTINGS=/screen - $pdfpath";
}
die if !-f $pdfpath;
if (!fork) {
    open(STDOUT, "/dev/null");
    open(STDERR, "/dev/null");
    exec "mupdf", "-r", "96", $pdfpath;
    #exec "acroread", $pdfpath;
}

オンラインの Man ページ

man ページのオンラインデータベース:

警告: ディストリビューションによっては、Arch が使っているのとは異なる man ページを使用していることがあります (パッチを適用していたり単純に古くなっているなど)。オンラインの man ページを使用するときはそのことに注意してください。

特筆すべき man ページ

以下は読む価値があるページの部分的なリストであり、様々なことを深く理解するのに役立ちます。リファレンスとして役立つページもあります (ascii テーブルなど)。

  • ascii(7)
  • boot(7)
  • charsets(7)
  • chmod(1)
  • credentials(7)
  • fstab(5)
  • hier(7)
  • systemd(1)
  • locale(1P)(5)(7)
  • printf(3)
  • proc(5)
  • regex(7)
  • signal(7)
  • term(5)(7)
  • termcap(5)
  • terminfo(5)
  • utf-8(7)

他のページは、カテゴリ 7 ページを見て下さい:

$ man -s 7 -k ".*" 

Arch Linux 特有のページ:

  • archlinux(7)
  • mkinitcpio(8)
  • pacman(8)
  • pacman-key(8)
  • pacman.conf(5)

参照