それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

manコマンドの使い方(1) とマニュアル:manの探し方

man command の使い方を調べた。

manコマンドとは

マニュアルを読むことが出来る。マニュアルがとても大事なので、しっかり使い方を覚えるのがいい。中途半端にGoogleで聞きかじるくらいなら、Man読んだ方が速いことがおおい。

すぐまとめサイトに頼ったり、まとめサイトを作ろうと企画するけど、まとめサイトは備忘録になりがちで、汎用性は高くない。また、誰が書いたか分からないことがあり、別途、正式マニュアルを探すほうがいい。そのとき役に立つのが、マニュアルコマンド。

サーバー壊してはバイトになおさせるとかあり得ないよね。

公式ドキュメントを見ないで、blog記事ばかりをあてにして、設定をいじった挙句、動かなくなって、それを何時もバイトが直すとかねぇ。そして分からなくなって再インストール。再インストールでキレイになってるとか、あり得ないから。時間の無駄です。バイトに再インストールさせていたら可哀想です。


マニュアル嫁です。

マニュアルの読み方

マニュアルのマニュアルをまず見てみます。

takuya$ man man
次に身近なコマンドのmanを見てみます
takuya$ man ls
takuya$ man cp
manual の使い方
takuya$ man コマンド名

私は、初心者に、マニュアルを見ることをまず教えています。

では、脱初心者を目指します、マニュアルには複数あることはご存じでしょうか。

問題、/etc/passwdについてのマニュアルを見れますか?

これが正解できれば、マニュアルの使い方と意味が分かっています。

これは間違い。
takuya@host $ man passwd
これが正解
takuya@host $ man 5 passwd

5が引数に必要でした。でもなぜなのでしょうか。設定ファイルのマニュアルとコマンドマニュアルの両方ともManコマンドです。使い分けるにはどうすればいいのか。設定ファイルのマニュアルをどうやって探せばいいのか。

sshdの設定のマニュアルを探してみた

sshdのマニュアルから設定について探してみたところ、SEE ALSOがありました。

takuya@host $ man sshd
#略
SEE ALSO
     scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh-keyscan(1), ssh-vulnkey(1), chroot(2), hosts_access(5),
     login.conf(5), moduli(5), sshd_config(5), inetd(8), sftp-server(8)

AUTHORS
#略

ありました。sshd_config(5)のようです。

see sshd_config(5)の5ってなんでしょうか。

マニュアルを見たことがある人なら、気づいている方も多いと思います。(1)と書かれていたら、commandで(5)と書かれていたら、設定ファイルです。マニュアルを何となく使っていると、数字があることに気づくと思います。では1,5以外にも番号があるのでしょうか。

1,2,3,4,5,6,7,8,9 まであります。

意味は次の通り。

       1   実行プログラムまたはシェルのコマンド
       2   システムコール (カーネルが提供する関数)
       3   ライブラリコール (システムライブラリに含まれる関数)
       4   スペシャルファイル (通常 /dev に置かれている)
       5   ファイルのフォーマットとその約束事。例えば /etc/passwd など
       6   ゲーム
       7   マクロのパッケージとその約束事。例えば man(7), groff(7) など
       8   システム管理用のコマンド (通常は root 専用)
       9   カーネルルーチン [非標準]
確認してみましょう
man cp
CP(1)    #左上に出ています。1です。

CPはシステムコマンドで、マニュアルはシステムコマンドの使い方。なのでCP(1)です。

man resonv.conf
RESOLV.CONF(5)    #左上に出ています。1です。

resolv.confは設定ファイルです。マニュアルは設定ファイルのフォーマットについて。なのでRESOLV.CONF(5)です。

passwdの場合は?
man passwd

PASSWD(1)

関連項目
       group(5), passwd(5), shadow(5)

PASSWD(1)ですね。設定ファイルではなく、コマンドです。関連項目も同じです。困ります。そこで明示的に番号を指定するのです。番号を指定すれば同じ名前でも、違うマニュアルを見ルことが出来ます。

passwd(5)を見る
takuya@host $ man 5 passwd

明示的に5を入れる。

結果
PASSWD(5)

名前
       passwd - パスワードファイル

説明
       passwd ファイルには各ユーザアカウントの様々な情報が記録されている。書かれているのは次の通り。

これでパスワードについて閲覧することが出来ました。

マニュアルを探すには?

passwdで始まるマニュアルは他にもあります。今度はソレを探してみます。

-k オプションでマニュアルを探す。
takuya@host $ man -k passwd

