# mysql(1) completion -*- shell-script -*- _mysql() { local cur prev words cword split _init_completion -s || return case $prev in -u|--user) COMPREPLY=( $( compgen -u -- "$cur" ) ) return 0 ;; -D|--database) COMPREPLY=( $( compgen -W "$(mysqlshow 2>/dev/null|sed -ne '2d' -e 's/^|.\([^|]*\)|.*/\1/p')" -- "$cur" ) ) return 0 ;; -h|--host) _known_hosts_real "$cur" return 0 ;; --default-character-set) [[ -d /usr/share/mysql/charsets ]] && \ COMPREPLY=( $( compgen -W "$(command ls /usr/share/mysql/charsets|sed -e '/^\(README\|Index\.xml\)$/d' -e 's/.xml$//') utf8" -- "$cur" ) ) return 0 ;; --character-sets-dir|--ssl-capath) _filedir -d return 0 ;; -S|--socket) _filedir sock return 0 ;; --protocol) COMPREPLY=( $( compgen -W 'tcp socket pipe memory' -- "$cur" ) ) return 0 ;; --defaults-file|--defaults-extra-file|--tee) _filedir return 0 ;; --default-character-set|-P|--port|--set-variable|\ --ssl-ca|--ssl-cert|--ssl-cipher|--ssl-key|\ --connect_timeout|--max_allowed_packet|--prompt|\ --net_buffer_length|--select_limit|--max_join_size|\ --server-arg|--debug|--delimiter|--execute|-e|--pager) # Argument required but no completions available return 0 ;; '-?'|-I|--help|-V|--version) # All other options are noop with these return 0 ;; esac case $cur in --*) local help=$(_parse_help "$1") help+=" --skip-comments --skip-ssl" COMPREPLY=( $( compgen -W "$help" -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace return 0 ;; # only complete long options -) compopt -o nospace COMPREPLY=( -- ) return 0 ;; esac COMPREPLY=( $( compgen -W \ "$(mysqlshow 2>/dev/null|sed -ne '2d' -e 's/^|.\([^|]*\)|.*/\1/p')" \ -- "$cur" ) ) } && complete -F _mysql mysql # ex: ts=4 sw=4 et filetype=sh