命令完成 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

命令完成

Amazon Command Line Interface (Amazon CLI) 包含一个与 Bash 兼容的命令完成功能,让您可以使用 Tab 键完成部分输入的命令。在大多数系统上,您需要手动配置此功能。

有关 Amazon CLI 版本 2 自动提示功能的信息,请改为参阅 让 Amazon CLI 提示您输入命令

工作原理

当您部分输入命令、参数或选项时,命令完成功能会自动完成您的命令或显示建议的命令列表。要提示命令完成,请输入命令的一部分并按完成键(在大多数 Shell 中,它通常为 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 键以显示建议的资源值列表。此功能仅在 Amazon 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 的 Amazon EC2 实例上自动配置和启用命令完成。

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

要让Amazon完成标签成功运行,aws_completer 必须在您的 Shell 路径中。which 命令可以检查完成标签是否在您的路径中。

$ which aws_completer /usr/local/bin/aws_completer

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

步骤 1:定位Amazon完成标签

Amazon 完成标签的位置可能随所用安装方法而异。

  • 程序包管理器pipyumbrewapt-get 等程序通常在标准路径位置安装Amazon完成标签(或其符号链接)。

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

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

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

如果所有其他操作都失败,您可以使用 find 命令在您的文件系统中搜索Amazon完成标签。

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

步骤 2:识别 Shell

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

  • echo $SHELL – 显示 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 PowerShell Docs 中的 about_Tab_Expansion

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

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

    PS C:\> Notepad $PROFILE

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

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

    有关 PowerShell 配置文件的详细信息,请参阅 Microsoft Docs 网站上的如何在 Windows PowerShell ISE 中使用配置文件

  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