3

我正在为foo具有一些子命令的程序创建自动完成功能,例如:

foo lists:show
foo list:create <list_name>

到目前为止,我有一些工作:

# file: foo_completion.sh
_foo_completion_func ()
{
    local cur
    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}
    case "$cur" in
        t*) COMPREPLY=( $( compgen -W 'list:show' -- $cur ) );;
    esac
    return 0
}
complete -F _foo_completion_func -o filenames foo

所以如果我这样做source foo_completion.sh ,然后foo liTab我会自动完成,但输出是:

foo list\:show

带有\前面的冒号。它有效,显然它只是一个视觉上的东西,但我希望在那里我得到foo list:show而不是foo list\:show. 这可能吗?任何想法都受到高度赞赏。

4

1 回答 1

1

冒号作为文件名处理的一部分被转义。尝试删除-o filenames. 如果您仍然需要它,我不确定是否有办法选择性地禁用它。

于 2013-06-11T10:17:35.330 回答