このエントリーをはてなブックマークに追加

Linuxのマニュアルといえばmanコマンドです。Linuxサーバを構築したり運用したりしているだけではあまり意識しないかもしれませんが、ロケールやマニュアルセクションなど、manを活用するために知っておくと便利なことについて紹介です。

manのロケールについて

CentOSなどの最近のディストリビューションでは、日本語ロケールでインストールした場合、manコマンドの出力も日本語だったりしますが、これはLinuxコミュニティの有志が一生懸命翻訳した成果です。ある程度の水準は保っていますが、日本語(英語以外の言語全般に)に翻訳される際にすべてを日本語化してもらえているとは限りません。つまり情報として足りないものがあるということです。

しかし、普段、日本語でmanを読んでいるだけではなかなかそのことに気づきません。 例えば、以下はmanのマニュアルを表示しています。

日本語版は以下の通り。

$ man man
man(1)                                                                  man(1)

名前
       man - オンラインマニュアルページを整形し表示する。
       manpath - ユーザー個々のマニュアルページの検索パスを決める。

書式
       man  [-adfhktwW]  [-m system] [-p string] [-C config_file] [-M path]
       [-P pager] [-S section_list] [section] name ...

説明
       man はオンライン・マニュアル・ページを整形し表示する。このバージョン
       の man コマンドでは環境変数 MANPATH と (MAN)PAGER を設定できる。これ
       により、個人的なマニュアルページを設定したり、整形したページを表示す
       るプログラムを好きに選べる。 section を指定すると、 man はマニュアル
       のそのセクションのみ探す。またコマンドライン・オプションや環境変数で
       、それぞれのセクションを検索する順序や、ソース・ファイルに対してどん
       なプリプロセッサを用いるかを指定したりすることができる。 name  に  /
       が 含まれているとき man コマンドはまずファイル名として扱う。したがっ
       て man ./foo.5 または man /cd/foo/bar.1.gz とさえできる。

オプション
       -C  config_file
              使用する man.conf ファイルを 指 定 す る 。 デ フ ォ ル ト は
              /etc/man.config (参照: man.conf(5))
(以下省略)

一時的にロケールを変えることで英語版のマニュアル(man)表示が可能です。 英語版は以下の通りです。

$ LANG=en_US.UTF-8
$ man man
man(1)                                                                  man(1)

NAME
       man - format and display the on-line manual pages

SYNOPSIS
       man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file]
       [-M pathlist] [-P  pager]  [-B  browser]  [-H  htmlpager]  [-S  sec-
       tion_list] [section] name ...

DESCRIPTION
       man  formats  and displays the on-line manual pages.  If you specify
       section, man only looks in that section of the manual.  name is nor-
       mally  the name of the manual page, which is typically the name of a
       command, function, or file.  However, if name contains a  slash  (/)
       then  man  interprets it as a file specification, so that you can do
       man ./foo.5 or even man /cd/foo/bar.1.gz.

       See below for a description of where man looks for the  manual  page
       files.

MANUAL SECTIONS
       The standard sections of the manual include:

       1      User Commands

       2      System Calls

       3      C Library Functions

       4      Devices and Special Files

       5      File Formats and Conventions

       6      Games et. Al.

       7      Miscellanea

       8      System Administration tools and Deamons

       Distributions customize the manual section to their specifics, which
       often include additional sections.

OPTIONS
       -C  config_file
              Specify  the  configuration  file  to  use;  the  default  is
              /etc/man.config.  (See man.config(5).)

       -M  path
              Specify the list of directories  to  search  for  man  pages.
              Separate  the  directories with colons.  An empty list is the
              same as not specifying -M at all.  See SEARCH PATH FOR MANUAL
              PAGES.
(以下省略)

英語版が表示されますが、日本語では表示されない「MANUAL SECTIONS」という部分が表示されます。 manのマニュアルについては英語版の一部しか翻訳されていないようです。 あくまですら一例ですが、こういったケースはほかにもたくさんあります。 本格的にLinuxを運用したり、プログラミングをおこなう場合は、英語版の情報を確認する習慣をつけることが大切です。 ただ、そうもいかない場合もあると思いますので、日本語版で十分な情報が得られない場合は、英語版にあたってみるというのを意識しておくとよいと思います。

英語版のマニュアルを参照するためには、マシンまたはユーザのロケールを変更する必要がありますが、ロケール全体を変更するとシステムの挙動に影響を与えるなど、問題が生じる場合もあります。そいうときには一時的に環境変数を変更するenvコマンドが有効です。

$ env LANG=en_US.utf8 man man

また、常にこれだけ長いコマンドを打つのも面倒ですので、aliasを利用するのもよいと思います。

$ vi ~/.bashrc
(以下を追加)
alias man='env LANG=en_US.UTF-8 man'

$ source ~/.bashrc
$ man man
man(1)                                                                  man(1)

NAME
       man - format and display the on-line manual pages

SYNOPSIS
       man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file] [-M pathlist] [-P pager] [-B browser] [-H htmlpager] [-S section_list] [section] name ...

DESCRIPTION
       man  formats and displays the on-line manual pages.  If you specify section, man only looks in that section of the manual.  name is normally the name of the manual page, which is typically the
       name of a command, function, or file.

これでほかのロケールを変更せずにマニュアルだけ英語ロケールで表示ができます。

マニュアルセクション

linuxのmanでコマンドのヘルプを開くと、コマンド名の後ろに(1)とか(2)とかといった、かっこ(番号)がついています。 先ほどのロケール設定の例で、英語版のmanでは以下のようなMANUAL SECTIONSという部分が現れました。 このかっこの番号はマニュアルセクションというものを表しています。

    MANUAL SECTIONS
           The standard sections of the manual include:

           1      User Commands

           2      System Calls

           3      C Library Functions

           4      Devices and Special Files

           5      File Formats and Conventions

           6      Games et. Al.

           7      Miscellanea

           8      System Administration tools and Deamons

           Distributions customize the manual section to their specifics, which
           often include additional sections.

それぞれの意味は以下のようになっています。

セクション番号 カテゴリ 概要
1 コマンド (プログラム) シェルの中からユーザが実行できるコマンド。
2 システムコール カーネルが処理しなければならない関数。
3 ライブラリコール libc の関数の大部分。
4 スペシャルファイル (デバイス) /dev 以下にあるファイル。
5 ファイルのフォーマットと規約 /etc/passwd などの人が読めるファイルのフォーマット。
6 ゲーム
7 概要、約束事、その他 様々な事柄の概要、慣習、プロトコル、文字集合の規格、その他雑多なこと。
8 システム管理コマンド mount(8) のような root のみが実行可能なコマンド。

通常のmanコマンドでは同じ名前のエントリがあってもセクション番号の小さいほうが優先的に表示されます。 たとえば、シェルコマンドとライブラリ関数名が同じだった場合はセクション番号が小さいシェルコマンドのマニュアルが表示されます。 ライブラリ関数のマニュアルが必要な場合は「man セクション番号 ライブラリ関数名」のようにセクション番号を指定します。

$ man 3 項目名

また知りたいキーワードがどのセクション番号に登録されているかなどを確認したい場合は-kオプションを使用することができます。

$ man -k umask
pam_umask            (8)  - PAM module to set the file mode creation mask
umask [builtins]     (1)  - bash built-in commands, see bash(1)



記事一覧へ