# Deprecated bash_completion functions and variables -*- shell-script -*- _comp_deprecate_func 2.12 _userland _comp_userland _comp_deprecate_func 2.12 _sysvdirs _comp_sysvdirs _comp_deprecate_func 2.12 _have _comp_have_command _comp_deprecate_func 2.12 _rl_enabled _comp_readline_variable_on _comp_deprecate_func 2.12 _command_offset _comp_command_offset _comp_deprecate_func 2.12 _command _comp_command _comp_deprecate_func 2.12 _root_command _comp_root_command _comp_deprecate_func 2.12 _xfunc _comp_xfunc _comp_deprecate_func 2.12 _upvars _comp_upvars _comp_deprecate_func 2.12 _get_comp_words_by_ref _comp_get_words _comp_deprecate_func 2.12 _known_hosts_real _comp_compgen_known_hosts _comp_deprecate_func 2.12 __ltrim_colon_completions _comp_ltrim_colon_completions _comp_deprecate_func 2.12 _variables _comp_compgen_variables _comp_deprecate_func 2.12 _signals _comp_compgen_signals _comp_deprecate_func 2.12 _mac_addresses _comp_compgen_mac_addresses _comp_deprecate_func 2.12 _available_interfaces _comp_compgen_available_interfaces _comp_deprecate_func 2.12 _configured_interfaces _comp_compgen_configured_interfaces _comp_deprecate_func 2.12 _ip_addresses _comp_compgen_ip_addresses _comp_deprecate_func 2.12 _kernel_versions _comp_compgen_kernel_versions _comp_deprecate_func 2.12 _uids _comp_compgen_uids _comp_deprecate_func 2.12 _gids _comp_compgen_gids _comp_deprecate_func 2.12 _xinetd_services _comp_compgen_xinetd_services _comp_deprecate_func 2.12 _services _comp_compgen_services _comp_deprecate_func 2.12 _bashcomp_try_faketty _comp_try_faketty _comp_deprecate_func 2.12 _expand _comp_expand _comp_deprecate_func 2.12 _pids _comp_compgen_pids _comp_deprecate_func 2.12 _pgids _comp_compgen_pgids _comp_deprecate_func 2.12 _pnames _comp_compgen_pnames _comp_deprecate_func 2.12 _modules _comp_compgen_kernel_modules _comp_deprecate_func 2.12 _installed_modules _comp_compgen_inserted_kernel_modules _comp_deprecate_func 2.12 _usergroup _comp_compgen_usergroups _comp_deprecate_func 2.12 _complete_as_root _comp_as_root _comp_deprecate_func 2.12 __load_completion _comp_load # completers _comp_deprecate_func 2.12 _service _comp_complete_service _comp_deprecate_func 2.12 _user_at_host _comp_complete_user_at_host _comp_deprecate_func 2.12 _known_hosts _comp_complete_known_hosts _comp_deprecate_func 2.12 _longopt _comp_complete_longopt _comp_deprecate_func 2.12 _filedir_xspec _comp_complete_filedir_xspec _comp_deprecate_func 2.12 _minimal _comp_complete_minimal _comp_deprecate_var 2.12 COMP_FILEDIR_FALLBACK BASH_COMPLETION_FILEDIR_FALLBACK _comp_deprecate_var 2.12 COMP_KNOWN_HOSTS_WITH_AVAHI BASH_COMPLETION_KNOWN_HOSTS_WITH_AVAHI _comp_deprecate_var 2.12 COMP_KNOWN_HOSTS_WITH_HOSTFILE BASH_COMPLETION_KNOWN_HOSTS_WITH_HOSTFILE # @deprecated 2.12 Use `_comp_xspecs` declare -Ag _xspecs # Backwards compatibility for compat completions that use have(). # @deprecated 1.90 should no longer be used; generally not needed with # dynamically loaded completions, and _comp_have_command is suitable for # runtime use. # shellcheck disable=SC2317 # available at load time only have() { unset -v have _comp_have_command "$1" && have=yes } # This function shell-quotes the argument # @deprecated 2.12 Use `_comp_quote` instead. Note that `_comp_quote` stores # the results in the variable `REPLY` instead of writing them to stdout. quote() { local quoted=${1//\'/\'\\\'\'} printf "'%s'" "$quoted" } # @deprecated 2.12 Use `_comp_quote_compgen` quote_readline() { local REPLY _comp_quote_compgen "$1" printf %s "$REPLY" } # This function is the same as `_comp_quote_compgen`, but receives the second # argument specifying the variable name to store the result. # @param $1 Argument to quote # @param $2 Name of variable to return result to # @deprecated 2.12 Use `_comp_quote_compgen "$1"` instead. Note that # `_comp_quote_compgen` stores the result in a fixed variable `REPLY`. _quote_readline_by_ref() { [[ $2 == REPLY ]] || local REPLY _comp_quote_compgen "$1" [[ $2 == REPLY ]] || printf -v "$2" %s "$REPLY" } # This function shell-dequotes the argument # @deprecated 2.12 Use `_comp_dequote' instead. Note that `_comp_dequote` # stores the results in the array `REPLY` instead of writing them to stdout. dequote() { local REPLY _comp_dequote "$1" local rc=$? printf %s "$REPLY" return $rc } # Assign variable one scope above the caller # Usage: local "$1" && _upvar $1 "value(s)" # @param $1 Variable name to assign value to # @param $* Value(s) to assign. If multiple values, an array is # assigned, otherwise a single value is assigned. # NOTE: For assigning multiple variables, use '_comp_upvars'. Do NOT # use multiple '_upvar' calls, since one '_upvar' call might # reassign a variable to be used by another '_upvar' call. # @see https://fvue.nl/wiki/Bash:_Passing_variables_by_reference # @deprecated 2.10 Use `_comp_upvars' instead _upvar() { echo "bash_completion: $FUNCNAME: deprecated function," \ "use _comp_upvars instead" >&2 if unset -v "$1"; then # Unset & validate varname # shellcheck disable=SC2140 # TODO if (($# == 2)); then eval "$1"=\"\$2\" # Return single value else eval "$1"=\(\"\$"{@:2}"\"\) # Return array fi fi } # Get the word to complete. # This is nicer than ${COMP_WORDS[COMP_CWORD]}, since it handles cases # where the user is completing in the middle of a word. # (For example, if the line is "ls foobar", # and the cursor is here --------> ^ # @param $1 string Characters out of $COMP_WORDBREAKS which should NOT be # considered word breaks. This is useful for things like scp where # we want to return host:path and not only path, so we would pass the # colon (:) as $1 in this case. # @param $2 integer Index number of word to return, negatively offset to the # current word (default is 0, previous is 1), respecting the exclusions # given at $1. For example, `_get_cword "=:" 1' returns the word left of # the current word, respecting the exclusions "=:". # @deprecated 1.2 Use `_comp_get_words cur' instead # @see _comp_get_words() _get_cword() { local LC_CTYPE=C local cword words _comp__reassemble_words "${1-}" words cword # return previous word offset by $2 if [[ ${2-} && ${2//[^0-9]/} ]]; then printf "%s" "${words[cword - $2]}" elif ((${#words[cword]} == 0 && COMP_POINT == ${#COMP_LINE})); then : # nothing else local i local cur=$COMP_LINE local index=$COMP_POINT for ((i = 0; i <= cword; ++i)); do # Current word fits in $cur, and $cur doesn't match cword? while [[ ${#cur} -ge ${#words[i]} && ${cur:0:${#words[i]}} != "${words[i]}" ]]; do # Strip first character cur=${cur:1} # Decrease cursor position, staying >= 0 ((index > 0)) && ((index--)) done # Does found word match cword? if ((i < cword)); then # No, cword lies further; local old_size=${#cur} cur=${cur#"${words[i]}"} local new_size=${#cur} ((index -= old_size - new_size)) fi done if [[ ${words[cword]:0:${#cur}} != "$cur" ]]; then # We messed up! At least return the whole word so things # keep working printf "%s" "${words[cword]}" else printf "%s" "${cur:0:index}" fi fi } # Get word previous to the current word. # This is a good alternative to `prev=${COMP_WORDS[COMP_CWORD-1]}' because bash4 # will properly return the previous word with respect to any given exclusions to # COMP_WORDBREAKS. # @deprecated 1.2 Use `_comp_get_words cur prev' instead # @see _comp_get_words() # _get_pword() { if ((COMP_CWORD >= 1)); then _get_cword "${@-}" 1 fi } # Get real command. # @deprecated 2.12 Use `_comp_realcommand` instead. # Note that `_comp_realcommand` stores the result in the variable `REPLY` # instead of writing it to stdout. _realcommand() { local REPLY _comp_realcommand "$1" local rc=$? printf "%s\n" "$REPLY" return $rc } # Initialize completion and deal with various general things: do file # and variable completion where appropriate, and adjust prev, words, # and cword as if no redirections exist so that completions do not # need to deal with them. Before calling this function, make sure # cur, prev, words, and cword are local, ditto split if you use -s. # # Options: # -n EXCLUDE Passed to _comp_get_words -n with redirection chars # -e XSPEC Passed to _filedir as first arg for stderr redirections # -o XSPEC Passed to _filedir as first arg for other output redirections # -i XSPEC Passed to _filedir as first arg for stdin redirections # -s Split long options with _comp__split_longopt, implies -n = # @var[out] cur Reconstructed current word # @var[out] prev Reconstructed previous word # @var[out] words Reconstructed words # @var[out] cword Current word index in `words` # @var[out,opt] split When "-s" is specified, `"true"/"false"` is set depending # on whether the split happened. # @return True (0) if completion needs further processing, # False (> 0) no further processing is necessary. # # @deprecated 2.12 Use the new interface `_comp_initialize`. The new interface # supports the same set of options. The new interface receives additional # arguments $1 (command name), $2 (part of current word before the cursor), and # $3 (previous word) that are specified to the completion function by Bash. # When `-s` is specified, instead of variable `split`, the new interface sets # variable `was_split` to the value "set"/"" when the split happened/not # happened. _init_completion() { local was_split _comp_initialize "$@" local rc=$? # When -s is specified, convert "split={set,}" to "split={true,false}" local flag OPTIND=1 OPTARG="" OPTERR=0 while getopts "n:e:o:i:s" flag "$@"; do case $flag in [neoi]) ;; s) if [[ $was_split ]]; then split=true else split=false fi break ;; esac done return "$rc" } # @deprecated 2.12 Use the variable `_comp_backup_glob` instead. This is the # backward-compatibility name. # shellcheck disable=SC2154 # defined in the main "bash_completion" _backup_glob=$_comp_backup_glob # @deprecated 2.12 use `_comp_cmd_cd` instead. _cd() { declare -F _comp_cmd_cd &>/dev/null || __load_completion cd _comp_cmd_cd "$@" } # @deprecated 2.12 Use `_comp_command_offset` instead. Note that the new # interface `_comp_command_offset` is changed to receive an index in # `words` instead of that in `COMP_WORDS` as `_command_offset` did. _command_offset() { # We unset the shell variable `words` locally to tell # `_comp_command_offset` that the index is intended to be that in # `COMP_WORDS` instead of `words`. local words unset -v words _comp_command_offset "$@" } # @deprecated 2.12 Use `_comp_compgen -a filedir` _filedir() { _comp_compgen -a filedir "$@" } # Perform tilde (~) completion # @return True (0) if completion needs further processing, # False (1) if tilde is followed by a valid username, completions are # put in COMPREPLY and no further processing is necessary. # @deprecated 2.12 Use `_comp_compgen -c CUR tilde [-d]`. Note that the exit # status of `_comp_compgen_tilde` is flipped. It returns 0 when the tilde # completions are attempted, or otherwise 1. _tilde() { ! _comp_compgen -c "$1" tilde } # Helper function for _parse_help and _parse_usage. # @return True (0) if an option was found, False (> 0) otherwise # @deprecated 2.12 Use _comp_compgen_help__parse __parse_options() { local -a _options=() _comp_compgen_help__parse "$1" printf '%s\n' "${_options[@]}" } # Parse GNU style help output of the given command. # @param $1 command; if "-", read from stdin and ignore rest of args # @param $2 command options (default: --help) # @deprecated 2.12 Use `_comp_compgen_help`. `COMPREPLY=($(compgen -W # '$(_parse_help "$1" ...)' -- "$cur"))` can be replaced with # `_comp_compgen_help [-- ...]`. Also, `var=($(_parse_help "$1" ...))` can # be replaced with `_comp_compgen -Rv var help [-- ...]`. _parse_help() { local -a args if [[ $1 == - ]]; then args=(-) else local REPLY opt IFS=$' \t\n' _comp_dequote "$1" _comp_split opt "${2:---help}" args=(-c "$REPLY" ${opt[@]+"${opt[@]}"}) fi local -a REPLY=() _comp_compgen -Rv REPLY help "${args[@]}" || return 1 ((${#REPLY[@]})) && printf '%s\n' "${REPLY[@]}" return 0 } # Parse BSD style usage output (options in brackets) of the given command. # @param $1 command; if "-", read from stdin and ignore rest of args # @param $2 command options (default: --usage) # @deprecated 2.12 Use `_comp_compgen_usage`. `COMPREPLY=($(compgen -W # '$(_parse_usage "$1" ...)' -- "$cur"))` can be replaced with # `_comp_compgen_usage [-- ...]`. `var=($(_parse_usage "$1" ...))` can be # replaced with `_comp_compgen -Rv var usage [-- ...]`. _parse_usage() { local -a args if [[ $1 == - ]]; then args=(-) else local REPLY opt IFS=$' \t\n' _comp_dequote "$1" _comp_split opt "${2:---usage}" args=(-c "$REPLY" ${opt[@]+"${opt[@]}"}) fi local -a REPLY=() _comp_compgen -Rv REPLY usage "${args[@]}" || return 1 ((${#REPLY[@]})) && printf '%s\n' "${REPLY[@]}" return 0 } # @deprecated 2.12 Use `_comp_get_ncpus`. _ncpus() { local REPLY _comp_get_ncpus printf %s "$REPLY" } # Expand variable starting with tilde (~). # We want to expand ~foo/... to /home/foo/... to avoid problems when # word-to-complete starting with a tilde is fed to commands and ending up # quoted instead of expanded. # Only the first portion of the variable from the tilde up to the first slash # (~../) is expanded. The remainder of the variable, containing for example # a dollar sign variable ($) or asterisk (*) is not expanded. # # @deprecated 2.12 Use `_comp_expand_tilde`. The new function receives the # value instead of a variable name as $1 and always returns the result to the # variable `REPLY`. __expand_tilde_by_ref() { [[ ${1+set} ]] || return 0 [[ $1 == REPLY ]] || local REPLY _comp_expand_tilde "${!1-}" # shellcheck disable=SC2059 [[ $1 == REPLY ]] || printf -v "$1" "$REPLY" } # @deprecated 2.12 Use `_comp_compgen -a cd_devices` _cd_devices() { _comp_compgen -a cd_devices } # @deprecated 2.12 Use `_comp_compgen -a dvd_devices` _dvd_devices() { _comp_compgen -a dvd_devices } # @deprecated 2.12 Use `_comp_compgen -a pci_ids` _pci_ids() { _comp_compgen -a pci_ids } # @deprecated 2.12 Use `_comp_compgen -a usb_ids` _usb_ids() { _comp_compgen -a usb_ids } # @deprecated 2.12 Use `_comp_compgen -a terms` _terms() { _comp_compgen -a terms } # @deprecated 2.12 Use `_comp_compgen -c "${prefix:-$cur}" allowed_users` _allowed_users() { _comp_compgen -c "${1:-$cur}" allowed_users } # @deprecated 2.12 Use `_comp_compgen -c "${prefix:-$cur}" allowed_groups` _allowed_groups() { _comp_compgen -c "${1:-$cur}" allowed_groups } # @deprecated 2.12 Use `_comp_compgen -a shells` _shells() { _comp_compgen -a shells } # @deprecated 2.12 Use `_comp_compgen -a fstypes` _fstypes() { _comp_compgen -a fstypes } # This function returns the first argument, excluding options # @deprecated 2.12 Use `_comp_get_first_arg`. Note that the new function # `_comp_get_first_arg` operates on `words` and `cword` instead of `COMP_WORDS` # and `COMP_CWORD`. The new function considers a command-line argument after # `--` as an argument. The new function returns the result in variable `REPLY` # instead of `arg`. _get_first_arg() { local i arg= for ((i = 1; i < COMP_CWORD; i++)); do if [[ ${COMP_WORDS[i]} != -* ]]; then arg=${COMP_WORDS[i]} break fi done } # This function counts the number of args, excluding options # @param $1 chars Characters out of $COMP_WORDBREAKS which should # NOT be considered word breaks. See _comp__reassemble_words. # @param $2 glob Options whose following argument should not be counted # @param $3 glob Options that should be counted as args # @var[out] args Return the number of arguments # @deprecated 2.12 Use `_comp_count_args`. Note that the new function # `_comp_count_args` returns the result in variable `REPLY` instead of `args`. # In the new function, `-` is also counted as an argument. The new function # counts all the arguments after `--`. # shellcheck disable=SC2178 # assignments are not intended for global "args" _count_args() { local i cword words _comp__reassemble_words "${1-}" words cword args=1 for ((i = 1; i < cword; i++)); do # shellcheck disable=SC2053 if [[ ${words[i]} != -* && ${words[i - 1]} != ${2-} || ${words[i]} == ${3-} ]]; then ((args++)) fi done } # @deprecated 2.12 Use `_comp_load -D -- CommandName` to load the completion, # or use `_comp_complete_load` as a completion function specified to `complete # -F`. _completion_loader() { # We call `_comp_complete_load` instead of `_comp_load -D` in case that # `_completion_loader` is used without an argument or `_completion_loader` # is specified to `complete -F` by a user. _comp_complete_load "$@" } # ex: filetype=sh