Thank you for your reply. I apologize for the misleading description
of the syntax of my command. I meant that I type '$ ssh xyz' where
'xyz' is the first few letters of one of my known hosts, and then I
press Tab. It should then complete the host name, right?
I am including below the output after '$ set -xv'. I have
'demons.hell.com,666.666.666.666' in ~/.ssh/known_hosts , and I then
type '$ ssh demons' and press tab. (Of course, I have modified my
actual host and directory names. Note also: 'demons.hell.com' is the
unique host name in the file that begins with 'demons'.)
-- Begin Clip --
$ ssh demons+ local cur prev
+ local -a config
+ COMPREPLY=()
+ cur=demons
+ prev=ssh
+ case $prev in
+ _known_hosts -a
+ local cur curd ocur user suffix aliases global_kh user_kh hosts i host
+ local -a kh khd config
+ COMPREPLY=()
+ cur=demons
+ ocur=demons
+ '[' -a = -a ']'
+ aliases=yes
+ '[' -a = -c ']'
+ '[' '' = -c ']'
+ [[ demons == [EMAIL PROTECTED] ]]
+ kh=()
+ '[' -r /etc/ssh/ssh_config ']'
+ '[' -r '/home/David Hasselhoff/.ssh/config' ']'
+ '[' -r '/home/David Hasselhoff/.ssh2/config' ']'
+ '[' 0 -gt 0 ']'
+ '[' -r '' ']'
+ '[' -r /etc/ssh/ssh_known_hosts ']'
+ '[' -r /etc/ssh/ssh_known_hosts2 ']'
+ '[' -r /etc/known_hosts ']'
+ '[' -r /etc/known_hosts2 ']'
+ '[' -d /etc/ssh2/knownhosts ']'
+ '[' -r '' ']'
+ '[' -r '/home/David Hasselhoff/.ssh/known_hosts' ']'
+ kh=([EMAIL PROTECTED] ~/.ssh/known_hosts)
+ '[' -r '/home/David Hasselhoff/.ssh/known_hosts2' ']'
+ '[' -d '/home/David Hasselhoff/.ssh2/hostkeys' ']'
+ '[' 1 -gt 0 -o 0 -gt 0 ']'
+ cur=demons
+ cur=demons
+ curd=demons
+ [[ demons == [0-9]*.* ]]
+ [[ demons == [0-9]* ]]
+ '[' -z demons ']'
+ cur='^demons'
+ '[' 1 -gt 0 ']'
+ COMPREPLY=($( awk 'BEGIN {FS=,}
{for (i=1; i=2; ++i) { \
gsub( .*$, , $i); \
if ($i ~ /'$cur'/) {print $i} \
}}' [EMAIL PROTECTED] 2/dev/null ))
awk 'BEGIN {FS=,}
{for (i=1; i=2; ++i) { \
gsub( .*$, , $i); \
if ($i ~ /'$cur'/) {print $i} \
}}' [EMAIL PROTECTED] 2/dev/null
++ awk 'BEGIN {FS=,}
{for (i=1; i=2; ++i) { \
gsub( .*$, , $i); \
if ($i ~ /^demons/) {print $i} \
}}' /home/David Hasselhoff/.ssh/known_hosts
+ '[' 0 -gt 0 ']'
+ '[' 0 -gt 0 ']'
+ (( i=0 ))
+ (( i 0 ))
+ return 0
+ '[' 1 -eq 1 ']'
+ return 0
-- End Clip --
By the way, I seem even to have trouble simply autocompleting the
filename '/home/David Hasselhoff/.ssh/known_hosts'. Here is some output:
-- Begin Clip --
$ cd /home/David\ Hasselhoff/.ssh/know+ local 'IFS=
' 'cur=/home/David\ Hasselhoff/.ssh/know' i j k
+ [[ /home/David\ Hasselhoff/.ssh/know == ?(\\)\$* ]]
+ '[' -z '' ']'
+ _filedir -d
+ local 'IFS=
' xspec
+ _expand
+ '[' '/home/David\ Hasselhoff/.ssh/know' '!=' '/home/David\
Hasselhoff/.ssh/know' ']'
+ [[ /home/David\ Hasselhoff/.ssh/know == \~*/* ]]
+ [[ /home/David\ Hasselhoff/.ssh/know == \~* ]]
+ '[' -d = -d ']'
+ COMPREPLY=([EMAIL PROTECTED]:-} $( compgen -d -- $cur ))
compgen -d -- $cur
++ compgen -d -- '/home/David\ Hasselhoff/.ssh/know'
+ return 0
+ return 0
-- End Clip --
I should also add that completion *does* work on known_hosts with scp.
Thanks,
Hans
At Mon, 31 Jul 2006 06:42:13 -0600,
Eric Blake wrote:
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
According to Hans on 7/29/2006 7:09 PM:
I'm having some trouble with bash-completion. For example, it does
not complete ssh commands from my known_hosts file.
I have also tried sourcing it from within a bash session. In both
cases, if I type
$ ssh hostname... [tab]
it does nothing.
You can use 'set -xv' to turn on verbose processing of what is happening
when you hit TAB, to see if something jumps out at you as the culprit. At
any rate, this sounds like an upstream problem with bash-completion, not
cygwin-specific. And my quick check of 'ssh [TAB]' worked for me. Since
your example of 'ssh hostname... [TAB]' is not valid syntax for ssh, I
can't tell what you were expecting. Post a real example/screenshot
(although you may edit machine names if you are worried about that) if you
expect more help.
- --
Life is short - so eat dessert first!
Eric Blake [EMAIL PROTECTED]
volunteer cygwin bash-completion maintainer
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2.1 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFEzfqk84KuGfSFAYARAq/CAJ93+UBshM9QnmAmmaJQTFhX72SThgCeN3YS
nM1wTblpKNrjkHSq1hS7SMM=
=x1Sy
-END PGP SIGNATURE-
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple