我正在尝试为我自己的一组命令开发一个自动完成或选项卡完整功能。
例如,假设foo是我的二进制文件:
CLI>> foo [TAB] [TAB]它应该显示主要命令configure和show。
如果我选择configure,它应该显示出子命令CM、DSP和NPU。
CLI>> foo configure [TAB] [TAB]
DSP NPU CM` I only know how to tab-complete and display for the first level - how can I get the second level as well?我会把这个放在/etc/completion.d里。
我的守则:
_foo()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
words=("${COMP_WORDS[@]}")
cword=$COMP_CWORD
opts="configure show"
}我被困在如何在CM DSP NPU下添加子命令的问题上。
发布于 2013-07-26 12:59:15
下面是一个用于两级案例的示例脚本(其中有一节介绍了show的子命令,以说明它是如何完成的--如果这三行与您的情况无关,您可以删除它们):
_foo()
{
local cur prev
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
case ${COMP_CWORD} in
1)
COMPREPLY=($(compgen -W "configure show" -- ${cur}))
;;
2)
case ${prev} in
configure)
COMPREPLY=($(compgen -W "CM DSP NPU" -- ${cur}))
;;
show)
COMPREPLY=($(compgen -W "some other args" -- ${cur}))
;;
esac
;;
*)
COMPREPLY=()
;;
esac
}
complete -F _foo foo希望从这个例子中可以看出,如何将它扩展到三个级别的命令等等。
https://stackoverflow.com/questions/17879322
复制相似问题