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
他にもruby や ssh について
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)がヒットするので、マニュアルのマニュアル的な意味でつけました。