はじめに
経験豊富な 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やマニュアルページを利用できるため便利です。
簡易ヘルプと使用方法の構文を読む
このステップでは、組み込みコマンドのヘルプと--helpを使い、使用方法の表示でよく使われる記法の読み方を学びます。
cdはシェル組み込みコマンドなので、helpを使って Bash のドキュメントを表示します。
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などのページャーで開かれます。ビューアー内で次のキーを操作してみましょう。
- 下矢印: 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
各結果には、マニュアル名、括弧内のセクション番号、簡単な説明が含まれます。結果の 1 つに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、簡単な構文を確認するにはhelpまたは--help、詳しいドキュメントを読むにはman、トピックは分かっているもののコマンド名が分からない場合にはaproposを使うという、再利用可能なヘルプ活用法を学びました。これらのツールを使えば、すべてのオプションを暗記する必要がなくなり、コースの以降の内容でも、見慣れないコマンドを自分で調べられるようになります。



