命令补全
名称
sco completion - 生成 Shell 命令补全脚本
说明
sco completion SHELL [flags]
描述
sco completion SHELL 会将对应 Shell 的补全脚本输出到标准输出。SHELL 可以是 bash、zsh、fish 或 powershell。该命令不会安装脚本,也不会自动修改 .zshrc、.bashrc、Fish 配置或 PowerShell Profile。
加载脚本后,可以输入 sco、子命令或标志的一部分并按 Tab 查看候选项。候选内容会随当前 profile、Region、已安装的 runtime 和组件而变化。
支持范围
| Shell | 常见环境 |
|---|---|
| Zsh | macOS 默认 Shell |
| Bash | Ubuntu 等 Linux 发行版 |
| Fish | 安装并使用 Fish 的 Linux 或 macOS 环境 |
| PowerShell | Windows PowerShell 或 PowerShell 7 |
WSL 请按其中运行的 Linux Shell 配置。Windows cmd.exe 不支持这些补全脚本。
在当前会话中启用
以下方式只对当前终端会话生效。
Zsh
autoload -Uz compinit
compinit
source <(sco completion zsh)
Bash
source <(sco completion bash)
Ubuntu 需要提供 bash-completion,如尚未安装,可以运行:
sudo apt-get install bash-completion
Fish
sco completion fish | source
PowerShell
sco completion powershell | Out-String | Invoke-Expression
永久启用
以下方式把脚本保存在当前用户目录中,不需要写入系统目录。
Zsh
生成补全文件:
mkdir -p "$HOME/.zsh/completions"
sco completion zsh > "$HOME/.zsh/completions/_sco"
在 ~/.zshrc 中确保补全目录在 compinit 之前加入 fpath:
fpath=("$HOME/.zsh/completions" $fpath)
autoload -Uz compinit
compinit
如果配置中已经调用 compinit,只需在该调用之前加入 fpath,不要重复调用。使用 Oh My Zsh 时,请把 fpath 配置放在加载 Oh My Zsh 的语句之前;Oh My Zsh 会初始化补全,无需再次调用 compinit。
重新打开终端,或运行 exec zsh。
Bash
mkdir -p "$HOME/.local/share/bash-completion/completions"
sco completion bash > "$HOME/.local/share/bash-completion/completions/sco"
exec bash
Fish
mkdir -p "$HOME/.config/fish/completions"
sco completion fish > "$HOME/.config/fish/completions/sco.fish"
重新打开 Fish,或运行 exec fish。
PowerShell
生成补全文件:
$profileDir = Split-Path -Parent $PROFILE
$dir = Join-Path $profileDir "completions"
New-Item -ItemType Directory -Force $dir | Out-Null
sco completion powershell | Set-Content -Encoding UTF8 (Join-Path $dir "sco.ps1")
创建并打开当前用户的 PowerShell Profile:
New-Item -ItemType Directory -Force (Split-Path -Parent $PROFILE) | Out-Null
if (-not (Test-Path $PROFILE)) {
New-Item -ItemType File $PROFILE | Out-Null
}
notepad $PROFILE
在 Profile 中加入:
. "$PSScriptRoot\completions\sco.ps1"
重新打开 PowerShell,或运行 . $PROFILE。如果组织限制脚本执行,请遵循组织的 Execution Policy,不建议绕过安全策略。
验证
先确认当前终端使用的是预期的 SCO CLI:
command -v sco
PowerShell 使用:
(Get-Command sco).Source
然后输入以下内容并按 Tab:
sco <Tab>
sco config <Tab>
sco --profile <Tab>
选项
如不需要候选项描述,可以在生成脚本时增加 --no-descriptions:
sco completion zsh --no-descriptions
更新和故障排查
补全脚本是由当前 SCO CLI 版本生成的静态文件。升级 SCO CLI 后,建议重新运行对应的生成命令并覆盖原文件。
- 按
Tab没有反应:确认生成的脚本类型与当前 Shell 一致,并检查脚本是否已加载。 - 终端使用了错误的 SCO CLI:Bash、Zsh 或 Fish 运行
type -a sco;PowerShell 运行Get-Command sco -All。 - Zsh 未生效:确认补全目录在
fpath中,并且配置位于compinit之前。 - Bash 未生效:确认已经安装并加载
bash-completion。 - PowerShell 拒绝加载脚本:检查组织的 Execution Policy,不要绕过企业安全策略。
- 只显示
config、components等核心命令:当前 profile 或 Region 可能尚未配置、runtime 尚未安装,或旧 runtime 不支持只读补全;这不一定表示脚本安装失败。 sco zones use没有远程动态候选:该补全路径不会为此参数发起远程请求,这是预期行为。