命令完成 - AWS Command Line Interface

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

命令完成

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

有关 AWS CLI 版本 2 自动提示功能的信息,请改为参阅 让 AWS 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 键以显示建议的资源值列表。此功能仅在 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 的 Amazon EC2 实例上自动配置和启用命令完成。

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

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

$ which aws_completer /usr/local/bin/aws_completer

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

步骤 1:定位AWS完成标签

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

  • 程序包管理器pipyumbrewapt-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 的名称匹配,除非您在登录后启动了不同的 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