Re: bash completion help
Bogdan-Stefan Rotariu <[email protected]> Sat, 30 Jun 2018 12:59:33 +0300
| Newsgroups | gmane.org.user-groups.rlug.general |
|---|---|
| Message-ID | <[email protected]> |
> 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