Linux / コマンド / help - シェル組み込みコマンドのヘルプ確認
helpは、Bashが提供する組み込みコマンドとシェル文法の使用方法を確認する組み込みコマンドです。cd、read、alias、forのように別の実行ファイルではなくシェル自体に含まれている機能は、manよりhelpで確認する方が速くて正確です。
最も基本的な使い方はhelp 項目です。簡単な文法だけ確認したり、短い説明のリストを作ったり、マニュアルページのような形式で出力することもできます。
helpコマンドとは?
Bash組み込みコマンド(builtin)は、シェルプロセスの中で直接実行される機能です。現在のシェルの作業ディレクトリを変更するcd、標準入力の行を読み取って変数へ代入するread、エイリアスを管理するaliasのようにシェルの状態と密接なコマンドが代表的です。
helpは、これらBash組み込みコマンドに加えて、if、for、while、[[のようなシェル文法項目のヘルプも提供します。Bash以外のシェルでは、コマンドの存在有無や出力形式が異なる場合があります。
基本文法と使用例
help [-dms] [パターン]
引数なしで実行すると、現在の Bash で提供される組み込みコマンドと文法項目の一覧を出力します。
help
特定のコマンドの詳細なヘルプを見るには、その名前を指定します。
help cd
help read
help printf
シェル文法も同じ方法で確認できます。いくつかの記号はシェルが先に解釈する可能性があるため、引用符で囲む方が安全です。
help if
help for
help '[['
help オプション
| オプション | 説明 |
|---|---|
-d |
各項目の簡単な説明のみを出力します。 |
-m |
ヘルプをマニュアルページに似た形式で出力します。 |
-s |
コマンドの簡単な使用形式(シノプシス)のみを出力します。 |
スクリプトを作成しながら引数の配置だけを素早く確認したいときは、-sが便利です。
help -s read
help -s getopts
簡単な説明のリストが必要な場合は-d、段落で区切られた詳しい説明が必要な場合は-mを使用します。
help -d cd
help -m cd
パターンで複数のヘルプを探す
接頭辞で検索する
正確に一致する項目がない場合、Bashは入力したパターンと接頭辞が一致するヘルプを探します。例えば次のコマンドは、compgen、complete、compoptなど、compで始まる項目を表示することがあります。
help comp
ワイルドカードパターンを使用する
パターンにシェルパターン文字が含まれる場合、一致するすべてのヘルプ項目を出力します。パターンが現在のディレクトリのファイル名として先に展開されないように、引用符で囲みます。
help 'read*'
help '*dir*'
grepで全体のリストを検索する方法もありますが、まずhelpのパターン機能を使うと、ヘルプ項目名に基づいた結果を得ることができます。
組み込みコマンドかどうか確認してから help を使用する
コマンドの種類がはっきりしない場合は type で確認します。結果が shell builtin であれば、help が最も直接的な説明を提供することが多いです。
type cd
type printf
type ls
printf のように、Bash 組み込みコマンドと外部実行ファイルの両方が存在することもあります。同じ名前で利用できる候補をすべて確認するには、次のように実行します。
type -a printf
help printf は Bash 組み込み printf を説明します。外部プログラムの動作を知りたい場合は、該当する実行ファイルの --help やマニュアルを確認する必要があります。ページの開き方と検索は、man コマンドでマニュアルを読む方法で説明しています。
help、--help、man の違い
| 方法 | 適切な対象 | 特徴 |
|---|---|---|
help 項目 |
Bash 組み込みコマンドとシェル構文 | 現在 Bash が直接提供する説明 |
コマンド --help |
外部プログラムと一部の組み込みコマンド | 短い文法とオプションを素早く確認 |
man コマンド |
コマンド、ファイル形式、システムコールなど | インストール済みのマニュアルページを詳細に確認 |
info コマンド |
Infoドキュメントを提供するGNUプログラム | ノードとインデックスで長いドキュメントを探索 |
cd --helpはBashでcd組み込みコマンドのヘルプを出力できますが、すべてのシェルやすべての組み込みコマンドで同じ方法を期待してはいけません。Bash組み込みコマンドはhelpを基準に確認する方が明確です。
実践的活用例
readのいくつかのオプションを確認する
readは入力、制限時間、区切り文字、配列などオプションが多くあります。まず使用形式を確認した後、詳細説明で必要なオプションを探します。
help -s read
help read
条件文と繰り返し文の文法を確認する
シェルスクリプトの予約語や複合コマンドもヘルプのテーマになることがあります。
help if
help while
help for
help case
パイプやファイルに出力する
helpの出力は標準出力に出るので、ページャーで読んだりファイルに保存したりすることができます。
help -m read | less
help -m read > read-help.txt
出力先の read-help.txt が既にあれば上書きされるので、保存前に確認してください。ファイルに保存した説明は当時のBashバージョンのヘルプなので、他のシステムにそのまま適用する前に、その環境のBashバージョンを確認してください。
シェルスクリプトでhelpの結果を確認する
要求したヘルプのトピックがある場合、通常終了状態は0で、一致するトピックがない場合は0以外の値を返します。これを利用して特定のヘルプ項目の存在有無を確認できます。
if help mapfile >/dev/null 2>&1; then
printf '%s\n' 'mapfile ヘルプを使用できます.'
else
printf '%s\n' '現在のシェルで mapfile ヘルプが見つかりませんでした.'
fi
しかし、機能サポートの有無を確認する目的であれば、helpの結果の文言を解析するより、type、command -v、または実際の機能チェックを使う方が安定しています。翻訳やBashのバージョンによってヘルプ文が異なる場合があるためです。
よくある質問
help: no help topics matchエラーが出ます
入力した名前がBashのヘルプトピックではないか、または現在のBashバージョンで提供されていない項目です。type 名前でコマンドの種類を確認し、外部プログラムであればコマンド --helpまたはman コマンドを使用してください。
shスクリプトでhelpが動作しません
helpはBashの組み込みコマンドです。/bin/shがBashでない他のシェルを指す場合や移植可能な POSIX シェルの機能だけを前提とするスクリプトでは、その存在を期待できません。Bash の POSIX モードでも help 自体は利用できますが、他のシェルへ移植できるという意味ではありません。Bash機能を使用するスクリプトであれば、インタプリタと実行環境を明確に指定する必要があります。
同じコマンドでもhelpとmanの説明が異なります
組み込みコマンドと外部プログラムは同じ名前を使用することがあります。type -a 名前で候補を確認した後、Bashの組み込みコマンドはhelp、外部実行ファイルは該当プログラムのマニュアルを読む必要があります。
helpは別のパッケージとしてインストールする必要がありますか?
いいえ。helpはBashの組み込みコマンドなので、Bashに含まれています。現在のシェルがBashでない場合、同じコマンドがなかったり、機能が異なる場合があります。
すべてのLinuxコマンドをhelpで検索できますか?
いいえ。helpの主な対象はBashの組み込みコマンドとシェル構文です。外部コマンドは--help、man、info または公式ドキュメントを使用してください。
簡単な構文の一行だけ見たい場合、どのオプションを使用しますか?
help -s 項目を使用します。短い説明まで必要な場合は-d、マニュアルに似た形式が必要な場合は-mを使用します。
まとめ
helpは、Bashの組み込みコマンドとシェル構文を確認する最も直接的なツールです。help 項目で詳細な説明を読み、-sで構文だけを確認し、パターンを使って関連項目を一緒に探すことができます。
コマンドの種類がはっきりしない場合は、まずtypeで確認してください。外部プログラムには--helpとmanを使用し、その他の基本コマンドはLinuxコマンド一覧と概要で確認できます。




