命令完成 - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

命令完成

AWS Command Line Interface (AWS CLI) 包含與 bash 相容的指令完成功能,可讓您使用 Tab 鍵完成部分輸入的指令。您需要在大多數系統上手動設定此功能。

如需第 2 AWS CLI 版自動提示功能的相關資訊,請參閱讓 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 的 Amazon EC2 執行個體上,系統預設會自動設定和啟用命令完成功能。

確認完成標籤的資料夾位於您的路徑中

為了使 AWS 完成者成功工作,aws_completer需要在 shell 的路徑中。which 命令可以檢查完成標籤是否位於您的路徑中。

$ which aws_completer /usr/local/bin/aws_completer

如果該命令找不到完成標籤,請使用下列步驟將完成標籤的資料夾新增到您的路徑中。

步驟 1:找到 AWS 完成者

根據所使用的安裝方法, AWS 完成者的位置可能會有所不同。

  • P@@ ackage 管理員-程式 (例如pipyumbrew、),apt-get通常會將 AWS 完整程式 (或符號連結) 安裝到標準路徑位置。

    • 如果您使用的是不含 --user 參數的 pip,預設路徑為 /usr/local/bin/aws_completer

    • 如果您使用的是包含 --user 參數的 pip,預設路徑為 /home/username/.local/bin/aws_completer

  • Bundled Installer – 如果您使用的是 Bundled Installer,預設路徑為 /usr/local/bin/aws_completer

如果所有其他方法都失敗了,您可以使用find命令來搜索文件系統中的 AWS 完成者。

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

步驟 2:識別您的 Shell

若要識別您使用的是哪一種 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,以在每次開啟新 Shell 時執行該檔案。您的 ~/.bash_profile 應指定 ~/.bashrc 的來源,以確保命令也會在登入 Shell 中執行。

  • zsh – 若要執行命令完成,您必須將下列自動載入行加到 ~/.zshrc 設定檔指令碼末尾,以執行 bashcompinit

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

    若要啟用命令完成,請使用內建命令 complete

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

    新增先前的命令到 ~/.zshrc,以在每次開啟新 Shell 時執行該檔案。

  • tcsh - tcsh 的完成採用文字類型及模式來定義完成行為。

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

    新增先前的命令到 ~/.tschrc,以在每次開啟新 Shell 時執行該檔案。

啟用命令完成後,驗證命令完成 開始運作。

驗證命令完成

啟用命令完成之後,請重新載入您的 Shell、輸入命令的部分文字並按下 Tab,即可查看可用的命令。

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

在 Windows 上設定命令完成

注意

如需有關如何 PowerShell 處理完成項目 (包括其各種完成金鑰) 的詳細資訊,請參閱 Microsoft 文件中的關於 Tab_ Expansion。 PowerShell

若要在 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 文件網站 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 + Space

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