Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: ssh user name completion



Angelina Carlton <brat@xxxxxxxx> wrote:
> #ssh completion
> local _myhosts;
> _myhosts=( ${${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ }:#\!*}
> ${=${(f)"$(cat /etc/hosts(|)(N) <<EOF
> (ypcat hosts 2>/dev/null))"}%%\#*} );
> zstyle ':completion:*' hosts $_myhosts;
> 
> I got this code from a zshrc I found on the net, but i don't pretend to
> understand how exactly it works, or even if it is the correct way to do
> ssh conmpletion..

You should find recent versions of zsh have this in by default.

> The problem is on the Debian Stable server, if I type:
> ssh u<TAB>
> the shell expands to:
> ssh username@
> then I type the first letter of the host and it expands that as well.
> This is excellent behaviour and makes things very fast.
> 
> However on my Debian unstable computer, typing:
> ssh u<TAB>
> will just make the shell beep, as it seems not to know how to complete
> the command. I have to manually type in the username@ string and then it
> will complete the hostname for me.

The code you show doesn't do anything special for user names.  The current
support built into the completion system adds any users stored in the
style "users", then any found by scanning the system's password database.
This doesn't appear to have changed recently.

Try setting a few user names for it to complete explicitly and see
if that works:

  zstyle ":completion:*" users arthur brenda charlie deirdre


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php



Messages sorted by: Reverse Date, Date, Thread, Author