マニュアルコマンドman、infoや関連コマンドについて整理する

概要
1. manコマンド
1-1. マニュアル
1-2. 操作方法
1-3. 実行オプション
1-4. セクション
2. キーワード検索
3. infoコマンド
4. helpメッセージ
5. manpage検索
6. その他コマンド(apropos, whatis, makewhatis, whereis, which)

1. manコマンド

1.1 マニュアル

manコマンドはオンラインマニュアルを表示するためのコマンドです。

man command

manコマンド自身にもオンラインマニュアルがあるので、まず実行してみます。

$ 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 
       normally  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
:                                                                                                    

マニュアルの内容はおよそ次の見出し順で表示されます。

見出し 日本語見出し 内容
NAME 名前 コマンド名と簡単な説明
SYNOPSIS 書式 コマンドの書式
DESCRIPTION 説明 コマンドの説明
OPTIONS オプション コマンドオプション
FILES 関連ファイル その項目が関連しているファイル
SEE ALSO 関連項目 関連する他の項目
BUGS バグ バグ情報。使用制限など
HISTORY 歴史 コマンドの実装履歴など

表示される内容は、OS・ディストリビューションやバージョンなどの環境によって異なる場合があります。

1-2. 操作方法

manコマンドには、コンテンツの閲覧操作を行う機能は含まれておらず、ページャと呼ばれる別のプログラムを利用する仕組みになっています。
デフォルトページャは環境によって異なります(lessが定番です)。
多くの環境でデフォルトページャとして使われているmoreやlessは、以下の操作を覚えておけば十分です。

SPACE 1ページ分進む
q ページャを終了する
h ページャのヘルプを表示する

1-3. 実行オプション

・ページャ
使用するページャを指定できます。
ページャを指定するには環境変数PAGERに使用するページャを設定します。

cshtcsh

% setenv PAGER more
% setenv PAGER less

sh・bash

$ export PAGER=more
$ export PAGER=less

・言語
標準ではmanは英語で記述されています。
日本語版のマニュアルを表示したい場合、まずはマニュアルが存在するか確認しましょう。

$ whereis man                                     
man: /usr/bin/man /etc/man.config /usr/share/man /usr/share/man/man1/man.1.gz                                                                        
$ ls -al /usr/share/man | grep ja                 
drwxr-xr-x.  5 root root  4096 Jan 16  2014 ja                                

jaフォルダがあれば存在しています。
マニュアルが存在しなければインストールします。

Ubuntu

$ sudo apt-get install manpages-ja 

CentOS

$ sudo yum install man-pages-ja

次にロケール(言語設定)の環境変数LANGを設定します。

cshtcsh

% setenv LANG ja_JP.UTF-8

sh・bash

$ export LANG=ja_JP.UTF-8

・検索パス
アプリケーションがOSの標準パス(/usrなど)にインストールされている場合、manも標準の検索パスに含まれているので特に気にする必要はありません。あるアプリケーションを標準パスとは異なるパスにインストールした場合、付属するmanも標準の検索パスとは異なる場所にインストールされるため、manコマンドを実行してもエラーになります。
新たに検索パスを追加するには、環境変数MANPATHを設定します。

例. アプリケーションtarget_applicationの検索パスを追加する場合
cshtcsh

% setenv MANPATH /usr/local/share/man:/home/target_application/share/man

sh・bash

$ export MANPATH=/usr/local/share/man:/home/target_application/share/man

あるいは

% man -M /usr/local/share/man:/home/target_application/share/man target_command

複数のパスを設定する場合は、コロン(:)で連結します。

1-4. セクション

manのコンテンツは、その種別によってセクションに分けて管理されています。

セクション番号 内容
1 一般コマンド
2 システムコール
3 ライブラリ関数
4 バイスファイルとデバイスドライバ
5 ファイル形式とその使用法
6 ゲームとスクリーンセーバー
7 その他
8 システム管理コマンドとデーモンなど
9 カーネル関係

オンラインマニュアルの中では、同じ項目が複数のセクションに出てくる時、次のように表現する慣例があります。

printf(1)
printf(3)

このような表記で括弧内に書かれているのがセクション番号になります。

printf(1) → セクション番号1にあるprintf
printf(3) → セクション番号3にあるprintf

例. セクション番号1のprintfのマニュアルを表示する場合

$ man 1 printf
$ man -s 1 printf

manコマンドの第2引数でセクション番号を指定する場合と、sオプションで指定する場合があります。
manの末尾近くにSEE ALSO/関連項目があり、参照した項目に関連する他のマニュアルがセクション名付きでリストされています。別のセクションにも同名のマニュアルが存在する場合に参考になります。


2. キーワード検索

マニュアルを参照したいけど、対象の名前が分からない場合はmanコマンドのkオプションを使用することでキーワード検索を行うことができます。

man -k keyword

例.

$ man -k passwd                               
chpasswd             (8)  - update passwords in batch mode             
gpasswd              (1)  - administer /etc/group and /etc/gshadow     
htpasswd             (1)  - Manage user files for basic authentication 
lpasswd              (1)  - Change group or user password              
pam_localuser        (8)  - require users to be listed in /etc/passwd  
passwd               (1)  - update user's authentication tokens        
passwd [sslpasswd]   (1ssl)  - compute password hashes                 
saslpasswd2          (8)  - set a user's sasl password                 

検索範囲は、マニュアルコンテンツのNAME/名前に記載されている部分のみです。


3. infoコマンド

infoコマンドはmanコマンドと同様にオンラインマニュアルを表示するコマンドです。

info
info command

例.

$ info grep

File: *manpages*,  Node: grep,  Up: (dir)


GREP(1)                   BSD General Commands Manual                  GREP(1)

