files configurar cli aws amazon-web-services aws-cli fish tab-completion

amazon-web-services - files - configurar aws cli



Finalización del comando AWS CLI con cáscara de pescado (4)

De hecho, es posible mapear la finalización de bash a fish''s.

Ver las terminaciones npm .

Sin embargo, es probable que todavía sea mejor escribir un script de fish real (¡no es difícil!).

¿Alguien ha podido configurar el autocompletado para el CLI de AWS con una concha de pez? La documentación de AWS solo ofrece la guía para bash, tcsh y zsh.

Bash exporta las variables COMP_LINE y COMP_POINT que utiliza el script aws_completer proporcionado por Amazon. ¿Hay algún equivalente para el pescado? Soy nuevo con la cáscara de pescado y lo estoy probando.


El comando que uso en mi virtualenv / bin / activar es este:

complete -C aws_completer aws

Parece que aws-cli también tiene soporte para peces. Hay un instalador incluido con aws-cli que vale la pena revisar: active.fish . Lo encontré en el mismo directorio bin que el comando aws.


Mientras que la respuesta proporcionada no responde la pregunta directamente sobre el uso de fish ; Tengo la intención de proporcionar una respuesta para ayudar en el contexto de auto-completion y shell .

Amazon ha lanzado una nueva herramienta basada en CLI AWSCLI de AWSCLI .

aws-shell es un programa de shell de línea de comandos que proporciona funciones de conveniencia y productividad para ayudar a los usuarios nuevos y avanzados de la interfaz de línea de comandos de AWS. Las características clave incluyen lo siguiente.

Autocompletado difuso

  • Comandos (por ejemplo, ec2, describe-instance, sms, create-queue)
  • Opciones (por ejemplo, --instance-ids, --queue-url)
  • Identificadores de recursos (por ejemplo, ID de instancia de Amazon EC2, URL de cola de Amazon SQS, nombres de temas de Amazon SNS)

Documentación dinámica en línea.

  • La documentación para los comandos y las opciones se muestran a medida que escribe

Ejecución de comandos shell del sistema operativo.

  • Use comandos comunes del sistema operativo como cat, ls, y cp y entradas y salidas de tuberías sin salir de la shell
  • Exportación de comandos ejecutados a un editor de texto Para obtener más información, consulte la publicación del blog relacionado en el blog de la interfaz de línea de comandos de AWS .


También quiero hacer que funcione, y he hecho algunos progresos, pero no es perfecto.

Primero observo algunos consejos desde here que ayudan a ver cómo emular las variables de entorno bash que as_completer espera.

Juntándolo entiendo esto:

complete -c aws -f -a ''(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); /usr/local/bin/aws_completer; end)''

La mayoría de las veces funciona, pero obtengo barras adicionales espurias, así que si intento completar "aws ec2 describe-instance -" obtengo:

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/

A mi me parece que hay un caracter de espacios en blanco al final, pero traté de eliminarlo usando 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)''

Pero esto no parece ayudar. Parece que los peces esperan un formato de salida diferente al de bash para su completador. Y, de hecho, la complete los complete dice que se espera una lista separada por espacios.

Así que intenté unir las líneas con 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)''

Pero esto tampoco funciona. Acabo de obtener una terminación

Esto es molesto, estoy tan cerca, ¡pero no funciona!