在中配置命令完成 AWS CLI - AWS Command Line Interface

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在中配置命令完成 AWS CLI

AWS Command Line Interface (AWS CLI) 包括与 bash 兼容的命令完成功能,允许您使用 T ab 键完成部分输入的命令。在大多数系统上,您需要手动配置此功能。

有关 AWS CLI 版本 2 自动提示功能的信息,请参阅在中启用和使用命令提示符 AWS CLI

工作原理

当您部分输入命令、参数或选项时,命令完成功能会自动完成您的命令或显示建议的命令列表。要提示命令完成,请输入部分命令并按下完成键,通常是 Tab 在大多数炮弹中。

以下示例显示了可以使用命令完成的不同方法:

  • 部分输入命令并按 Tab 以显示建议的命令列表。

    $ aws dynamodb dTAB delete-backup describe-global-table delete-item describe-global-table-settings delete-table describe-limits describe-backup describe-table describe-continuous-backups describe-table-replica-auto-scaling describe-contributor-insights describe-time-to-live describe-endpoints
  • 部分输入参数并按 Tab 以显示建议的参数列表。

    $ aws dynamodb delete-table --TAB --ca-bundle --endpoint-url --profile --cli-connect-timeout --generate-cli-skeleton --query --cli-input-json --no-paginate --region --cli-read-timeout --no-sign-request --table-name --color --no-verify-ssl --version --debug --output
  • 输入参数并按 Tab 以显示建议的资源值列表。此功能仅在 AWS CLI 版本 2 中可用。

    $ aws dynamodb db delete-table --table-name TAB Table 1 Table 2 Table 3

在 Linux 或 macOS 上配置命令完成

要在 Linux 或 macOS 上配置命令完成,您必须知道所使用的 Shell 的名称和 aws_completer 脚本的位置。

注意

默认情况下,在运行 Amazon Linux 的亚马逊EC2实例上,命令完成功能会自动配置和启用。

确认完成标签的文件夹在您的路径中

为了使 AWS 完成器成功运行,aws_completer需要在你的 shell 路径中。which 命令可以检查完成标签是否在您的路径中。

$ which aws_completer /usr/local/bin/aws_completer

如果 which 命令找不到完成标签,则按照以下步骤将完成标签的文件夹添加到您的路径中。

第 1 步:找到 AWS 完成者

根据所使用的安装方法, AWS 完成器的位置可能会有所不同。

  • Pack@@ age Manager-诸如pipyumbrew、、和之类的程序apt-get通常会将 AWS 完成器(或其符号链接)安装到标准路径位置。

    • 如果您使用没有 pip 参数的--user,则默认路径为 /usr/local/bin/aws_completer

    • 如果您使用包含 pip 参数的--user,则默认路径为 /home/username/.local/bin/aws_completer

  • 捆绑安装程序 – 如果您使用捆绑安装程序,则默认路径为 /usr/local/bin/aws_completer

如果所有其他方法都失败,则可以使用find命令在文件系统中搜索 AWS 完成器。

$ find / -name aws_completer /usr/local/bin/aws_completer

步骤 2:识别 Shell

要识别您正在使用的 Shell,可以使用以下命令之一。

  • echo $ SHELL — 显示外壳程序的程序文件名。这通常会与所使用的 Shell 的名称匹配,除非您在登录后启动了不同的 Shell。

    $ echo $SHELL /bin/bash
  • ps – 显示为当前用户运行的进程。其中之一是 Shell。

    $ ps PID TTY TIME CMD 2148 pts/1 00:00:00 bash 8756 pts/1 00:00:00 ps

步骤 3:将完成标签添加到您的路径中

  1. 在您的用户文件夹中查找 Shell 的配置文件脚本。

    $ ls -a ~/ . .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
    • Bash.bash_profile.profile.bash_login

    • Zsh.zshrc

    • Tcsh.tcshrc.cshrc.login

  2. 在配置文件脚本末尾添加与以下示例类似的导出命令。将 /usr/local/bin/ 替换为您在上一部分中找到的文件夹。

    export PATH=/usr/local/bin/:$PATH
  3. 将配置文件重新加载到当前会话中,以使更改生效。将 .bash_profile 替换为您在第一部分中找到的 shell 脚本的名称。

    $ source ~/.bash_profile

启用命令完成

确认完成标签在您的路径中后,通过运行正在使用的 Shell 的相应命令来启用命令完成。您可以将命令添加到 Shell 的配置文件中,以便在每次打开一个新 Shell 时运行它。在每个命令中,替换 /usr/local/bin/ 在您的系统中找到的路径确认完成标签的文件夹在您的路径中

  • bash – 使用内置命令 complete

    $ complete -C '/usr/local/bin/aws_completer' aws

    将之前的命令添加到 ~/.bashrc 中,以便在每次打开一个新外壳程序时运行它。您的 ~/.bash_profile 应指定源 ~/.bashrc,以确保该命令也在登录 Shell 中运行。

  • zsh – 要运行命令完成功能,您需要在 ~/.zshrc 配置文件脚本的末尾添加以下自动加载行来运行 bashcompinit

    $ autoload bashcompinit && bashcompinit $ autoload -Uz compinit && compinit

    要启用命令完成,请使用内置命令 complete

    $ complete -C '/usr/local/bin/aws_completer' aws

    将之前的命令添加到 ~/.zshrc 中,以便在每次打开一个新外壳程序时运行它。

  • tcshtcsh 的完成采用字类型和样式来定义完成行为。

    > complete aws 'p/*/`aws_completer`/'

    将之前的命令添加到 ~/.tschrc 中,以便在每次打开一个新外壳程序时运行它。

启用命令完成后,验证命令完成 正在工作。

验证命令完成

启用命令完成后,重新加载 Shell,输入部分命令并按 Tab 查看可用命令。

$ aws sTAB s3 ses sqs sts swf s3api sns storagegateway support

在 Windows 上配置命令完成

注意

有关如何 PowerShell 处理其完成情况(包括各种完成键)的信息,请参阅 Microsoft 文档中的 about_tab_Expans ion。 PowerShell

要 PowerShell 在 Windows 上启用命令完成功能,请在中完成以下步骤 PowerShell。

  1. 使用以下命令打开你的 $PROFILE

    PS C:\> Notepad $PROFILE

    如果没有 $PROFILE,请使用以下命令创建用户配置文件。

    PS C:\> if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }

    有关 PowerShell 配置文件的更多信息,请参阅 Microsoft 文档网站 PowerShell ISE上的如何在 Windows 中使用配置文件。

  2. 要启用命令完成,请将以下代码块添加到您的配置文件中,保存,然后关闭文件。

    Register-ArgumentCompleter -Native -CommandName aws -ScriptBlock { param($commandName, $wordToComplete, $cursorPosition) $env:COMP_LINE=$wordToComplete if ($env:COMP_LINE.Length -lt $cursorPosition){ $env:COMP_LINE=$env:COMP_LINE + " " } $env:COMP_POINT=$cursorPosition aws_completer.exe | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) } Remove-Item Env:\COMP_LINE Remove-Item Env:\COMP_POINT }
  3. 启用命令完成功能后,重新加载 Shell,输入命令的一部分并按 Tab 可循环浏览可用命令。

    $ aws sTab
    $ aws s3

    要查看完成后可用的所有命令,请输入命令的一部分并按 Ctrl + 空格键

    $ aws sCtrl + Space s3 ses sqs sts swf s3api sns storagegateway support