NAME
     grep, egrep, fgrep, zgrep, zegrep, zfgrep -- file pattern searcher

SYNOPSIS
     grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
          [-e pattern] [-f file] [--binary-files=value] [--color[=when]]
          [--colour[=when]] [--context[=num]] [--label] [--line-buffered]
          [--null] [pattern] [file ...]

DESCRIPTION
     The grep utility searches any given input files, selecting lines that
     match one or more patterns.  By default, a pattern matches an input line
     if the regular expression (RE) in the pattern matches the input line
     without its trailing newline.  An empty expression matches every line.
     Each input line that matches at least one of the patterns is written to
     the standard output.

     grep is used for simple patterns and basic regular expressions (BREs);
     egrep can handle extended regular expressions (EREs).  See re_format(7)
     for more information on regular expressions.  fgrep is quicker than both
     grep and egrep, but can only handle fixed patterns (i.e. it does not
     interpret regular expressions).  Patterns may consist of one or more
     lines, allowing any of the pattern lines to match a portion of the input.

     zgrep, zegrep, and zfgrep act like grep, egrep, and fgrep, respectively,
-----Info: (*manpages*)grep, 303 行 --Top------------------
Info バージョン 4.8 にようこそ。? で使い方、m でメニュー項目を呼び出せます。

infoコマンドの特徴は以下になります。

・多層構造のコンテンツ
manはコンテンツが一括で出力されるのに対し、infoはコンテンツが章立てされた多層構造になっていることが多いです。

Emacs風の操作

操作キー 意味
カーソル移動
←,↑,↓,→ カーソル移動
M-< ページの先頭に移動
M-> ページの末尾に移動
SPACE 1画面進む
TAB 次のノードへカーソルを移動
ページ移動
n 次のページへ移動
p 前のページへ移動
u 上のページへ移動
mコマンド 指定したコマンドのページへ移動
d コマンド一覧ページへ移動
t 現在のドキュメントのトップへ移動
検索
C-s 表示しているページ中で順方向に文字列検索
C-r 表示しているページ中で逆方向に文字列検索
その他
C-g コマンドの中止
q 終了
? infoのキー操作一覧

Linuxコマンド逆引き大全 - 【 コマンドのマニュアルを表示する 】:ITproを参考

GUIでの操作
GUIモードで起動したEmacsからinfoを呼び出した場合などで可能です。


4. helpメッセージ

オンラインマニュアルが付属していない場合は、コマンド類であればhelpメッセージを参照することで、最低限の使い方を確認できる場合があります。

command --help

例.

$ cat --help                                      
Usage: cat [OPTION]... [FILE]...                                           
Concatenate FILE(s), or standard input, to standard output.                
                                                                           
  -A, --show-all           equivalent to -vET                              
  -b, --number-nonblank    number nonempty output lines                    
  -e                       equivalent to -vE                               
  -E, --show-ends          display $ at end of each line                   
  -n, --number             number all output lines                         
  -s, --squeeze-blank      suppress repeated empty output lines            
  -t                       equivalent to -vT                               
  -T, --show-tabs          display TAB characters as ^I                    
  -u                       (ignored)                                       
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB   
      --help     display this help and exit                                
      --version  output version information and exit                       
                                                                           
With no FILE, or when FILE is -, read standard input.                      
                                                                           
Examples:                                                                  
  cat f - g  Output f's contents, then standard input, then g's contents.  
  cat        Copy standard input to standard output.                       
                                                                           
Report cat bugs to bug-coreutils@gnu.org                                   
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>          
General help using GNU software: <http://www.gnu.org/gethelp/>             
For complete documentation, run: info coreutils 'cat invocation'           


5. manpage検索

「manpage コマンド名」で検索すると、インターネット上でマニュアルページを見ることもできます。

f:id:eno0514:20150823235007p:plain

6. その他のコマンド(apropos, whatis, makewhatis, whereis, which)

・apropos: キーワード検索

apropos keyword

例.

$ apropos passwd                              
chpasswd             (8)  - update passwords in batch mode             
gpasswd              (1)  - administer /etc/group and /etc/gshadow     
htpasswd             (1)  - Manage user files for basic authentication 
lpasswd              (1)  - Change group or user password              
pam_localuser        (8)  - require users to be listed in /etc/passwd  
passwd               (1)  - update user's authentication tokens        
passwd [sslpasswd]   (1ssl)  - compute password hashes                 
saslpasswd2          (8)  - set a user's sasl password                 

・whatis: コマンドの説明を表示する

whatis keyword

*man -f keywordでも可能

例.

$ whatis passwd                         
passwd               (1)  - update user's authentication tokens  
passwd [sslpasswd]   (1ssl)  - compute password hashes           

・makewhatis: whatisデータベースを設定する

makewhatis

aproposコマンドやwhatisコマンドは、マニュアルのNAME/見出し部分を抜き出して作成されたwhatisデータベースを検索して表示しています。whatisデータベースはLinuxをインストールした時点では作成されていない場合がありますが、スーパーユーザ(root)になってmakewhatisコマンドを実行することでwhatisデータベースを手動で更新することができます。

・whereis: コマンドの置かれている場所を調べる

whereis [option] command

例.

$ whereis -b cat   
cat: /bin/cat                                  
$ whereis -m cat   
cat: /usr/share/man/man1/cat.1.gz              
$ whereis cat      
cat: /bin/cat /usr/share/man/man1/cat.1.gz     

・type,which: コマンドのタイプを調べる

type [option] command
which command

例.

$ type less        
less is /usr/bin/less                          
$ type -t less     
file                                           
$ type -path less  
/usr/bin/less                                  
$ which less       
/usr/bin/less                                  

参考にして頂ければと思います。
以上になります。

参考: