Linux 現在の環境で利用可能なコマンド一覧をcompgenで表示
compgen
現在の環境で利用可能なコマンド一覧を表示する方法は、Stack Overflowによるとbash組み込みコマンドのcompgen
を使うとよいとのこと(TAB
を2回押して補完候補を全部出す方法はパイプが使えないし)。
man compgen
によると補完で使われているコマンドらしい。
compgen [option] [word]
option に従って、word にマッチする補完候補のリストを生成します。 オプションには complete 組み込みコマンドと同じものが指定できますが、 -p と -r は指定できません。 マッチのリストは標準出力に出力されます。 -F や -C オプションを使用したときは、 プログラム補完機能によって設定された様々なシェル変数は、 利用可能であっても有用な値を持ちません。
マッチのリストは、同じフラグによる補完仕様で プログラム補完のコードが直接生成したかのように 生成されます。 word が指定されると、word にマッチする補完だけが表示されます。
戻り値は、 無効なオプションが指定された場合やマッチが生成されなかった場合以外は 真になります。
compgen -c(外部コマンド)
外部コマンド一覧を表示する。
$ compgen -c egrep fgrep grep l. ll …省略…
compgen -a(エイリアス)
エイリアス一覧を表示する。外部コマンドと結果は同じだがエイリアスは設定されている。
エイリアスはalias
でも確認可能。
$ compgen -a egrep fgrep grep l. ll …省略…
compgen -b(組み込みコマンド)
組み込みコマンド(ビルトインコマンド)一覧を表示する
$ compgen -b . : [ alias bg …省略…
組み込みコマンドはtype
だと以下のようになる(alias
が組み込みコマンド)。
$ type alias alias はシェル組み込み関数です $ type cut cut は /usr/bin/cut です
compgen -k(キーワード)
if
などのキーワード一覧を表示する。
$ compgen -k if then else elif fi …省略…
compgen -A function(関数)
関数一覧を表示する。
$ compgen -A function __fzf_cd__ __fzf_generic_path_completion __fzf_history__ __fzf_select__ __fzf_select_tmux__ …省略…
compgen -A function -abck(上記全部)
上記全部を表示する場合。
$ compgen -A function -abck
zshの場合
zshの場合はcompgen
を実行すると、
$ compgen zsh: command not found: compgen
のようになるので下記コマンドを実行すると使えるようになる。
$ autoload -Uz bashcompinit $ bashcompinit