+function _ssh_complete() {
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ opts=$( grep -o '^[^, ]\+' ~/.ssh/known_hosts )
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+}
+complete -F _ssh_complete ssh
+
+function _ssh_screen () {
+ DISCONNECT=""
+ RECONNECT="-R"
+ HOST=$1
+ while [ "$2" != "" ]; do
+ case $2 in
+ -d | --disconnect )
+ DISCONNECT="-D"
+ ;;
+ * )
+ echo "Usage: $HOST [-d | --discconnect]"
+ return 1
+ ;;
+ esac
+ shift
+ done
+
+ ssh -t $HOST screen $DISCONNECT $RECONNECT
+}
+
+for host in ssh_hosts=$( grep '^Host[ ][^*]' ~/.ssh/config | cut -c 6- ); do
+ alias "$host"="_ssh_screen $host $@"
+done