manを実行すると「No manual entry for ...」と表示されるコマンドの利用方法をどうしても知りたい時の対処法

動作環境

macOS Mojave

# echo $0
/bin/bash

利用可能なコマンド一覧を取得するには、compgen -A commandまたはcompgen -acを実行すればよいことを知りました。

そこで、man compgenで詳しい利用法を確認しようとするとNo manual entry for compgenというメッセージが表示されるだけで、マニュアルが開かれることはありませんでした。

なぜ、上記のようになるか調べたので自分用のメモとして残しておきます。

which commandから/usr/bin/に配置されているプログラムを実行するLinuxコマンドの他に、shellに初期から組み込まれているビルトインコマンドがあります。

compgenはビルトインコマンドであったので、manコマンドでマニュアルを開くことができませんでした。

ビルトインコマンドを利用方法を知りたい時のために、helpコマンドが用意されています。

help compgenの実行結果は下記の通りです。

compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word]
    Display the possible completions depending on the options.  Intended
    to be used from within a shell function generating possible completions.
    If the optional WORD argument is supplied, matches against WORD are
    generated.

helpコマンド単体で実行すると、ビルトインコマンドの一覧が表示されます。

ビルトインコマンドかどうかを知るためには、type compgenを実行します。

type compgenの結果は、compgen is a shell builtinであることからビルトインコマンドであることがわかります。

まとめ

  • compgen -acで利用可能なコマンドの一覧を知ることができる

  • 通常のコマンドとビルドインコマンドがある

  • ビルドインコマンドは、helpやtypeコマンドで確認することができる

[改訂第3版]Linuxコマンドポケットリファレンス

[改訂第3版]Linuxコマンドポケットリファレンス