如何将字符串完成输出到标准输出?

l0b*_*0b0 15 bash autocomplete compgen

一些的git命令有很多选择,而且常常是通过他们的一个我需要寻找有用的-我只是在寻找它控制选项TAB的宽度git-gui,但也有大约200完成为git config。一个明显的解决方法是将所有补全复制到编辑器中并搜索它们,但我宁愿这样做

[something] | grep tab
Run Code Online (Sandbox Code Playgroud)

没有maninfo页面compgenhelp compgen甚至没有解释它自己的选项,并且没有自动完成 for compgen(讽刺的是如何?)。

PS:compgen -A不起作用。

PPS:这不是一个问题git-gui-标签宽度问题解决方案在别处。

PPPS:这与自动完成命令无关,仅与命令参数有关

yuy*_*hao 11

您可以使用以下函数,它使用与sudo自动完成生成完成列表相同的方式:

comp() {
    local COMP_LINE="$*"
    local COMP_WORDS=("$@")
    local COMP_CWORD=${#COMP_WORDS[@]}
    ((COMP_CWORD--))
    local COMP_POINT=${#COMP_LINE}
    local COMP_WORDBREAKS='"'"'><=;|&(:"
    # Don't really thing any real autocompletion script will rely on
    # the following 2 vars, but on principle they could ~~~  LOL.
    local COMP_TYPE=9
    local COMP_KEY=9
    _command_offset 0
    echo ${COMPREPLY[@]}
}
comp git config ''
Run Code Online (Sandbox Code Playgroud)

where_command_offset是在 bash-completion (package) 中定义的。

注意:该函数需要在交互式 shell 中运行(即,如果它在一个文件中,则需要获取该文件而不是仅运行。)否则将不会定义必要的完成规则/函数。

附注。compgen -A仅适用于内置操作,您应该尝试(但也不起作用)是compgen -F(或实际上compgen -o bashdefault -o default -o nospace -F _git)。这不起作用的原因(以及 bash 内置命令的文档,包括 compgen/complete)可以在bash(1) 中找到