fish shell で AWS CLI のオートコンプリートをセットアップできた人はいますか? AWS のドキュメントでは、bash、tcsh、および zsh のガイドのみが提供されています。
Bash は変数COMP_LINE
をエクスポートCOMP_POINT
し、Amazon が提供する aws_completer スクリプトによって使用されます。魚に相当するものはありますか?私は魚の殻が初めてで、試してみています。
fish shell で AWS CLI のオートコンプリートをセットアップできた人はいますか? AWS のドキュメントでは、bash、tcsh、および zsh のガイドのみが提供されています。
Bash は変数COMP_LINE
をエクスポートCOMP_POINT
し、Amazon が提供する aws_completer スクリプトによって使用されます。魚に相当するものはありますか?私は魚の殻が初めてで、試してみています。
私も彼を働かせたいと思っており、ある程度の進歩はありましたが、完璧ではありません。
まず、as_completer が期待する bash 環境変数をエミュレートする方法を理解するのに役立つ、ここからいくつかのアドバイスを調べます。
それをまとめると、私はこれを得る:
complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); /usr/local/bin/aws_completer; end)'
それはほとんど機能しますが、偽の余分なスラッシュが表示されるため、「aws ec2 describe-instances --」を完了しようとすると、次のようになります。
dave@retino ~> aws ec2 describe-instances --
--ca-bundle\ --color\ --filters\ --no-dry-run\ --output\ --region\
--cli-connect-timeout\ --debug\ --generate-cli-skeleton --no-paginate\ --page-size\ --starting-token\
--cli-input-json\ --dry-run\ --instance-ids\ --no-sign-request\ --profile\ --version\
--cli-read-timeout\ --endpoint-url\ --max-items\ --no-verify-ssl\ --query\
末尾に空白文字があるように見えますが、sed を使用して削除しようとしました:
complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); echo (/usr/local/bin/aws_completer | sed -e \'s/[ ]*//\') ; end)'
しかし、これは役に立たないようです。fish はコンプリータとして bash とは異なる出力フォーマットを期待しているようです。そして実際、完全なビルトインの魚の間引きは、スペースで区切られたリストを期待していると言っています。
だから私は xargs で行を結合しようとしました:
complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); echo (/usr/local/bin/aws_completer | sed -e \'s/[ ]*//\') | xargs echo ; end)'
しかし、これもうまくいきません。私はちょうど1つの完了を取得します
これは面倒です、私はとても近くにいますが、うまくいきません!
この行を.config/fish/config.fish
complete --command aws --no-files --arguments '(begin; set --local --export COMP_SHELL fish; set --local --export COMP_LINE (commandline); aws_completer | sed \'s/ $//\'; end)'
aws-cli がインストールされていることを確認したい場合:
test -x (which aws_completer); and complete --command aws --no-files --arguments '(begin; set --local --export COMP_SHELL fish; set --local --export COMP_LINE (commandline); aws_completer | sed \'s/ $//\'; end)'
すべてのクレジットはこの問題のスレッドに属し、素晴らしい SO 貢献者 @scooter-dangle によるコメントです。
virtualenv/bin/activate で使用するコマンドは次のとおりです。
complete -C aws_completer aws
aws-cli にも魚のサポートがあるようです。aws-cli で提供されるバンドルされたインストーラーがあり、チェックアウトする価値があるかもしれません: activate.fish。aws コマンドと同じ bin ディレクトリにありました。
例えば:
ubuntu@ip-xxx-xx-x-xx:/data/src$ tail -n1 ~/venv/bin/activate
complete -C aws_completer aws
ubuntu@ip-xxx-xx-x-xx:/data/src$ source ~/venv/bin/activate
(venv) ubuntu@ip-xxx-xx-x-xx:/data/src$ aws s3 <- hitting TAB here
cp ls mb mv presign rb rm sync website
(venv) ubuntu@ip-xxx-xx-x-xx:/data/src$ aws s3