You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为含嵌套子命令的CLI程序实现简易Bash自动补全?

嵌套子命令的Bash自动补全实现(无需定义函数)

要实现你需要的嵌套补全,不用单独定义shell函数,直接利用Bash补全的内置变量和条件判断,在complete命令里动态生成补全词表即可。

针对你的CLI程序,执行以下命令:

complete -W "$([[ $COMP_CWORD -eq 1 ]] && echo 'task config' || [[ ${COMP_WORDS[1]} = 'task' ]] && echo 'start stop' || [[ ${COMP_WORDS[1]} = 'config' ]] && echo 'set unset')" program

工作机制

  • $COMP_CWORD:当前补全的单词在命令行中的位置(从0开始,program是位置0)
  • $COMP_WORDS:存储当前命令行所有单词的数组
  • 条件分支逻辑:
    • 当补全第1个参数(位置1)时,返回顶层子命令列表task config
    • 若第1个参数是task,补全后续参数时返回start stop
    • 若第1个参数是config,补全后续参数时返回set unset

使用方法

将上述命令添加到~/.bashrc(永久生效)或当前Shell会话中,之后测试:

  • 输入program 按Tab,会弹出task/config选项
  • 输入program task 按Tab,会弹出start/stop选项
  • 输入program config 按Tab,会弹出set/unset选项

内容的提问来源于stack exchange,提问作者Nils Werner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:59:56