命令补全 | 大装置帮助中心
跳到主要内容

命令补全

名称

sco completion - 生成 Shell 命令补全脚本

说明

sco completion SHELL [flags]

描述

sco completion SHELL 会将对应 Shell 的补全脚本输出到标准输出。SHELL 可以是 bashzshfishpowershell。该命令不会安装脚本,也不会自动修改 .zshrc.bashrc、Fish 配置或 PowerShell Profile。

加载脚本后,可以输入 sco、子命令或标志的一部分并按 Tab 查看候选项。候选内容会随当前 profile、Region、已安装的 runtime 和组件而变化。

支持范围

Shell常见环境
ZshmacOS 默认 Shell
BashUbuntu 等 Linux 发行版
Fish安装并使用 Fish 的 Linux 或 macOS 环境
PowerShellWindows 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,不要绕过企业安全策略。
  • 只显示 configcomponents 等核心命令:当前 profile 或 Region 可能尚未配置、runtime 尚未安装,或旧 runtime 不支持只读补全;这不一定表示脚本安装失败。
  • sco zones use 没有远程动态候选:该补全路径不会为此参数发起远程请求,这是预期行为。