> On 30 Jun 2018, at 12:47, Petru Rațiu <[email protected]> wrote:
> 
> Hello.
> 
> E ceva cu mecanismul de bash completion care imi scapa. Am in .bashrc o
> invocare de /etc/bash_completion si cumva aveam impresia ca face tot
> magicul acolo, insa am constatat urmatoarele (intr-un shell nou):
> 
> petre@hearth:~ $ complete -p ssh
> -bash: complete: ssh: no completion specification
> petre@hearth:~ $ ssh <TAB><TAB>
> Display all 498 possibilities? (y or n)
> petre@hearth:~ $ complete -p ssh
> complete -F _ssh ssh
> 
> 
> Deci cumva ceva se incarca de bash dinamic cand dau tab, si nu mi-e clar
> cum sa fac asta proactiv, pentru ca vreau sa setez functia aia de complete
> in bashrc si pe un alias (si daca dau complete -F _ssh ma injura ca nu stie
> functia).
> 
> Intrebarea mea e cum naiba vad ca bash_completion l-a invatat pe shell (sau
> pe readline, I don't know) ca "ssh" e un keyword la care sa faca anumite
> stuffs inainte sa-l pun sa faca acele chestii prima oara. Am incercat sa ma
> uit in sursa lui bash_completion dar nu cred ca inteleg suficient de bine
> cum functioneaza programmable completion pentru ca comportamentul de mai
> sus mi se pare de-a dreptul absurd.

Eu am in /etc/bash_completion.d/ssh:

_ssh() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts=$(grep '^Host' ~/.ssh/config ~/.ssh/config.d/* 2>/dev/null | grep -v 
'[?*]' | cut -d ' ' -f 2-)

    COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
    return 0
}
complete -F _ssh ssh 



# complete -p ssh

complete -F _ssh ssh
# ssh <TAB><TAB>
10.x.y.z      10.y.x.z    10.z.x.y      

Pe distrourile noi, know_hosts este hashed, totusi chiar fara a exista 
know_hosts <TAB><TAB> nu mai face nimic in cazul meu.
Ca sa nu alterez mult configuratia standard, am adaugat manual serverele 
importante in ~/.ssh/config

bash -v ce zice? ar trebui sa vezi acolo tot ce se intampla.

 


_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug_lists.lug.ro

Raspunde prin e-mail lui