【发布时间】:2011-03-14 18:18:53
【问题描述】:
我目前有一个 Bash 补全文件,它从脚本的允许命令列表(称为“pbt”)中补全单个参数。这是有效的 Bash 完成文件:
_pbt_complete()
{
local cur goals
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
goals='asadmin clean deploy'
cur=`echo $cur`
COMPREPLY=($(compgen -W "${goals}" ${cur}))
}
complete -F _pbt_complete pbt
所以如果我打电话
pbt <tab>
Bash 完成所有允许的命令(asadmin、clean、deploy),没关系。
现在我想为完成添加“第二”级。例如,如果我输入
pbt asadmin <tab>
它应该完成所有仅在 asadmin-“环境”中可用的选项(我还将在 bash 完成文件中定义),例如 pbt asadmin [start-domain|stop-domain] 但如果我输入
pbt deploy <tab>
它应该完成另一组选项,例如pbt deploy [all|current]。所以第二个命令的选项应该总是依赖于第一个命令。我怎样才能在完成文件中做到这一点?
【问题讨论】:
-
您是否安装或查看过 bash-completion 包? bash-completion.alioth.debian.org p4 和 apt 模块可以做到这一点。
标签: bash bash-completion