_ssh_complete() { local cur="${COMP_WORDS[COMP_CWORD]}" local ssh_config_hosts=$(awk '/^Host / {for (i=2; i<=NF; i++) print $i}' ~/.ssh/config 2>/dev/null) ssh_config_hosts=$(echo -e "${ssh_config_hosts}") COMPREPLY=($(compgen -W "${ssh_config_hosts}" -- "${cur}" | sort -u)) } complete -F _ssh_complete ssh