Подтвердить что ты не робот

Командная команда AWS CLI с рыбным снарядом

Кто-нибудь смог настроить автозаполнение для AWS CLI с рыбной раковиной? Документация AWS предлагает только руководство для bash, tcsh и zsh.

Bash экспортирует переменные COMP_LINE и COMP_POINT, которые используются aws_completer script, предоставленные Amazon. Есть ли эквивалент для рыбы? Я новичок в рыбной раковине, и я даю ему попробовать.

4b9b3361

Ответ 1

Я также хочу заставить его работать, и я добился определенного прогресса, но это не идеально.

Сначала я смотрю несколько советов из здесь, который помогает показать, как эмулировать переменные среды bash, которые ожидаются as_completer.

Объединяя это, я получаю следующее:

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-экземпляры", я получаю:

[email protected] ~> 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\

Мне кажется, что есть конечный пробел char, но я попытался удалить его с помощью 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)'

Но это, похоже, не помогает. Похоже, что рыба ожидает другой формат вывода, чем 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)'

Но это тоже не сработает. Я просто получаю одно завершение

Это раздражает, я так близко, но это не работает!

Ответ 2

Хотя предоставленный ответ не отвечает непосредственно на вопрос об использовании fish; Я намерен дать ответ, чтобы помочь в контексте auto-completion и shell.

Amazon запустил новый инструмент, основанный на CLI, от AWSCLI.

aws-shell - это программа командной строки, которая обеспечивает удобство и производительность, помогая как новым, так и опытным пользователям интерфейса командной строки AWS. Ключевые особенности включают следующее.

Нечеткое автозаполнение

  • Команды (например, ec2, description-instance, sms, create-queue)
  • Опции (например, --instance-ids, --queue-url)
  • Идентификаторы ресурсов (например, идентификаторы экземпляров Amazon EC2, URL-адреса очереди Amazon SQS, названия тем Amazon SNS) enter image description here

Динамическая встроенная документация

  • Документация для команд и параметров отображается при вводе enter image description here

Выполнение команд оболочки ОС

  • Используйте обычные команды ОС, такие как cat, ls и cp, а также входы и выходы pipe, не выходя из оболочки enter image description here
  • Экспорт выполненных команд в текстовый редактор. Чтобы узнать больше, ознакомьтесь с соответствующей публикацией в блоге интерфейса командной строки AWS.

enter image description here

Ответ 3

На самом деле можно сопоставить завершение bash для рыбы.

Смотрите завершение npm.

Однако, возможно, еще лучше написать настоящую рыбу script (это не сложно!).

Ответ 5

Команда, которую я использую в моем virtualenv/bin/activ, выглядит так:

complete -C aws_completer aws

Похоже, у aws-cli тоже есть рыбная поддержка. Существует идущий в комплекте инсталлятор предоставляется AWS-кли, что может быть стоит проверить: activate.fish. Я нашел его в том же каталоге bin, что и команда aws.

Например:

[email protected]:/data/src$ tail -n1 ~/venv/bin/activate
complete -C aws_completer aws
[email protected]:/data/src$ source ~/venv/bin/activate
(venv) [email protected]:/data/src$ aws s3         <- hitting TAB here
cp        ls        mb        mv        presign   rb        rm        sync      website
(venv) [email protected]:/data/src$ aws s3