← 中文资源

简体中文版本

为 CLI 添加 Bash 补全

提供补全脚本,自动提示子命令与参数,使用户无需查文档即可发现选项。

阅读英文原文

目标

没有 Tab 补全导致用户经常拼错子命令,拖慢日常使用。本配方编写 bash 补全函数,在第一位置提示子命令列表、后续位置回退到文件补全,并说明需在交互式 shell 的 rc 文件里 source;提醒 bash 补全与 zsh、fish 不同,手工维护易出错。

步骤要点

  1. 编写补全函数提示子命令列表。
  2. 后续位置回退到文件补全。
  3. 在交互式 shell 的 rc 文件里 source 脚本。
  4. 新增子命令时同步更新补全列表。
_tool_completions() {
  local cur="${COMP_WORDS[COMP_CWORD]}"
  if [ "$COMP_CWORD" -eq 1 ]; then
    COMPREPLY=( $(compgen -W "sync list config" -- "$cur") )
    return
  fi
  COMPREPLY=( $(compgen -f -- "$cur") )
}
complete -F _tool_completions tool

排错提示

  • 脚本未 source 会导致补全不生效。
  • 带路径的参数补全需按位置分支。
  • 手工维护补全易出错。

适用边界

  • 不同 shell 的补全是分离的。
  • 不校验参数取值。