Командная команда AWS CLI с рыбным снарядом
Кто-нибудь смог настроить автозаполнение для AWS CLI с рыбной раковиной? Документация AWS предлагает только руководство для bash, tcsh и zsh.
Bash экспортирует переменные COMP_LINE
и COMP_POINT
, которые используются aws_completer script, предоставленные Amazon. Есть ли эквивалент для рыбы? Я новичок в рыбной раковине, и я даю ему попробовать.
Ответы
Ответ 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 (это не сложно!).
Ответ 4
Это сработало для меня как очарование: https://github.com/aws/aws-cli/issues/1079#issuecomment-242923826. HTH ^ _ ^
Ответ 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