はじめに
Linuxに慣れたユーザーでも、すべてのコマンドやオプションを暗記しているわけではありません。名前の意味をシステムに確認する方法、簡単な使用方法を探す方法、詳しいドキュメントを開く方法、トピックからマニュアルを検索する方法を知っています。
この実験では、基本的なファイル操作の続きとして、cd、ls、cp などの使い慣れたコマンドを調べます。その後、/home/labex/project/command-help に小さな確認用ファイルを保存します。最後には、見慣れない構文に出会っても、行き詰まるのではなくドキュメントを確認して解決できるようになります。
コマンド名の種類を確認する
このステップでは、適切なヘルプの参照先を選べるように、シェル組み込みコマンド、エイリアス、実行可能ファイルを区別します。
実験用の作業ディレクトリに移動します。
cd /home/labex/project/command-help
シェルそのものを変更する必要があるコマンドは、シェルに組み込まれています。cd がどの種類のコマンドか、シェルに確認します。
type cd
次の内容を含む出力が表示されます。
cd is a shell builtin
別の名前は、シェルで設定された短縮名であるエイリアスや、ファイルとして保存された外部プログラムの場合があります。ls の種類を確認します。
type ls
シェルの設定によって、エイリアスまたは実行可能ファイルのパスが表示されます。type -a を使うと、シェルが見つけられる一致する形式をすべて表示できます。
type -a ls
command -V でも、コマンドの種類を読みやすい形で確認できます。
command -V cp
command -v は、シェルが実際に選択するコマンドまたはパスを表示します。
command -v cp
簡単な分類レポートを保存します。最初の > はレポートを新規作成または置き換えます。その後の >> は、前の行を消さずに各コマンドの出力を追加します。
type cd > command-types.txt
type ls >> command-types.txt
command -V cp >> command-types.txt
cat command-types.txt
レポートには、cd がシェル組み込みコマンドであることと、ls および cp の種類が記録されます。コマンドの種類を把握しておくと、シェル組み込みコマンドにはシェル固有のドキュメントを使い、外部プログラムには通常 --help やマニュアルページを使う、という判断ができます。
簡易ヘルプと使用方法の構文を読む
このステップでは、組み込みのヘルプと --help を使い、使用方法の表示で使われる一般的な記法を読み取ります。
cd はシェル組み込みコマンドなので、Bashにドキュメントを表示させます。実験用のターミナルはZshを使用しており、help は単独のコマンドではなくBashの組み込みコマンドです。そのため、Bashを明示的に起動します。
bash -c 'help cd'
最初の行には、cd [-L|[-P ...]] [dir] に似た使用方法のパターンが表示されます。まだすべてのオプションを理解する必要はありません。まず構造に注目してください。最初にコマンド名があり、角括弧内の項目は省略可能です。
外部プログラムは、多くの場合 --help に対応しています。ls のヘルプは長いため、ここではこのコースで初めて パイプライン を意図的に使います。パイプは | と記述します。左側のコマンドが通常の出力を書き出し、右側のコマンドがその出力を入力として受け取ります。ここでは head -n 8 が最初の8行だけを残します。
ls --help | head -n 8
最初の行は、次のような形式です。
Usage: ls [OPTION]... [FILE]...
[OPTION]... は、オプションが0個以上あることを表します。[FILE]... は、ファイルまたはディレクトリの引数が0個以上あることを表します。角括弧は構文を示す記号であり、文字どおり入力するものではありません。
ファイルのコピーに使うコマンドの簡易ヘルプも確認します。
cp --help | head -n 8
両方のコマンドの先頭部分を、セクション名付きで保存します。> は新しいファイルを開始し、>> は後続の各セクションを追加します。
echo "=== ls ===" > quick-help.txt
ls --help | head -n 3 >> quick-help.txt
echo "=== cp ===" >> quick-help.txt
cp --help | head -n 3 >> quick-help.txt
cat quick-help.txt
この小さなファイルは、完全なヘルプテキストの代わりにはなりません。コマンドの使用方法を見つけ、その形式を読み取れることを確認するためのものです。
マニュアルページを操作する
このステップでは、対話型の man ビューアーを使い、マニュアルのセクションが何を意味するかを学びます。
ls のマニュアルページを開きます。
man ls
マニュアルは通常、less などのページャーで開きます。ビューアー内で次のキーを使って操作します。
- 下矢印キー(Down Arrow):1行下へ移動します。
- スペースキー(Space):1画面分先へ進みます。
- b:1画面分前へ戻ります。
/sortと入力してEnterキーを押す:sortを前方検索します。- n:次の一致箇所へ移動します。
- q:終了してシェルのプロンプトに戻ります。
見出しには通常 LS(1) と表示されます。この数字はマニュアルのセクションを示します。セクション1には一般ユーザー向けのコマンドが含まれます。その他のセクションでは、システムコール、ライブラリ関数、設定形式、管理用コマンドなどを扱います。
man -f を使うと、「whatis」検索とも呼ばれる1行の説明を表示できます。
man -f ls
同じマニュアルページから、対話操作を必要としない抜粋を保存します。次のパイプラインを左から右へ読みます。-P cat は man にページャーを開かず出力させ、col -b は端末表示用の制御文字を削除し、head -n 20 は20行だけを残し、> は最終的な出力を保存します。
man -P cat ls | col -b | head -n 20 > ls-man-excerpt.txt
cat ls-man-excerpt.txt
マニュアルの見出し、名前、概要、説明の冒頭が表示されます。これにより、対話型ビューと非対話型ビューが同じドキュメントから得られていることを確認できます。
トピックからコマンドを見つける
このステップでは、作業内容は分かっているものの、コマンド名が分からない場合に apropos を使います。
apropos は、マニュアルデータベースに保存された短い説明を検索します。パスワード関連のドキュメントを検索します。
apropos password | head -n 15
各結果には、マニュアル名、括弧内のセクション、短い説明が含まれます。結果の中に passwd を説明する項目が表示されます。
ファイル関連のトピックを検索します。
apropos file | head -n 20
範囲の広いキーワードでは、多くの結果が返ります。より具体的なフレーズを指定すると、役立つ結果を得やすくなります。
apropos "copy files"
広範囲の検索結果をさらに絞り込むこともできます。-i オプションは grep で大文字と小文字を区別しないようにし、-m 5 は一致する行が5行に達した時点で停止させます。
apropos file | grep -i -m 5 'copy'
パスワード検索の全結果を保存し、後で調べられるようにします。
apropos password > password-topics.txt
grep -E '^passwd|change.*password' password-topics.txt | head
新しくインストールしたシステムで apropos が何も見つけられない場合は、マニュアルデータベースに sudo mandb が必要な可能性があります。この実験ではデータベースを自動的に準備していますが、この関係を覚えておくと、別の環境で問題が起きたときに原因を調べやすくなります。
まとめ
コマンドのヘルプを調べる手順を学びました。名前の種類を確認するには type または command -V を使い、簡単な構文を確認するにはBashの help などのシェル固有のヘルプや、プログラムの --help を使います。完全なドキュメントには man を使い、トピックは分かっていてもコマンド名が分からない場合は apropos を使います。これらのツールを使えば、すべてのオプションを暗記する必要がなくなり、コースのこれ以降の実験でも、見慣れないコマンドを自分で調べられるようになります。



