はじめてUNIX で仕事をする人が読む本 の備忘録 05
お世話になった本
この連載ブログを書くにあたり、お世話になった本がこちら。LPICと被っているところもありますが、実務での使い方なんかも扱っており、良書だと思います。
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
第5章 オンラインマニュアル
man
ですね。もしくは、info
。
オンラインマニュアルと言っているが、ネットワーク接続なんて無くてよい。ただ、オンラインマニュアルとman
コマンドに書かれているからそうしているだけ。
$ man man MAN(1) マニュアルページユーティリティー MAN(1) 名前 man - オンラインマニュアルのインターフェース
どこで使う?
あなたが必要と感じたところで。
詳細なマニュアルを見たいときにはやっぱりこれ。他にも、お客様先でコマンドの引数がわからない時にググるわけには行かなかったり、セキュリティ的にネットワークから隔離されていることがある。そんな時に頼るべきはこのマニュアルだと思う。本によると、熟練者ほどケアレスミスを防ぐためにマニュアルを頻繁に参照するようだ。
- コマンドの引数
- 設定ファイルの値
- 関数雨の引数や返り値の意味
- デーモンプログラムの起動オプションなど
氾濫する情報の危険性
ネットや書籍で得られる情報の危険性を知っておくほうが良いらしい。
大前提として、環境は皆違う。となると、コマンド名は同じでも挙動が変わることがある。
で、念頭に入れるべきは、ネットや書籍で手に入る情報は特定の環境でのみ正しい情報である場合がほとんどだ
という点らしい。
最悪、悪意を持って情報を流している場合もある。
この書籍で参考としてあげられている実例がある。
killall
コマンドだ。
開発中の全てのプロセスを強制終了する実用例
$ killall -KILL target_command
これ、Linux では正しいらしい。が、Solaris などのUNIX System V 系では以下の説明になる。
killall は全てのアクティブなプロセスにシグナルを送る。シグナルの指定がなければSIGTERMを送る。
UNIX System V 系でのkillallはシャットダウン処理で使用されるコマンドであり、シャットダウン処理に関係のない残存プロセスを残らず停止する為に使われる。
これは、場合によっては、システムに意図しない被害を与えかねない。
バージョンアップしたら、以前と同じコマンドでも意味が違っていたとかあるかもしれない。そういう時ほど、オンラインマニュアルを使うべき。
man コマンド
man
コマンドは、オンラインマニュアルを表示するCUIアプリケーションの名称
ただ、場合によっては
man
コマンドで表示されうオンラインマニュアルをさして使われるケースもある。
man のman
man
コマンド自身のオンラインマニュアル
$ man man MAN(1) マニュアルページユーティリティー MAN(1) 名前 man - オンラインマニュアルのインターフェース 書式 ...
操作方法
less と同じ。また、vi ライクな操作も出来る。
実行オプション
ページャ
ページ送りのこと。現在はデフォルトで組み込まれていることが多い。もし、1ページずつスクロールが出来ず、その機能を実装したいときは下記の通り。
$ export PAGER=less $ man man
環境によっては、下記のように指定できる時もある。
$ man -P less man
こっちのほうが楽そう。何度も参照するなら、環境変数に入れるべきだと思うが。
言語
man
は基本英語。しかし、日本語表示も可能。
$ export LANG=ja_JP.UTF-8 $ man man
英語にしたいときは、LANG=C
にする。
$ export LANG=C $ man man MAN(1) Manual pager utils MAN(1) NAME man - an interface to the on-line reference manuals SYNOPSIS ... $ export LANG=ja_JP.UTF-8 $ man man MAN(1) マニュアルページユーティリティー MAN(1) 名前 man - オンラインマニュアルのインターフェース 書式 ...
検索パス
man
のコンテンツは付属するアプリケーションと共にインストールされる。
何らかのアプリケーションを標準パスでないパスにインストールした場合、付属するman
も標準の検索パストは異なる場所にインストールされる場合がある。そして、そのとき該当マニュアルが存在しない旨のエラーが発生する。こんな時は、man
の検索パスを設定する。
環境変数 MANPATH
を設定する。
$ export MANPATH=/usr/local/share/man:MANPATH $ man my_application
もしくは、man
コマンドの-M
オプションでも指定できる。
$ man -M /usr/local/share/man my_command
セクション
man
のコンテンツはセクション分けで管理されている。
表:man
のセクション
セクション番号 | 内容 |
---|---|
1 | 一般コマンド |
2 | システムコール |
3 | ライブラリ関数 |
4 | デバイスファイルなどの特殊ファイルとデバイスドライバ(通常/dev ) |
5 | ファイル形式とその使用法(/etc/passwd など) |
6 | ゲームとスクリーンセーバー |
7 | その他 |
8 | システム管理コマンドとデーモンなど(通常はroot 専用) |
セクション指定でマニュアルを見れる。
セクション1
のprintf
のマニュアルを見る場合
$ man 1 printf $ man -s 1 printf PRINTF(1) User Commands PRINTF(1) NAME printf - format and print data SYNOPSIS
同名のマニュアルが別のセクションにも存在する場合、SEE ALSO
セクションにリストされるので、参照したいマニュアルがわからない時に参考になる。
$ man 1 printf SEE ALSO printf(3) The full documentation for printf is maintained as a Texinfo manual. If the info and printf programs are properly installed at your site, the command info coreutils 'printf invocation' should give you access to the complete manual. ..
man 5 foo
を見てみたい。
/etc/passwd のマニュアル $ man 5 passwd PASSWD(5) File Formats Manual PASSWD(5) 名前 passwd - パスワードファイル 説明 passwd ファイルには各ユーザアカウントの様々な情報が記録されている。 書 かれているのは次の通り。 ログイン名 暗号化されたパスワード (無いこともある) ... 関連項目 login(1), passwd(1), su(1), shadow(5), pwconv(8), pwunconv(8), sulogin(8) 著者 Julianne Frances Haugh (jockgrrl@ix.netcom.com) PASSWD(5)
キーワード検索
マニュアルを参照したいけれど対象の名称がわからない時。
man -k foo
を使う。
$ man -k printf asprintf (3) - print to allocated string dprintf (3) - print to a file descriptor fprintf (3) - formatted output conversion fwprintf (3) - formatted wide-character output conversion printf (1) - format and print data printf (3) - formatted output conversion snprintf (3) - formatted output conversion sprintf (3) - formatted output conversion swprintf (3) - formatted wide-character output conversion vasprintf (3) - print to allocated string vdprintf (3) - print to a file descriptor vfprintf (3) - formatted output conversion vfwprintf (3) - formatted wide-character output conversion vprintf (3) - formatted output conversion vsnprintf (3) - formatted output conversion vsprintf (3) - formatted output conversion vswprintf (3) - formatted wide-character output conversion vwprintf (3) - formatted wide-character output conversion wprintf (3) - formatted wide-character output conversion takashi@takashi-desktop:~/projects/jumpbox/chef-repo/cookbooks$ takashi@takashi-desktop:~/projects/jumpbox/chef-repo/cookbooks$ man -k passwd chpasswd (8) - パスワードファイルをバッチ処理で更新... gpasswd (1) - /etc/groupファイルを管理する passwd (1) - ユーザパスワードを変更する passwd (5) - パスワードファイル update-passwd (8) - /etc/passwd, /etc/shadow, /etc/group の安全な更新 chgpasswd (8) - update group passwords in batch mode Crypt::PasswdMD5 (3pm) - Provides interoperable MD5-based crypt() functions fgetpwent_r (3) - get passwd file entry reentrantly getpwent_r (3) - get passwd file entry reentrantly grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB lppasswd (1) - add, change, or delete digest passwords. pam_localuser (8) - require users to be listed in /etc/passwd passwd (1ssl) - compute password hashes passwd2des (3) - RFS password encryption smbpasswd (5) - The Samba encrypted password file smbpasswd (8) - change a user's SMB password SSL_CTX_set_default_passwd_cb (3ssl) - set passwd callback for encrypted PEM ... SSL_CTX_set_default_passwd_cb_userdata (3ssl) - set passwd callback for encry...
ちなみに、man man
で-k
オプションのところを見てみると。
$ man man ... man -k printf キーワード printf をマニュアルページ名と要約文の中から正規表現とし て検索します。一致するすべてのマニュアルページが表示されます。 apropos -r printf と同様です。 ...
info コマンド
これもオンラインマニュアルを表示するコマンド。
特色
- 多層構造
- コンテンツが章立てされた多層構造となっているケースが多い
- 比較的充実したコンテンツ
- 一概には言えないが、
man
<info
な感じらしい。
- 一概には言えないが、
Emacs
風の操作- ページ間移動があるので、このようなことが必要。
Emacs
に慣れていればよいが。。。
- ページ間移動があるので、このようなことが必要。
GUI
での操作GUI
表示出来るツールもある。基本操作はEmacs
だが、マウスも使えるようだ。
正直Emacs
に慣れていないので使わないだろう。。。
ヘルプメッセージ
簡単なオプションを調べたいときは、--help
オプションをコマンドにつけるといい。
$ command --help # 例 $ cat --help 使用法: cat [オプション]... [ファイル]... ファイル、または標準入力を連結し、標準出力に出力します。 -A, --show-all -vETと同じ -b, --number-nonblank 空行を除いて行番号を付け加える。-n より優先される -e -vEと同じ -E, --show-ends 行の最後に $ を付け加える -n, --number 全ての行に行番号を付け加える -s, --squeeze-blank 連続した空行の出力を抑止する -t -vTと同じ -T, --show-tabs TAB文字を`^I'で表示 -u (無視) -v, --show-nonprinting 非表示文字と`^'や`^'を付けて表示 (LFDとTABは除く) --help この使い方を表示して終了する --version バージョン情報を表示して終了する ファイルの指定がなかったり, - であった場合, 標準入力から読み込みます. 例: cat f - g 最初に f の中身を出力し、次に標準入力を出力します。 そして g の中身を出力します。 cat 標準入力を標準出力に複製します。 cat のバグを発見した場合は bug-coreutils@gnu.org に報告してください。 GNU coreutils のホームページ: <http://www.gnu.org/software/coreutils/> GNU ソフトウェアを使用する際の一般的なヘルプ: <http://www.gnu.org/gethelp/> cat の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。 完全な文書を参照する場合は info coreutils 'cat invocation' を実行してください。
ちなみに、--help
が不正なオプションの場合。
$ awk --help awk: not an option: --help
以上で、第5章 オンラインマニュアルは終わりです。 次回、第6章 セキュリティです。