summaryrefslogtreecommitdiff
path: root/ssh-keygen-bash-completion.sh
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-10-02 04:02:17 +0000
committerCoprDistGit <infra@openeuler.org>2023-10-02 04:02:17 +0000
commit24b6ed9bc1ef1538b8f3e254b30b1006f5e4d78f (patch)
treee2725d205951345a1c853965086be06d6a6cbf59 /ssh-keygen-bash-completion.sh
parentc7ba49a1e66ed27d507eafa4da2b81838a2afa64 (diff)
automatic import of openssh
Diffstat (limited to 'ssh-keygen-bash-completion.sh')
-rw-r--r--ssh-keygen-bash-completion.sh63
1 files changed, 63 insertions, 0 deletions
diff --git a/ssh-keygen-bash-completion.sh b/ssh-keygen-bash-completion.sh
new file mode 100644
index 0000000..f601174
--- /dev/null
+++ b/ssh-keygen-bash-completion.sh
@@ -0,0 +1,63 @@
+# ssh-keygen(1) completion -*- shell-script -*-
+
+_ssh_keygen()
+{
+ local cur prev words cword
+ _init_completion -n = || return
+
+ case $prev in
+ -*[abCIJjMNnrPSVWz])
+ return
+ ;;
+ -*E)
+ COMPREPLY=( $(compgen -W 'md5 sha256' -- "$cur") )
+ return
+ ;;
+ -*[FR])
+ # TODO: trim this down to actual entries in known hosts files
+ _known_hosts_real -- "$cur"
+ return
+ ;;
+ -*D)
+ _filedir so
+ return
+ ;;
+ -*[fGKsT])
+ _filedir
+ return
+ ;;
+ -*m)
+ COMPREPLY=( $(compgen -W 'PEM PKCS8 RFC4716' -- "$cur") )
+ return
+ ;;
+ -*O)
+ if [[ $cur != *=* ]]; then
+ COMPREPLY=( $(compgen -W 'clear force-command=
+ no-agent-forwarding no-port-forwarding no-pty no-user-rc
+ no-x11-forwarding permit-agent-forwarding
+ permit-port-forwarding permit-pty permit-user-rc
+ permit-x11-forwarding source-address=' -- "$cur") )
+ [[ $COMPREPLY == *= ]] && compopt -o nospace
+ fi
+ return
+ ;;
+ -*t)
+ local protocols=$(_xfunc ssh _ssh_query "$1" protocol-version)
+ local types='dsa ecdsa ed25519 rsa sm2'
+ if [[ $protocols == *1* ]]; then
+ types+=' rsa1'
+ fi
+ COMPREPLY=( $(compgen -W "$types" -- "$cur") )
+ return
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ local opts=$(_parse_usage "$1" "-?")
+ [[ -z "$opts" ]] && opts=$(_parse_help "$1" "-?") # OpenSSH < 7
+ COMPREPLY=( $(compgen -W "$opts" -- "$cur") )
+ fi
+} &&
+complete -F _ssh_keygen ssh-keygen
+
+# ex: filetype=sh