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コマンド一覧と概要で確認できます。

公式文書を参照