afppasswd (1)        - netatalk パスワード管理ユーティリティ
chpasswd (8)         - パスワードファイルをバッチ処理で更新する
cvpasswd (1)         - CVSup の認証のためにパスワードにスクランブルをかける
gpasswd (1)          - /etc/groupファイルを管理する
passwd (1)           - ユーザパスワードを変更する
passwd (5)           - パスワードファイル
passwd2des (3)       - RFS パスワード暗号化
pwupdate (8)         - NIS マップ passwd および shadow を更新する
rpc.yppasswdd (8)    - NIS パスワード更新デーモン
yppasswd (1)         - NIS データベースのパスワードを変更する
yppasswdd (8)        - NIS パスワード更新デーモン
chgpasswd (8)        - update group passwords in batch mode
exim4_passwd (5)     - Files in use by the Debian exim4 packages
exim4_passwd_client (5) - Files in use by the Debian exim4 packages
htpasswd (1)         - Manage user files for basic authentication
lppasswd (1)         - add, change, or delete digest passwords.
mkpasswd (1)         - Overfeatured front end to crypt(3)
pam_localuser (8)    - require users to be listed in /etc/passwd
passwd (1ssl)        - compute password hashes
update-passwd (8)    - safely update /etc/passwd, /etc/shadow and /etc/group

他にもrubyssh について

rubysshを含む、マニュアルを探してみます。

ruby についてマニュアル一覧
takuya@host $man  -k ruby
breakpoint_client (1) - a tool to connect to a Ruby/Breakpoint service
erb (1)              - an embedded Ruby language interpreter
erb1.8 (1)           - an embedded Ruby language interpreter
gem (1)              - the front end to RubyGems
gem1.8 (1)           - the front end to RubyGems
irb (1)              - interactive ruby
irb1.8 (1)           - interactive ruby
rails (1)            - Ruby on Rails deployment script
rake (1)             - a ruby build program with capabilities similar to make
rdoc (1)             - Generate documentation from Ruby script files
rdoc1.8 (1)          - Generate documentation from Ruby script files
ruby (1)             - Interpreted object-oriented scripting language
ruby1.8 (1)          - Interpreted object-oriented scripting language
testrb (1)           - Automatic runnter for Test::Unit of Ruby
testrb1.8 (1)        - Automatic runnter for Test::Unit of Ruby
ssh についてマニュアル一覧
takuya@host $man -k ssh
rssh (1)             - scp と sftp の両方だけ、またはその一方のみを許可する 制限付セキュアシェル
authorized_keys (5)  - OpenSSH SSH daemon
git-shell (1)        - Restricted login shell for GIT-only SSH access
rlogin (1)           - OpenSSH SSH client (remote login program)
rsh (1)              - OpenSSH SSH client (remote login program)
slogin (1)           - OpenSSH SSH client (remote login program)
ssh (1)              - OpenSSH SSH client (remote login program)
ssh-add (1)          - adds RSA or DSA identities to the authentication agent
ssh-agent (1)        - authentication agent
ssh-argv0 (1)        - replaces the old ssh command-name as hostname handling
ssh-copy-id (1)      - install your public key in a remote machine's authorized_keys
ssh-keygen (1)       - authentication key generation, management and conversion
ssh-keyscan (1)      - gather ssh public keys
ssh-keysign (8)      - ssh helper program for host-based authentication
ssh-vulnkey (1)      - check blacklist of compromised keys
ssh_config (5)       - OpenSSH SSH client configuration files
sshd (5) [authorized_keys] - OpenSSH SSH daemon
sshd (8)             - OpenSSH SSH daemon

これで、目的のファイルを知ることが出来るようになる。

マニュアルページ

マニュアルの使い方を駆け足で追いかけた。マニュアルのページは、通称manpageと呼ばれる。このUnixマニュアルは膨大な量があるので、読むのが大変だけど、読めば必ず願いが叶う。

私は、マニュアルを読むようになって、、ブログに書かない人は書くまでもないんだと実感することになった。情報を必要としている人は情報の集め方を知っていて、本家情報を知らない人ほど、二次三次情報をアレコレ調べて時間を無駄にしているのかと。いままで、どれだけの時間を無駄にしたか・・・

追記

Manpageが英語で困る人は日本語を入れてみましょう。(個人的には英語読んだ方が良いとおもうけど)

manpage -ja のインストール
#aptitude install manpages-ja
manpageを自作する

そのうち書こうと思うLinuxサーバHacks2に載ってた。

参考資料

man man

このコマンドが参考資料。であり使用例

タイトルの man (1)

man -k man でマニュアルを探すと man(1)がヒットするので、マニュアルのマニュアル的な意味でつけました。