manコマンドで各種マニュアルを見る

# 1.マニュアルファイル
Linuxでは、インストールされているコマンドや`sshd_config`などのconfigファイルについてのマニュアルが`.gz`形式で用意されており、これを`man`コマンドで表示する事ができます。

# 2.使い方
使い方は至って簡単で、

```bash
man command
```
で見る事ができます。試しに`chmod`コマンドのマニュアルを見てみましょう。

### 実行例
```bash
man chmod
```


```bash
CHMOD(1)                                           User Commands                                          CHMOD(1)

NAME
       chmod - change file mode bits

SYNOPSIS
       chmod [OPTION]... MODE[,MODE]... FILE...
       chmod [OPTION]... OCTAL-MODE FILE...
       chmod [OPTION]... --reference=RFILE FILE...

DESCRIPTION
       This  manual  page documents the GNU version of chmod.  chmod changes the file mode bits of each given file
       according to mode, which can be either a symbolic representation of changes to make,  or  an  octal  number
       representing the bit pattern for the new mode bits.

       The  format of a symbolic mode is [ugoa...][[-+=][perms...]...], where perms is either zero or more letters
       from the set rwxXst, or a single letter from the set ugo.  Multiple symbolic modes can be given,  separated
       by commas.

       A  combination  of  the letters ugoa controls which users' access to the file will be changed: the user who
       owns it (u), other users in the file's group (g), other users not in the file's group  (o),  or  all  users
       (a).   If  none  of these are given, the effect is as if (a) were given, but bits that are set in the umask
       are not affected.
...

 Manual page man(1) line 1 (press h for help or q to quit)
```

# 3.マニュアルページの操作(簡易版)

マニュアルページは次のように表示を操作できます。

### 上下スクロール
上下のキーまたは`k`、`j`キーでスクロールします。
### ページ移動
`PageUp`と`PageDown`または`b`、`Space`キー、`Ctrl + B`,`Ctrl + F`キーでページ単位で移動できます。
### 検索
`/`を押した後にキーワードを入力して検索できます。
### 終了
`q`キーでマニュアルページの表示を終了します。
### ヘルプ
`h`キーでマニュアル表示のヘルプを表示できます。その他の細かい操作法はこちらで確認する事ができます。

# 4.マニュアルページの構成

マニュアルページは基本的に以下のようなセクションで構成されています。ただ、これらの項目は一部なかったり、これ以外の項目があったりします。

1.NAME
- コマンドの名前と簡単な説明

2.SYNOPSIS
- コマンドの使用方法や構文

3.DESCRIPTION
- コマンドの詳細な説明

4.OPTIONS
- コマンドで使用可能なオプションの説明

5.EXAMPLES
- コマンドの使用例

6.SEE ALSO
- 関連コマンドやマニュアルのページ

# 5.マニュアルページのセクション
マニュアルページを開くと`MAN(1)`などのように、括弧書きで数字が表示されています。
これはセクション番号を意味しています。
この、マニュアルのセクション番号には一般的に次のような意味があります。

1.実行可能プログラムまたはシェルコマンド

- 例：ls, cd, grep
- 通常のユーザーが使用するコマンドやプログラムのマニュアルです。

2.システムコール（カーネルによって提供される関数）
- 例：read, write, open
- カーネルが提供する低レベルのシステムコールのマニュアルです。

3.ライブラリコール（プログラムライブラリ内の関数）
- 例：printf, malloc, socket
- C標準ライブラリや他のプログラムライブラリ内の関数のマニュアルです。

4.特殊ファイル（通常 /dev にある）
- 例：/dev/null, /dev/sda
- デバイスファイルや特殊ファイルに関するマニュアルです。

5.ファイル形式と規約、例： /etc/passwd
- 例：/etc/passwd, /etc/fstab
- 各種設定ファイルやデータフォーマットに関するマニュアルです。


6.ゲーム
- 例：nethack, fortune
- ゲームや娯楽用プログラムのマニュアルです。

7.その他（マクロパッケージや規約を含む）
- 例：man, groff
- 他のカテゴリに属さないマニュアルページやマクロパッケージのマニュアルです。

