AWS関連コマンドとか ec2-xxxx-yyyy-zzzzz みたいなコマンドが大量にありすぎて、TAB補完しても目的のコマンドが全然探せない!
じゃーgrepすりゃいいかって思った瞬間に気づく…、補完候補ってってパイプに流せないじゃん!?
そこでcompgenですよ。
実のところbashの補完機能の裏ではまさにこのcompgen
という組み込みコマンドが大活躍してる。こいつが全ての補完候補を作ってくれていると言っても過言ではないだろう。なので、補完リストを取りたいんならcompgenを直接使いこなしてしまうのが一番ってわけだ。
何かいっぱいオプションあるけど、-c オプションを抑えておけば十分です。
compgen -c ec2-
とかやるとec2-まで入力してTAB補完したのとほぼ同じリストが出力される(aliasとかfunctionとかはこれだと出ないけど割愛)。
利用例
だからインスタンス操作系のコマンドって何があるのかなーと思ったら↓こんな感じで探せる。
$ compgen -c ec2- | sort | grep instance
ec2-bundle-instance
ec2-cancel-reserved-instances-listing
ec2-cancel-spot-instance-requests
ec2-confirm-product-instance
ec2-create-instance-export-task
ec2-create-reserved-instances-listing
ec2-describe-instance-attribute
ec2-describe-instance-status
ec2-describe-instances
ec2-describe-reserved-instances
ec2-describe-reserved-instances-listings
ec2-describe-reserved-instances-offerings
ec2-describe-spot-instance-requests
ec2-import-instance
ec2-modify-instance-attribute
ec2-monitor-instances
ec2-purchase-reserved-instances-offering
ec2-reboot-instances
ec2-report-instance-status
ec2-request-spot-instances
ec2-reset-instance-attribute
ec2-run-instances
ec2-start-instances
ec2-stop-instances
ec2-terminate-instances
ec2-unmonitor-instances
AWSのインスタンス操作系コマンドはそれだけでも数が多い方からこれでも多く見えるけど…、ec2-での候補は166個もあったのにinstanceでgrepしたら22個だよ!
かなり探しやすくなったでしょ?