从完成功能中调用另一个命令的bash-completion

时间:2018-02-08 08:45:59

标签: bash tab-completion

_example()
{
    local cur prev

    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    if [[ ${prev} == example ]] ; then
        COMPREPLY=( $(compgen -W "git" -- ${cur}) )
    elif [[ ${prev} == git ]] ; then
        _command
    elif [[ ${prev} == g ]] ; then
        # ??? TODO 
        # I want the same completion for `example git <TAB>` and `example g <TAB>`
    else
        COMPREPLY=()
    fi
    return 0
}
complete -F _example example

我知道怎么打电话&#34;下一个命令的bash-completion。 (上面的代码)
例如:example git <TAB> =&gt;完成git

如何进行bash-completion&#34;调用&#34;我想要下一个命令的任何完成?
例如:example g <TAB> =&gt;完成git

1 个答案:

答案 0 :(得分:1)

填充COMP_CWORDCOMP_WORDSCOMP_LINE,然后致电git的完成功能__git_wrap__git_main

有关填充COMP_*并调用预定义完成函数的示例see this

有关git如何完成的更多信息,请might want to start here