Como enviar conclusões de string para stdout?

15

Alguns dos comandos git têm muitas opções, e muitas vezes seria útil pesquisá-los para o que eu preciso - eu estava apenas procurando pela opção que controla a largura da TAB git-gui , mas existem cerca de 200 conclusões para git config . Uma solução óbvia é copiar todas as conclusões em um editor e pesquisá-las, mas prefiro fazer

[something] | grep tab

Não há man ou info páginas para compgen , help compgen nem explica suas próprias opções, e não há preenchimento automático para compgen (como isso é para ironia?). / p>

PS: compgen -A não funciona.

PPS: essa não é uma pergunta sobre git-gui - A solução para a questão da largura da guia estava em outro lugar.

PPPS: Não sobre comandos de preenchimento automático, apenas parâmetros de comando .

    
por l0b0 02.12.2011 / 16:53

1 resposta

9

Você pode usar a seguinte função, que usa da mesma maneira sudo preenchimento automático para gerar a lista de conclusão:

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 ''

onde _command_offset é definido em bash-completion (package).

NOTA: a função precisa ser executada em um shell interativo (ou seja, se estiver em um arquivo, o arquivo precisa ser originado em vez de apenas executar.) ou as regras / funções de conclusão necessárias não serão definidas .

PS. compgen -A só funciona para ações internas, o que você deve ter tentado (mas também não funciona) é compgen -F (ou, na verdade, compgen -o bashdefault -o default -o nospace -F _git ). A razão pela qual isso não funciona (e o doc para comandos internos do bash, incluindo compgen / complete) pode ser encontrado em bash (1 ) .

    
por 06.02.2012 / 15:57