Moved ssh completion to separate file.
This commit is contained in:
parent
ebe750ffcf
commit
2df67cecb4
101
bash_completion
101
bash_completion
@ -2624,107 +2624,6 @@ _known_hosts()
|
||||
complete -F _known_hosts traceroute traceroute6 tracepath tracepath6 \
|
||||
ping ping6 fping fping6 telnet host nslookup rsh rlogin ftp dig ssh-installkeys mtr
|
||||
|
||||
# ssh(1) completion
|
||||
#
|
||||
have ssh && {
|
||||
_ssh()
|
||||
{
|
||||
local cur prev
|
||||
local -a config
|
||||
|
||||
COMPREPLY=()
|
||||
cur=`_get_cword`
|
||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||
|
||||
case "$prev" in
|
||||
-*c)
|
||||
COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \
|
||||
arcfour cast128-cbc' -- $cur ) )
|
||||
;;
|
||||
-*i)
|
||||
_filedir
|
||||
;;
|
||||
-*l)
|
||||
COMPREPLY=( $( compgen -u -- $cur ) )
|
||||
;;
|
||||
*)
|
||||
_known_hosts -a
|
||||
|
||||
[ $COMP_CWORD -eq 1 ] || \
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- $cur ) )
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
shopt -u hostcomplete && complete -F _ssh ssh slogin sftp xhost autossh
|
||||
|
||||
# scp(1) completion
|
||||
#
|
||||
_scp()
|
||||
{
|
||||
local cur userhost path
|
||||
|
||||
COMPREPLY=()
|
||||
cur=`_get_cword ":"`
|
||||
|
||||
_expand || return 0
|
||||
|
||||
if [[ "$cur" == *:* ]]; then
|
||||
local IFS=$'\t\n'
|
||||
# remove backslash escape from :
|
||||
cur=${cur/\\:/:}
|
||||
userhost=${cur%%?(\\):*}
|
||||
path=${cur#*:}
|
||||
# unescape spaces
|
||||
path=${path//\\\\\\\\ / }
|
||||
if [ -z "$path" ]; then
|
||||
# default to home dir of specified user on remote host
|
||||
path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null)
|
||||
fi
|
||||
# escape spaces; remove executables, aliases, pipes and sockets;
|
||||
# add space at end of file names
|
||||
COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \
|
||||
command ls -aF1d "$path*" 2>/dev/null | \
|
||||
sed -e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\\\\\\\\\&/g" \
|
||||
-e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) )
|
||||
return 0
|
||||
fi
|
||||
|
||||
[[ "$cur" == */* ]] || _known_hosts -c -a
|
||||
local IFS=$'\t\n'
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* \
|
||||
2>/dev/null | sed \
|
||||
-e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\&/g" \
|
||||
-e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) )
|
||||
return 0
|
||||
}
|
||||
complete -F _scp $nospace scp
|
||||
|
||||
# ssh-copy-id(1) completion
|
||||
#
|
||||
_ssh-copy-id() {
|
||||
local cur prev
|
||||
|
||||
COMPREPLY=()
|
||||
cur=`_get_cword`
|
||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||
|
||||
case "$prev" in
|
||||
-*i)
|
||||
_filedir
|
||||
;;
|
||||
*)
|
||||
_known_hosts -a
|
||||
|
||||
[ $COMP_CWORD -eq 1 ] || \
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -- $cur ) )
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
complete -F _ssh-copy-id $filenames ssh-copy-id
|
||||
}
|
||||
|
||||
# rsync(1) completion
|
||||
#
|
||||
have rsync &&
|
||||
|
100
contrib/ssh
Normal file
100
contrib/ssh
Normal file
@ -0,0 +1,100 @@
|
||||
# ssh(1) completion
|
||||
#
|
||||
have ssh && {
|
||||
_ssh()
|
||||
{
|
||||
local cur prev
|
||||
local -a config
|
||||
|
||||
COMPREPLY=()
|
||||
cur=`_get_cword`
|
||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||
|
||||
case "$prev" in
|
||||
-*c)
|
||||
COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \
|
||||
arcfour cast128-cbc' -- $cur ) )
|
||||
;;
|
||||
-*i)
|
||||
_filedir
|
||||
;;
|
||||
-*l)
|
||||
COMPREPLY=( $( compgen -u -- $cur ) )
|
||||
;;
|
||||
*)
|
||||
_known_hosts -a
|
||||
|
||||
[ $COMP_CWORD -eq 1 ] || \
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- $cur ) )
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
shopt -u hostcomplete && complete -F _ssh ssh slogin sftp xhost autossh
|
||||
|
||||
# scp(1) completion
|
||||
#
|
||||
_scp()
|
||||
{
|
||||
local cur userhost path
|
||||
|
||||
COMPREPLY=()
|
||||
cur=`_get_cword ":"`
|
||||
|
||||
_expand || return 0
|
||||
|
||||
if [[ "$cur" == *:* ]]; then
|
||||
local IFS=$'\t\n'
|
||||
# remove backslash escape from :
|
||||
cur=${cur/\\:/:}
|
||||
userhost=${cur%%?(\\):*}
|
||||
path=${cur#*:}
|
||||
# unescape spaces
|
||||
path=${path//\\\\\\\\ / }
|
||||
if [ -z "$path" ]; then
|
||||
# default to home dir of specified user on remote host
|
||||
path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null)
|
||||
fi
|
||||
# escape spaces; remove executables, aliases, pipes and sockets;
|
||||
# add space at end of file names
|
||||
COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \
|
||||
command ls -aF1d "$path*" 2>/dev/null | \
|
||||
sed -e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\\\\\\\\\&/g" \
|
||||
-e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) )
|
||||
return 0
|
||||
fi
|
||||
|
||||
[[ "$cur" == */* ]] || _known_hosts -c -a
|
||||
local IFS=$'\t\n'
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* \
|
||||
2>/dev/null | sed \
|
||||
-e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\&/g" \
|
||||
-e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) )
|
||||
return 0
|
||||
}
|
||||
complete -F _scp $nospace scp
|
||||
|
||||
# ssh-copy-id(1) completion
|
||||
#
|
||||
_ssh-copy-id() {
|
||||
local cur prev
|
||||
|
||||
COMPREPLY=()
|
||||
cur=`_get_cword`
|
||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||
|
||||
case "$prev" in
|
||||
-*i)
|
||||
_filedir
|
||||
;;
|
||||
*)
|
||||
_known_hosts -a
|
||||
|
||||
[ $COMP_CWORD -eq 1 ] || \
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -- $cur ) )
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
complete -F _ssh-copy-id $filenames ssh-copy-id
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user