補完されているコマンドの一覧を取得したいという場合、単純に考えると以下のように$PATHを分解して各ディレクトリごとのファイル一覧を取得するような処理が考えつく。

echo -e ${PATH//:/\\n}|xargs -I@ ls -1 @ 2>/dev/null | sort
echo -e ${PATH//:/\\n}|xargs -I@ ls -1 @ 2>/dev/null | sort | grep ^STR

ただ、実はこんなことをしなくてもbashで用意されている補完用のコマンド「compgen」を使うことで、もっとスマートにコマンド一覧を取得できる。

comp...