8.システム管理コマンド（通常は root のみ）
- 例：ifconfig, systemctl, mount
- システム管理者向けのコマンドやユーティリティのマニュアルです。

9.カーネルルーチン [非標準]
- 例：特定のカーネル内部の機能やルーチンに関するマニュアルです。
- このセクションは非標準で、すべてのシステムで利用可能とは限りません。

# 6.別セクションを表示する

例えば`chmod`のマニュアルは通常であれば`chmod(1)`しかありませんが、`dnf install man-pages`をインストールすると、`chmod(2)`が見られるようになります。

同じコマンドで別のセクションのマニュアルページを開く場合は次のようにします。

```bash
man [セクション番号] [コマンド]
```

### 実行例
```bash
man 2 chmod
```

```bash
chmod(2)                                        System Calls Manual                                       chmod(2)

NAME
       chmod, fchmod, fchmodat - change permissions of a file

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <sys/stat.h>

       int chmod(const char *pathname, mode_t mode);
       int fchmod(int fd, mode_t mode);

       #include <fcntl.h>           /* Definition of AT_* constants */
       #include <sys/stat.h>

       int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7))
...
```

# 7.manコマンドのオプション

manコマンドは`-k`,`-l`,`-f`,`-W`のオプションが用意されています。

## -kオプション
`-k`オプションでキーワード検索ができます。
```bash
[yoyo@AL ~]$ man -k chmod
chmod (1)            - change file mode bits
chmod (1p)           - change the file modes
chmod (2)            - change permissions of a file
chmod (3p)           - change mode of a file
fchmod (2)           - change permissions of a file
fchmod (3p)          - change mode of a file
fchmodat (2)         - change permissions of a file
fchmodat (3p)        - change mode of a file relative to directory file descriptor
```

## -fオプション
`-f`オプションで、コマンドの簡易説明を表示する事ができます。
```bash
[yoyo@AL ~]$ man -f chmod
chmod (1)            - change file mode bits
chmod (1p)           - change the file modes
chmod (2)            - change permissions of a file
chmod (3p)           - change mode of a file
```

## -wオプション
`-w`オプションで、コマンドのマニュアルファイルがある場所を表示できます。

```bash
[yoyo@AL ~]$ man -w chmod
/usr/share/man/man1/chmod.1.gz
```

## -lオプション

`-l`オプションで、指定したディレクトリパスにあるmanファイルを開きます。

```bash
[yoyo@AL ~]$ man -l /usr/share/man/man1/chmod.1.gz
# /usr/share/man/man1/chmod.1.gzをディレクトリで指定して開いています。
```

# 8.その他
たまに忘れますが、`sshd_config`など、コマンドではなくconfigファイルなどのマニュアルも用意されている事があるので、同様にして参照する事ができます。

```bash
man sshd_config
```

```bash
NAME
     sshd_config — OpenSSH daemon configuration file

DESCRIPTION
     sshd(8) reads configuration data from /etc/ssh/sshd_config (or the file specified with -f on the command
     line).  The file contains keyword-argument pairs, one per line.  For each keyword, the first obtained value
     will be used.  Lines starting with ‘#’ and empty lines are interpreted as comments.  Arguments may optionally
     be enclosed in double quotes (") in order to represent arguments containing spaces.

     The possible keywords and their meanings are as follows (note that keywords are case-insensitive and argu‐
     ments are case-sensitive):

     AcceptEnv
             Specifies what environment variables sent by the client will be copied into the session's environ(7).
             See SendEnv and SetEnv in ssh_config(5) for how to configure the client.  The TERM environment vari‐
             able is always accepted whenever the client requests a pseudo-terminal as it is required by the pro‐
             tocol.  Variables are specified by name, which may contain the wildcard characters ‘*’ and ‘?’.  Mul‐
             tiple environment variables may be separated by whitespace or spread across multiple AcceptEnv direc‐
             tives.  Be warned that some environment variables could be used to bypass restricted user environ‐
             ments.  For this reason, care should be taken in the use of this directive.  The default is not to
             accept any environment variables.
```