Bash Completion Versions Save

Programmable completion functions for bash

2.13.0

1 month ago

2.13.0 (2024-04-03)

Features

  • curl: Complete protocols for --proto-default (7051379)
  • ip: Add completion for netconf subcommand (03a10ff)
  • ip: Complete commands for netns exec (1f03796)
  • ip: Complete help for unknown subcommands (21f7e32)
  • ip: Complete ip link property (efa663c)
  • ip: Complete link types for address show (ca5ea03)
  • ip: Complete neigh show and flush (c7c3c03)
  • ip: Complete stats subcommand (cd73e8c)
  • ip: Create function to get link types (8e60245)
  • rg: add fallback 3rd party completion loader (7e4cc2f)
  • xmllint,xmlwf: also suggest *.rss files (a89cde2)

Bug Fixes

  • available_interfaces: fix regression of unwanted trailing colons (c2f83e0)
  • ip: Complete addrlabel add/del properties (ea07616)
  • ip: Complete ip delete with type correctly (f3a9be3)
  • ip: Complete more variations of subcommands (c8920c5)
  • ip: Complete netns attach subcommand (bfb1de6)
  • ip: Complete only relevant addrlabel subcmds (05147f1)
  • ip: Keep completing after -netns name (1a5df4f)
  • ip: Quote all instantiation of ip as "$1" (ef25163)
  • ip: Quote network namespace names (216734b)
  • Makefile: include api-and-naming.md in dist (fdd8048)

2.12.0

2 months ago

2.12.0 (2024-02-21)

