Listagem de arquivos na conclusão da tabulação

1

Eu experimentei um comportamento estranho do bash shell tab completion ao tentar executar um código python.

Quando eu uso mais de um caractere seguido por - prefixed argument, posso selecionar o arquivo usando a conclusão de tabulação, mas com apenas um caractere ele falha completamente. Aqui estão alguns exemplos:

#failed 
python prepare_yaml_files.py -i in<tab><tab>

#succeed: though '-in' is not valid 
python prepare_yaml_files.py -in in<tab><tab>

#succeed: valid argument 
python prepare_yaml_files.py --in in<tab><tab>

Eu me pergunto por que isso acontece. Preciso definir alguma preferência em .bashrc para resolver isso.

    
por satyanarayan rao 30.03.2017 / 03:54

1 resposta

1

Meu melhor palpite é que você está sofrendo de um script de autocompletar incorreto. Eu dei uma olhada no /usr/share/bash-completion/completions/python no Debian e, até onde eu sei, ele apenas preenche automaticamente nomes de arquivos que terminam em .py , .py ou .pyo se a palavra anterior for (alguma variante de) python , ou uma opção de caractere único.

Suponho que a suposição aqui é que tudo que se parece com -X é um argumento para o interpretador, seria dado antes do comando para ser executado, e você ainda precisaria dar o nome de um roteiro. Portanto, apenas arquivos correspondentes a .py e .py[oc] são apresentados.

Você pode desabilitar completamente o autocomplemento programável com shopt -u progcomp . Uma correção mais precisa exigiria a edição do (s) script (s) de preenchimento automático.

A regra que estou vendo é esta, não tenho certeza se a interpretei completamente:

    case $prev in
        [...]
        !(?(*/)python*([0-9.])|-?))
            [[ $cword -lt 2 || ${words[cword-2]} != -@(Q|W) ]] \
                && _filedir
            ;;
    
por 30.03.2017 / 14:06