Como posso dizer ao bash valid-complete-tab para argumentos para o meu script Python?

14

Digamos que eu tenha um programa hello.py e um possível argumento válido para ele é:

./hello.py autoawesomesauce

É possível digitar:

./hello.py auto[tab]

ponto em que o argumento parcialmente concluído é enviado para hello, que o reconhece como tal e, em seguida, o completa no shell para:

./hello.py autoawesomesauce

Eu sei que o git faz algo assim, mas pode ser feito para um script Python + Bash?

    
por Gilles 22.04.2011 / 16:52

3 respostas

7

Nos sistemas Linux, você geralmente pode encontrar um grande número de scripts de exemplo em: /etc/bash_completion.d . Se você adquirir esses scripts, obterá o comportamento de preenchimento automático.

Eu incluí um exemplo desse diretório. Este é o script de conclusão do unrar.

_unrar()
{
    local cur

    COMPREPLY=()
    _get_comp_words_by_ref cur

    if [[ "$cur" == -* ]] ; then
        COMPREPLY=( $( compgen -W '-ad -ap -av- -c- -cfg- -cl -cu \
            -dh -ep -f -idp -ierr -inul -kb -o+ -o- -ow -p -p- -r -ta \
            -tb -tn -to -u -v -ver -vp -x -x@ -y' -- "$cur" ) )
    else
        if [ $COMP_CWORD -eq 1 ]; then
            COMPREPLY=( $( compgen -W 'e l lb lt p t v vb vt x' -- "$cur" ) )
        else
            _filedir '@(rar|RAR)'
        fi
    fi

} &&
complete -F _unrar -o filenames unrar
    
por 22.04.2011 / 16:57
4

Essa funcionalidade não tem nada a ver com o Python. Esta é uma funcionalidade pura do shell subjacente. Então, leia os documentos básicos sobre o preenchimento automático.

Google para "preenchimento automático de bash" e você encontrará pelo menos cinco documentos razoáveis nos primeiros 10 hits.

    
por 22.04.2011 / 16:56
0

Veja este relacionado Postagem do StackOverflow.

complete 'your_command' 'p/*/'echo list_of_your_options'/'
    
por 30.01.2013 / 01:21