Features

  • _comp_backup_glob: add ucf generated backup files (351be1c)
  • _comp_backup_glob: require dash in dpkg backup files (59a57f9)
  • comp_compgen{filedir,set}: define exit status (7920c9d)
  • _comp_compgen_commands: align return value with other compgens (9d3362e)
  • _comp_compgen_commands: auto set -o filenames when appropriate (4d4839e)
  • _comp_compgen_commands: include dirs (b9c7b5d)
  • _comp_compgen_known_hosts: return 2 on usage error (43bb8f0)
  • _comp_compgen: support -i cmd and -x cmd (39cc200)
  • _comp_compgen: support -U var to unlocal var (b603535)
  • _comp_compgen: support option -C (6b3dfa5)
  • _comp_expand_glob: fail when no paths are generated (6b0a466)
  • _comp_get_fist_arg: support "-o GLOB" to skip optargs (0f14cc0)
  • _ip_addresses: auto ltrim colon completions when appropriate (ccdf953)
  • add _comp_compgen_split (542bf73)
  • add _comp_locate_first_arg (0384bd5)
  • airflow: add fallback 3rd party completion loader (bf5550b)
  • ansible:* add fallback 3rd party completion loader (5f8384e)
  • apt-get: prefer apt-cache in same dir as command (a731bfd)
  • b2sum: new completion (cd985df)
  • bash_completion: add function _comp_compgen_ltrim_colon (ce5889b)
  • black,blackd: add fallback 3rd party completion loader (47a1f05)
  • carton: support exec command completions (0eb3a21)
  • chezmoi: add 3rd-party completion loader (cobra) (31baa69)
  • conda: add 3rd-party completion loader (argcomplete) (c0f5ba2)
  • crc: add 3rd-party completion loader (cobra) (f10866e)
  • cz: add fallback 3rd party completion loader (b7ba70e)
  • dot: support filename extension .gv (be0010e)
  • dprint: add fallback 3rd party completion loader (e201e0e)
  • eog: add missing extension .heif (9e4a48f)
  • eog: associate with *.avif and *.webp (#1005) (f1c04b8)
  • eog: associate with *.heic and *.jxl (20c9cea)
  • eog: associate with *.pbm (#1006) (5472cc1)
  • feh: associate with y4m and heic/heif/avif (e252c73)
  • feh: deassociate with avci/avcs (af46f34)
  • flask: add fallback 3rd party completion loader (3e0d00d)
  • hash: new completion (#1013) (4d0bffb)
  • httpx: add fallback 3rd party completion loader (3f4861c)
  • ip: Add completion for monitor subcommand (fa696e6)
  • jungle: add fallback 3rd-party completion loader (c69845a)
  • keyring: add fallback 3rd party completion loader (8082602)
  • kontena: add fallback 3rd-party completion loader (5eef0ce)
  • lefthook: add fallback 3rd party completion loader (dc9650e)
  • mailman: prefer list_lists in same dir as command (a46ccf1)
  • mysql: prefer mysqlshow from same dir (643886c)
  • no empty command completion if no_empty_cmd_completion is on (faab292)
  • npm: add fallback 3rd-party completion loader (f1c085c)
  • nvm: add fallback 3rd-party completion loader (dea7e1d)
  • oc: add 3rd-party completion loader (cobra) (26b5f09)
  • pip{,3}: add fallback 3rd-party completion loader (e3cbfba)
  • pipenv: add fallback 3rd party completion loader (#1020) (6ecf5bd)
  • pytest: complete new --import-mode value (#1021) (2d636a3)
  • rtx: add fallback 3rd party completion loader (0628e22)
  • scp,sftp: prefer ssh from same dir to resolve options etc (d55f5e6)
  • ssh-copy-id,ssh-keygen: prefer ssh from same dir (5c1d270)
  • ssh-inscribe: add fallback 3rd party completion loader (7f2c197)
  • ssh: complete RequiredRSASize (#1064) (de15205)
  • tkn-pac: add 3rd-party completion loader (cobra) (d0f2604)
  • tkn: add 3rd-party completion loader (cobra) (161fc5d)
  • xrandr: comma separated --setmonitor third argument (8a76f3d)

Bug Fixes

  • __load_completion: quoted compspec for variants (#1008) (0a2443e)
  • _cd_devices: /dev/cdc-* CDC device false positives (5250728)
  • _comp__init_set_up_service_completions: work around failglob (2529d40)
  • comp{first_arg,count_args}: count - as argument (e23a79e)
  • comp{first_arg,count_args}: count any arguments after -- (9bfd760)
  • _comp_command_offset: Support complete -C (80450ca)
  • _comp_compgen_fstypes: avoid unexpected expansions (a856d81)
  • _comp_compgen_help: allow dots to connect names in longopt (79dadfc)
  • _comp_compgen_known_hosts: work around bash-4.2 nounset (d2860cb)
  • _comp_compgen_split: work around nounset (f488f96)
  • _comp_compgen_term: replace completions by default (d3696a3)
  • _comp_compgen_usergroup: avoid directly overwriting COMPREPLY (d380498)
  • _comp_compgen: do not inherit -a for explicitly specified var (3c20766)
  • _comp_compgen: explicitly exclude cur from the target variable (5fe98f3)
  • _comp_count_args: check optarg correctly (874c503)
  • _comp_count_args: exclude <>& from wordbreaks as _comp_initialize (521d2bb)
  • _comp_count_args: ignore empty $3 (76eea74)
  • _comp_count_args: perform optarg check also on $3 (21d3122)
  • _comp_count_args: skip reassembling cword and words (3127703)
  • _comp_delimited: treat delimiter as a fixed string (571a0f7)
  • _comp_deprecate_func: argument order in usage error message (597f62f)
  • _comp_get_words: empty prev if unavailable (localvar_inherit) (d8b8eef)
  • _comp_initialize: fix completions of redirections without space (da16bf6)
  • _comp_initialize: protect against "localvar_inherit" (0cc8d83)
  • _comp_split,_comp_compgen: strip periods from error message (b3b6a7c)
  • _comp_split: update error message for the correct options (3c4a89c)
  • _comp_sysvdirs: work around nounset (da26178)
  • _filedir_xspec: clean up unused variable tmp (67f1189)
  • _get_cword_at_cursor,cvs: quote array length (201239c)
  • _get_first_arg: remove invalid doccomment (eb40f56)
  • _known_hosts: use array for options (work around SC2178,SC2179) (743d0a9)
  • _mock,rpm: avoid icase flag s/reg/rep/i of GNU sed (33c18ce)
  • _service: quote word (c2d7fb7)
  • _slackpkg: do not scan after cword (ecd1384)
  • 7z: remove redundant printf '%s\n' "..." (20c2e32)
  • ant: work around custom IFS (584e567)
  • apt-cache: check all the words (84cfeda)
  • aptitude: do not use non-POSIX BRE \w (cd8c870)
  • aspell: use _comp_expand_glob against unexpected splitting (58d5176)
  • bash_completion: remove some unnecessary -a to _comp_compgen (636bb7c)
  • bts: update functions to generators and fix variable conflicts (7d2867c)
  • carton: remove a branch never happening (cd063f9)
  • chgrp: fix typo _comp_compgen{d =&gt; _}filedir (#1063) (4c98ce5)
  • compat: find compat dir for prefix-install (b6d06bc)
  • completions/*: quote array assignments properly (848aa41)
  • completions/*: scan until cword instead of ${#words[@]}-1 (17e0cc3)
  • completions/*: work around localvar_inherit (e3a871d)
  • curl,koji: use _comp_compgen_help (f37f221)
  • curl,qemu: avoid using POSIX character classes for mawk (d60c530)
  • curl: colon handling for IPv6 address completions (8508d1d)
  • cvs,mutt,pkg_delete: quote prefix to remove for literal matching (533903e)
  • cvs: avoid variable conflicts (0d145c9)
  • dict: nounset error when host/port not set (57191e2)
  • dict: protect splitting from custom IFS (b31fe1e)
  • dict: work around bash-4.2 array nounset (d76dd9e)
  • dict: work around bash-4.3 ${v+"$@"} with custom IFS (cc21298)
  • dmypy: protect against "localvar_inherit" (768ce65)
  • dpkg-source: filter completions by cur (dbcef6e)
  • filedir: work around bash-4.2 compgen -f -- "''" (c8bb123)
  • fix problems with set -o nounset (9c3e196)
  • gdb: fix regression that fails to generate command names (ca8e240)
  • gdb: remove duplicate candidates (532fc05)
  • gdb: use POSIX-compatible find expression (73938cd)
  • gdb: work around bash 4.4 ${v+"$@"} (41236da)
  • get_words: work around bash-4.3 connected ${v+"$@"} (81affbd)
  • getent: check noargopts (6143f25)
  • getent: work around localvar_inherit (a12f438)
  • gzip,isort: fix typo _comp_com{gp =&gt; pg}en (462feb3)
  • iperf,puppet: use {m,n} instead of ? and + for POSIX sed (3f0322b)
  • iperf: work around failglob with backslash in bash-5.0 (979f04f)
  • ip: Remove non-existent route completion (3b9ce4d)
  • isql: work around nounset (cb7007a)
  • java,kldload: use _comp_compgen for filename-based mod names (81adc6c)
  • java: localize cur (ec0068d)
  • kcov,povray: quote array expansions to avoid extra processing (215edab)
  • kldload,mplayer,mutt: work around nounset (5330fbe)
  • kldunload: remove unused -X option (35017d2)
  • known_hosts_real: match *.pub instead of *pub (470a644)
  • known_hosts_real: use _comp_expand_glob to avoid failglob (672215e)
  • known_hosts_real: work around nounset (07c619a)
  • lilo,rpcdebug,slapt-{get,src}: work around nounset (cfc3eda)
  • lvm: replace array slices with existing utility (ea49840)
  • lvm: update call to sub-command (30494f7)
  • make: handle multiple short options in skipping arguments (24c80c9)
  • make: typo fix in a code comment (e72cc82)
  • mdadm,update-alternatives: fix leak variable (14cd53b)
  • medusa: filter completions by the current word cur (f3ae706)
  • mr: avoid ${var/pat/$'...'} for compat42 in bash >= 4.3 (b5ae5fa)
  • mr: exactly match command names (800b103)
  • mutt: avoid unexpected word splitting (3183e67)
  • mutt: fix use of regex in the glob context (63924e6)
  • mutt: rewrite ${cur/#!/X} to X${cur:1} against patsub_replacement (6b8f82b)
  • mutt: use _comp_dequote for safe eval (f98379d)
  • openssl: avoid variable conflicts (a31906c)
  • openssl: fix variable i leak (83844b7)
  • perl: fix ineffective condition in an awk script (302dc52)
  • perl: helper call regression from 01611dd3d (b85263a)
  • pgrep: do not rely on uncontrolled IFS (99e38b2)
  • portinstall: use awk and _comp_compgen to filter completions (791f56c)
  • povray,sbopkg: check filetype (434eb08)
  • povray: process each element against patsub_replacement (0afc2e4)
  • povray: quote an argument properly (0a240bd)
  • ps,ss: avoid extra expansions by -W "$(...)" in _comp_delimited (cb347cb)
  • pydoc: specify -a to _comp_compgen_filedir (34a91e9)
  • pytest: do not filter underscores from parsed option arg choices (ea13241)
  • python: avoid variable conflicts (bef94c3)
  • python: complete filenames for script arguments (#1018) (397a49d)
  • python: complete micropython and pyston script args consistently (5b60ccc)
  • qdbus: remove cur and all the rest arguments (531b751)
  • replace \s with [[:space:]] for POSIX sed/awk (1989ba9)
  • ri: avoid interference on existing COMPREPLY (0a9d931)
  • ri: fix wrongly quoted options to compgen (5248bbf)
  • ri: properly split methods (910a5a0)
  • ri: split classes using _comp_split (c95baa1)
  • ri: work around localvar_inherit (9d6ff68)
  • sbopkg: add ; mandatory before } in POSIX sed (b286d53)
  • sbopkg: work around nounset (9709bdf)
  • scp: nounset mode error on unknown suboption, bash 4.2 (82ca8d9)
  • ssh-copy-id: call ssh, not -copy-id for suboption completion check (473278f)
  • ssh-keygen: call ssh, not -keygen to resolve supported protocols (d569ea2)
  • ssh-keygen: first arg to ssh query for protocol versions (8a0a71e)
  • ssh: avoid variable conflicts (f2df91d)
  • ssh: fix wrong quoting inside compgen -W (febb3b3)
  • ssh: remove -a of generators (55c5c45)
  • ssh: remove unnecessary -a to _comp_compgen (992f28e)
  • ssh: resolve relative ssh_config Include correctly (4ac86e8)
  • ssh: use _comp_compgen for _comp_xfunc_ssh_identityfile (05e70ed)
  • ssh: work around bash-4.2 nounset (4447f83)
  • ssh: work around bash-4.2 nounset (d0695d0)
  • sudo: use $1 (sudo) as $root_command (329ca0e)
  • svcadm: fix ineffective IFS for splitting (1fd456e)
  • svcadm: use the first matching name as command (1870d5e)
  • sysbench: fix extraction of test-name option (cc246a1)
  • timeout: always treat word after duration as command (0d0531b)
  • tipc: remove filtered-out elements (75b36b2)
  • update-alternatives: quote dirname (1205ed1)
  • update-alternatives: suppress error for non-existent directory (adbdab8)
  • update-alternatives: work around localvar_inherit (1d9e19c)
  • upgradepkg: use _comp_compgen for _comp_cmd_upgradepkg (a0973d7)
  • use _comp_compgen_split to avoid extra expansions by -W "$(...)" (49997d0)
  • use _comp_compgen_split to split and filter words (158b8ba)
  • use _comp_compgen_split while keeping filtering by $cur (a00ee19)
  • use _comp_compgen for word list (83f033f)
  • use _comp_split while keeping filtering by $cur (509e642)
  • use compgen -P prefix -W '"${arr[@]}"' against patsub_replacement (45d036a)
  • use XPG4 awk in Solaris (cdd6da9)
  • wol: filter IP addresses by cur (c3505c5)
  • wtf: quote array assignment (44c1d12)
  • xfreerdp: support the new form of the option /list:kbd (d8cadfe)
  • xfunc ssh identityfile: localize change to cur (76b5726)

Performance Improvements

  • _comp_count_args: skip reinitializing cword and words (29398ef)
  • mutt: return earlier on empty cur (a244587)
  • portinstall: return earlier for -lLo and non-existent file (395e463)
  • vncviewer: set nocasematch inside subshell (5ed0020)

2.11

3 years ago

Main things to notice in this release:

  • 4.2 is now the oldest supported version of bash
  • we should be compatible with nounset mode from now on

Other than that, the usual bunch of smaller items, see CHANGES or the git commit log for details.

2.10

4 years ago

2.9

5 years ago

2.8

6 years ago

2.7

6 years ago

2.6

6 years ago

2.5

7 years ago

2.4

7 years ago