Como posso ver a função de conclusão de tabulação para um comando no bash?

2

Em última análise, quero alias screen -r .

Eu principalmente quero fazer isso porque esse comando tem um recurso de conclusão de abas impressionante que me mostra as sessões de tela GNU atuais. Eu quero esse poder com o pseudônimo.

Isso me levou a fazer uma pergunta mais geral. Como eu veria a função de conclusão de abas para o comando screen -r ou mais, qualquer comando?

    
por Matt Kneiser 29.07.2015 / 20:20

1 resposta

3

Ok, então há três coisas diferentes acontecendo na pergunta:

1) Para procurar a função de conclusão do bash de um comando complete -p <command> faz o truque. Nesse caso complete -p screen rende complete -o default -F _screen screen

2) A conclusão do bash terá argumentos. No caso de screen -r , a função de conclusão screen bash é chamada com -r como argumento. Você pode então preencher automaticamente condicionalmente a partir daí.

3) No Ubuntu, /etc/bash_completion.d/screen tem a função de conclusão da tela definida.

Assim, a maneira como eu aliasse screen -r e mantivesse a função de conclusão era a seguinte.

.bashrc:

alias scr="screen -r"
function _complete_scr() {
    local does_screen_exist=$(type -t _screen_sessions)
    local cur=$2 # Needed by _screen_sessions
    if [[ "function" = "${does_screen_exist}" ]]; then
        _screen_sessions "Detached"
    fi
}
export -f _complete_scr
complete -F _complete_scr -o default scr
    
por 30.07.2015 / 02:26