pax_global_header00006660000000000000000000000064137067662150014527gustar00rootroot0000000000000052 comment=b12639a6becec13a0a2c06173ba40fb3bbe972e1 bash-completion-2.11/000077500000000000000000000000001370676621500145365ustar00rootroot00000000000000bash-completion-2.11/.dir-locals.el000066400000000000000000000004531370676621500171710ustar00rootroot00000000000000;;; Directory Local Variables ;;; For more information see (info "(emacs) Directory Variables") ((python-mode (eval add-hook 'before-save-hook 'blacken-buffer nil t)) (sh-mode (mode . shfmt-on-save) (shfmt-arguments "-s") (flycheck-sh-bash-args "-O" "extglob") (sh-indent-comment . t))) bash-completion-2.11/.dockerignore000066400000000000000000000000201370676621500172020ustar00rootroot00000000000000**/__pycache__/ bash-completion-2.11/.editorconfig000066400000000000000000000004531370676621500172150ustar00rootroot00000000000000[*] indent_style = space indent_size = 4 tab_width = 8 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 79 # for shfmt function_next_line = true switch_case_indent = true [Makefile.am] indent_style = tab [*.{yml,yaml}] indent_size = 2 bash-completion-2.11/.gitignore000066400000000000000000000004761370676621500165350ustar00rootroot00000000000000*.tar* *.swp Makefile Makefile.in aclocal.m4 autom4te.cache config.log config.status configure configure.lineno install-sh missing doc/*.xml *~ doc/html* bash_completion.sh bash-completion.pc bash-completion-config.cmake bash-completion-config-version.cmake __pycache__/ .pytest_cache/ .python-version pytestdebug.log bash-completion-2.11/.markdownlint.yaml000066400000000000000000000001061370676621500202060ustar00rootroot00000000000000MD007: false # for lists in FAQ/A MD033: allowed_elements: [kbd] bash-completion-2.11/.perltidyrc000066400000000000000000000001561370676621500167220ustar00rootroot00000000000000--perl-best-practices --maximum-line-length=79 --paren-tightness=2 --cuddled-else --warning-output --converge bash-completion-2.11/.pre-commit-config.yaml000066400000000000000000000052611370676621500210230ustar00rootroot00000000000000repos: - repo: local hooks: - id: shfmt name: shfmt language: golang additional_dependencies: [mvdan.cc/sh/v3/cmd/shfmt@v3.1.2] entry: shfmt args: [-w, -s] types: [text] files: ^(bash_completion|completions/.+|test/(config/bashrc|update-test-cmd-list)|.+\.sh(\.in)?)$ exclude: ^completions/(\.gitignore|Makefile.*)$ - repo: https://github.com/shellcheck-py/shellcheck-py rev: v0.7.1.1 hooks: - id: shellcheck args: [-f, gcc] types: [text] files: ^(bash_completion|completions/.+|test/(config/bashrc|update-test-cmd-list)|.+\.sh(\.in)?)$ exclude: ^completions/(\.gitignore|Makefile.*)$ require_serial: false # We disable SC1090 anyway, so parallel is ok - repo: local hooks: - id: update-test-cmd-list name: update-test-cmd-list language: script entry: test/update-test-cmd-list files: ^test/t/.+\.py$ pass_filenames: false - repo: https://github.com/psf/black rev: 19.10b0 hooks: - id: black types: [text] files: ^(helpers/python|.+\.py)$ exclude: ^completions/ - repo: https://gitlab.com/pycqa/flake8 rev: 3.8.3 hooks: - id: flake8 args: [--config=test/setup.cfg] additional_dependencies: [flake8-bugbear==20.1.4] types: [text] files: ^(helpers/python|.+\.py)$ exclude: ^completions/ - repo: https://github.com/timothycrosley/isort rev: 5.1.4 hooks: - id: isort args: [--settings-path=test/setup.cfg] types: [text] files: ^(helpers/python|.+\.py)$ exclude: ^completions/ - repo: https://github.com/pre-commit/mirrors-mypy rev: v0.782 hooks: - id: mypy args: [--config-file=test/setup.cfg] # Intentionally not run on helpers/python (support very old versions) exclude: ^completions/|^test/fixtures/pytest/ - repo: https://github.com/asottile/pyupgrade rev: v2.7.2 hooks: - id: pyupgrade args: [--py3-plus, --keep-percent-format] exclude: ^completions/ - repo: https://github.com/perltidy/perltidy rev: "20200619" hooks: - id: perltidy types: [text] files: ^(helpers/perl|.+\.p[ml])$ - repo: local hooks: - id: perlcritic name: perlcritic language: perl additional_dependencies: [PETDANCE/Perl-Critic-1.138.tar.gz] entry: perlcritic args: [--quiet, --verbose, "5"] types: [text] files: ^(helpers/perl|.+\.p[ml])$ - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.23.2 hooks: - id: markdownlint bash-completion-2.11/.shellcheckrc000066400000000000000000000007511370676621500171740ustar00rootroot00000000000000shell=bash disable=SC1090 # not really fixable usually (ever?) disable=SC2034 # for localizing variables set in called functions disable=SC2128 # intentional style choice disable=SC2206 # suggested alternatives fail in posix mode or use temp files disable=SC2207 # suggested alternatives fail in posix mode or use temp files # These disables are to be investigated and decided disable=SC1004 disable=SC2015 disable=SC2016 disable=SC2086 disable=SC2155 disable=SC2162 disable=SC2231 bash-completion-2.11/.travis.yml000066400000000000000000000036641370676621500166600ustar00rootroot00000000000000language: generic dist: bionic services: - docker jobs: include: - stage: lint language: go go: "1.14" services: [] cache: directories: - $HOME/.cache/pip - $HOME/.cache/pre-commit before_install: [] script: - pyenv shell 3.8 - pip3 install "$(grep ^pre-commit test/requirements-dev.txt)" - pre-commit run --all-files --color=always - stage: test env: DIST=alpine - env: DIST=centos7 - env: DIST=debian10 - env: DIST=fedoradev - env: DIST=ubuntu14 - env: DIST=ubuntu14 BSD=true NETWORK=none before_install: - docker build --build-arg DIST=$DIST -t bash-completion:$DIST -f test/docker/Dockerfile . script: - docker run --name bash-completion -e CI=true -e DIST=$DIST -e BSD=$BSD -e NETWORK=$NETWORK ${NETWORK:+--network $NETWORK} -t bash-completion:$DIST before_deploy: - docker start bash-completion - docker exec bash-completion sh -c "tar c bash-completion-$TRAVIS_TAG.tar.*" | tar xv - docker kill bash-completion deploy: provider: releases api_key: secure: MoK9nzmS6CBzPPIrhC0Ch6hIB3zEzLqZE6k4axoCyz/wmJFLJgX9OCq5K8zS4Jv8NuaA2C1YTcr+m56IO9N0RTmIWrS4q40fLIhKlYv6255u+wXMkGfqXbiFAZG5yndhUo8NE6QXAtixd3nQ/3/MOt2PdsOn+OdxTDmcPSXaW/ltkd/fMHynWzupdyRJ1v46IofPBrjsC1pTzW0iVqVHz64Ix3kPVjjPR9BMHzgKMJ8sPWBGZtF2ovjwsTHYPSpEyytVRecqrmEjM6QBCgfhQDqH87jOw6Y81xh1fWDCoxaZw7HlEcQ+HeHOkDdA24AYaxVoYXrKdIDXUXWt8w674Po7UWB6kIUn3J59Xaw60Sp4VaN88Y2eX9UKRcoDRHLWc8HKt4f9AUDR9YpFF08N+gKRmJFt9mCxqeJ+pyYD/coHGkGb8XvewTKihCSuH/qCWjM8XqM493DLDlJ5aELgMEcJXPXX4TmjsriOeErTY1qxRTRHJPmfUJ/kHtmpE+DxNXpwZOnyG+VoO5aEaIKbzHxX9QzWyyEhTflupdatZ2JFt1pmVDpwH9zcEifBwE0cUwhXk+LJuxHd5ePIIpvepAAnXKaxlYwchj4cFaJp7S9GZoAQughgQQkyfz0qr3J6hBhg360QAq4yjPOWjGgGz4iAG8kWd3MVXLvL+TtfBeY= file: bash-completion-$TRAVIS_TAG.tar.xz skip_cleanup: true on: repo: scop/bash-completion condition: $DIST = alpine tags: true bash-completion-2.11/AUTHORS000066400000000000000000000004351370676621500156100ustar00rootroot00000000000000David Paleino (Debian) Freddy Vulto Guillame Rousse (Mandriva) Igor Murzov Mike Kelly (Exherbo) Santiago M. Mola (Exherbo) Ville Skyttä bash-completion-2.11/CHANGES000066400000000000000000004123601370676621500155370ustar00rootroot00000000000000bash-completion (2.11) [ Alexander Meshcheryakov ] * _known_hosts_real: check that ruptime is present before calling (#390) [ Andrew Gaul ] * totem: reuse kaffeine completions (#372) [ Damien Nadé ] * __reassemble_comp_words_by_ref: avoid triggering nounset on indirect references [ Felix Lechner ] * lintian: complete paths for Ubuntu's .ddeb and Debian's buildinfo files (#397) [ Felix Yan ] * ip: complete route add table arg * ip: style fixes similar to ip-netns * ip: add more completions for ip-rule * ip: add support for netns (#391) * ip: improve completion of route subcommands (#326) [ Hans-Christoph Steiner ] * unzip, zipinfo: complete *.aar (#428) [ Jakub Jelen ] * ssh: add new -Q completions in OpenSSH 8.2p1 (#400) [ Kevin Locke ] * python: support executables with minor version (#389) [ Michal Suchánek ] * insmod, modinfo, modprobe: support xz compressed modules (#401) [ Phan Duc Nhat Minh ] * tshark: complete -r arg with all filenames (#422) [ Sebastian Jakubiak ] * openssl: update -starttls completions (#403) * _filedir*: update link to bug-bash discussion on -X (#404) * test/python: add testcase for submodule completion [ Ville Skyttä ] * Release 2.11 * extra/make-changelog: check and output usage message * pre-commit: anchor exclude patterns * pytest: rewrite in bash, support toplevel funcs, avoid nondef ones and classes * test/xfreerdp: skip --help failure cases * test/tshark: fix multiple -O completion with no http2 support * test/ant: avoid complete-ant-cmd.pl interference with ANT_ARGS * _xinetd_services: avoid nounset error on bash 4.2 * pre-commit: upgrade isort to 5.1.4 * pre-commit: upgrade pyupgrade to 2.7.2 * pre-commit: add pyupgrade, run it * test/ant: gitignore all target cache files * _known_hosts_real: exclude Host negations * pre-commit: upgrade isort to 5.0.7 * pre-commit: update shellcheck-py URL * test/inputrc: do not set print-completions-horizontally * test/inputrc: comment typo fix * pytest: complete async test class methods * __get_cword_at_cursor_by_ref: fix regression on bash 4.2 * test: upgrade markdownlint-cli to 0.23.2 * _known_hosts_real: avoid errors in nounset mode on Ubuntu 14 and 16 * _longopt: exclude too many dashes, allow underscores, require ends with alnum * _included_ssh_config_files: support globs * _known_hosts_real: prevent unwanted pathname expansion on host entries * test/shfmt: upgrade to 3.1.2, reformat with it * test/_known_hosts_real: add explicit no globbing test case * test: upgrade mypy to 0.782 * CONTRIBUTING.md: add posix and nounset mode item * test: upgrade mypy to 0.781 * test: upgrade perltidy to 20200619 * _known_hosts_real: fix completion of Host entries after a wildcard etc * _known_hosts_real: fix # handling in ssh configs * test: upgrade flake8 to 3.8.3 * test/xhost: multiple expected result handling fixes * test/slapt-src: single expected result handling fixes * test: partial hostname completion fixes * test: simplify completion parsing * test/dpkg-query: mark as xfail on non-Debian based systems * .gitignore: clean up some no longer needed ignores * test/lspci: skip -A arg test if lspci fails -A help, e.g. busybox lspci * test: regex escape our magic mark for completeness * test: upgrade mypy to 0.780 * test/_known_hosts_real: don't modify class scoped base expected list * test/_known_hosts_real: reset COMP_KNOWN_HOSTS_WITH_HOSTFILE between tests * test/_known_hosts_real: tolerate duplicates * bash_completion: trivial cleanups * gcc: avoid errors in nounset mode * pytest: fix test class method completion with BSD awk * man, mutt: avoid errors in nounset mode on Ubuntu 14 and 16 * java, make: avoid errors in nounset mode on Ubuntu 14 and 16 * README: document GNU make build requirement * pytest: add test class method completion * _known_hosts: avoid errors in nounset mode and no arguments * bash_completion: fix array set checks with empty elements in them * *: avoid more errors in nounset mode * cfrun: fix $hostfile leak * _command_offset, route: cleanups * *: avoid more errors in nounset mode * qemu: add -machine arg completion * qemu, sbopkg: avoid unintentional globbing on option arg completions * test: enable shellcheck SC2035 * *: drop support for bash 4.1 * _init_completion: fix unassigned redirect completion in nounset mode * ip: route shfmt, arithmetic evaluation * _filedir: avoid unbound variable error on Ubuntu 14 and 16 * _pids, _pgids, _pnames: improve shfmt formatting * scp, sftp, ssh: fix completion on options bundled with -4/-6 * modprobe, tshark, _included_ssh_config_files: use [[ ]] instead of [ ] * test/runLint: warn about [ ] instead of [[ ]] use * test: skip various tests if we don't get a useful usage message * *: mark nounset mode as supported, issues with it are bugs now * *: avoid more errors in nounset mode * *: avoid more errors in nounset mode * *: avoid more errors in nounset mode * test/inputrc: comment and whitespace tweaks * *: avoid more errors in nounset mode * test/unit: sort files included in dist * test/unit: include test_unit_known_hosts_real.py in dist * bash_completion: line wrapping tweaks, NFC * 7z: fix -o/-w attached arg completion * postfix: try to arrange a fake tty so we can tickle the usage message out * _bashcomp_try_faketty: new function to try running command with a fake tty * mr: avoid herestrings, simplify command parsing * test/mr: handle missing "clean" with skipif * test: mark known non-ASCII issues with test suite as xfail * dpkg-deb: add --raw-extract and -X arg completions * test: add some dpkg-query test cases * dpkg-deb: fix --show/-W completion * test: upgrade markdownlint-cli to 0.23.1 * *: use more arithmetic evaluation * test: try harder to restore environment and cwd on failures * *: use $ifs for storing/restoring $IFS * test/irb: xfail options test if --help is not available * test: upgrade flake8 to 3.8.1 * test: pre-commit config cleanups, ordering * test: upgrade pre-commit to 2.4.0+, drop shfmt kludge * test: sync shfmt and shellcheck configs * test: shfmt bashrc * test: remove unused run-shellcheck, shellcheck is in pre-commit now * test: remove old test suite code no longer used \o/ * test/_known_hosts_real: port remaining test cases to pytest+pexpect * test: remove more no longer needed old test suite code * test/_known_hosts_real: port more test cases to pytest+pexpect * test/_get_cword: port remaining test case to pytest+pexpect * test: replace some echos with printfs * test/_filedir: fix shutil.rmtree on Python < 3.6 * test/_expand: port remaining test cases to pytest+pexpect * test: drop some no longer needed old test suite code * test/_filedir: port remaining test cases to pytest+pexpect * test: run all Travis jobs on dist: bionic * test: drop not needed sudo on Travis * test/_filedir: port more test cases to pytest+pexpect * test/__expand_tilde_by_ref: port remaining test cases to pytest+pexpect * test/_get_comp_words_by_ref: convert remaining test cases to pytest+pexpect * test: run pytest --verbose in docker * lftp: use "bookmark list" command to list bookmarks * test: drop some no longer needed old test suite code * test/slapt-src: convert remaining test case to pytest+pexpect * _xfunc: simplify * apt-cache: avoid nonzero exit code from _apt_cache_packages * test/slapt-get: convert remaining test case to pytest+pexpect * test/secret-tool: add to test command list * test/scp: port remaining test case to pytest+pexpect * test/umount: convert remaining test case to pytest+pexpect * secret-tool: new completion * apt-get: complete build-dep with dirs * travis: use golang 1.14 for shfmt * *: run all shell code through shfmt -s * pre-commit etc: add shfmt * test: fix incorrect fixtures/shared/default xfails/expectations * test: upgrade markdownlint to 0.23.0 * nmap: simplify help scraping a bit, don't try to emit unnecessary newlines * test: prefix fake test commands with underscore * test: port most umount test cases to pytest+pexpect * test: add note about unescaped assert_complete single return values * editorconfig: apply yaml settings to .yaml too * pre-commit: use local perlcritic hook * *: doc and comment link updates * pre-commit, *.md: add markdownlint, address findings * README: clarify loading automatically on demand * ssh-keygen: -O arg updates and improvements * ssh-keygen: add -b arg completions according to specified -t * ssh-keygen: option and arg completion updates for new versions * _command: improve commentary * reportbug, scp, sftp, svn: use compgen -c instead of _command * find: fix -exec etc argument and its completion * extra: trigger docker builds only on test-cmd-list.txt changes * test: add script to maintain list of executables for full test coverage * test: run lint tests on Travis in a quickish separate first stage * test/make: mark more cases as requiring command * make: add bmake alias * test: run pre-commit on host instead of docker * test: add perlcritic to pre-commit, run on all perl * *: remove some unused variables, thanks to shellcheck SC2034 * *: various loop iteration improvements * crontab: fix loop over already given args * apt-cache: fix command mode handling * doc: add loop variable naming guideline * test: make at-point completion tests easier * ssh, xsltproc: address shellcheck SC2006 * scp: work around shellcheck SC1003 * mutt: address shellchec SC2236 * wget: address shellcheck SC2116 * pytest: address shellcheck SC2002 * bash_completion, java, tipc: for loop whitespace consistency tweaks * *: more arithmetic evaluation cleanups, thanks to shellcheck SC2004 * __reassemble_comp_words_by_ref, java: address and work around shellcheck SC2102 * test: enable parallel pre-commit shellcheck * test: remove shellcheck severity filter, add explicit disables instead * doc: recommend arithmetic evaluation * *: array subscript cleanups * ssh-keygen: -s and -n completion improvements * *: enable and address shellcheck SC2053 * bash_completion, invoke-rc.d, svcadm: trivial cleanups * *: replace various conditional expressions with arithmetic evaluation * carton: fix command parsing with BSD sed * nmap: fix option parsing with BSD sed * test/alias: port remaining test case to pytest+pexpect * test: generalize complete at point test * test/cd: fix test_dir_at_point for setups that repeat "trailer" * pytest: add some option arg (non-)completions * pytest: complete test classes * pgrep, pkill: add --ns and --nslist arg completions * test: run skipif and xfail commands without caring if they output or not * test: make it possible to not care whether command did output or not * test/xfreerdp: skip xfreerdp kbd test if kbd-list returns empty * test: tolerate duplicates from compgen actions * test: bump shellcheck severity to warning + some disables * *: address shellcheck SC2046 * test/lib/library.sh: address shellcheck SC2125 * java, pkgadd, sysbench: address shellchec SC2124 * scp: address shellcheck SC2089 and SC2090 * _filedir_xspec: address shellcheck SC2140 * rpm, ssh, umount.linux: address shellcheck SC2120 * cvs, modprobe, sh: address shellcheck SC2209 * mutt: address shellcheck SC2088 * _upvar, _upvars, _variables, rpm: address shellcheck SC1083 * test/run: address shellcheck SC2164 * renice: address shellcheck SC2254 * tipc: comment grammar and spelling fixes * man, perl, route, tipc: address shellcheck SC2053 * info, java: address shellcheck SC2153 * quote_readline: fix $ret leak * test: upgrade shellcheck to 0.7.1 * test/printenv: xfail if --help doesn't contain options (e.g. busybox) * test/aptitude: require command where necessary * _known_hosts_real, op: address shellcheck SC2184 * test: don't run shellcheck on completions/.gitignore * protoc: complete all --*_out without more specific handling with dirs * sysbench: add --test= deprecation TODO * pkgadd: indentation fix * chronyc, wvdial: address shellcheck SC2178 * java, pkgadd, sysbench: address shellcheck SC2124 * mplayer: address shellcheck SC1078 false positive * smartctl: hush shellcheck SC2054 false positives * *: address shellcheck SC2221 and SC2222 * bash_completion: address shellcheck SC2220 * crontab, wodim: silence shellcheck SC2191 and SC2192 * aptitude: add some option arg (non)completions * aptitude: parse options list from --help, hardcode less * test/aptitude: add some test cases * *: argument interation improvements * *: whitespace tweaks * apt-get etc: use _apt_cache_packages from apt-cache * pre-commit: run most python checks on helpers/python too * test/ldd: xfail if --help is not implemented * test/printenv: require command for arg completion test * printenv: indentation fixes * test: upgrade mypy to 0.770 * test: split dependencies requiring Python 3.6.1+ to requirements- dev.txt * git: trigger docker rebuild on pre-commit config change * test: require openssl command for option argument tests * test: move perltidy to pre-commit, run with --converge * test: move shellcheck to pre-commit * test: ignore flake8 messages that are in black's domain * _xinetd_services: look up from $BASHCOMP_XINETDDIR, add some unit tests * printenv: new completion * copyright: add 2020 * test: fix CompletionResult.__eq__ UnboundLocalError * test: run pre-commit in tools container * test: shellcheck tweaks * test: add isort to pre-commit, run it * test: add flake8-bugbear * test: install black for Python 3.6 too * pre-commit: add config with black, flake8, and mypy * test: drop redundant black args from docker runs * *: python type hint fixes and improvements * extra/make-changelog: run through black * test/totem: add basic test case * test/cd: remove unused import * openssl: complete -writerand with filenames * openssl: parse available options from $command -help * openssl: support getting digest list from more recent openssl versions * nmap: handle options split on equals sign * nmap: parse options from -h output * test/cd: make dir_at_point produce better debuggable failures * test/cd: convert remaining test case to pytest+pexpect * test: remove some no longer needed old test suite code * test/chown,sudo: parametrize special case test, improve xfail targeting * test/tsig-keygen: require command for test_options * test/upgradepkg: port remaining test case to pytest+pexpect * tsig-keygen: new completion * test: host helper lint and usage fixes * test: port some _known_hosts_real unit tests to pytest+pexpect * test: remove some no longer needed tcl/expect code * test: fix spurious hosts fixture failure without avahi-browse installed * test: port some scp test cases to pytest+pexpect * test: port remaining finger, sftp, ssh, and xhost cases to pytest+pexpect * lilo: work around shellcheck false positive * test/ipcalc: fix tests with busybox ipcalc * chromium-browser, firefox: complete on *.txt (#379) * README.md: add introduction * ipcalc: new completion * *: complete commands when prefixed with a backslash * test/wol: don't fail MAC test if test system has /etc/ethers entries * test/dnssec-keygen: allow more alternatives in algorithm completion * lilo: don't complete on commented out labels * lilo: honor -C when completing labels * lilo: add -B and -E completions [ beantaxi ] * Source user completion only if it's a file (#409) [ hugoziviani ] * jarsigner: complete on *.apk too (#386) * cryptsetup: add luksChangeKey arg completion (#380) -- Ville Skyttä Sat, 25 Jul 2020 11:25:09 +0300 bash-completion (2.10) [ Felix Lechner ] * perltidy: associate *.t (#338) [ Gabriel F. T. Gomes ] * perl: fix completion with space between option and argument [ Grisha Levit ] * _variables: add TERM and LC_* completion (#353) [ Iñigo Martínez ] * autotools: Replace pkgdatadir with datadir * pkg-config: Relative paths * pkg-config: generate Name from autotools PACKAGE [ Jakub Jelen ] * ssh: option and argument completion updates (#332) [ Michał Górny ] * test_arp: Skip if ARP tables are empty * test_chromium_browser: Skip test_2 if 'chromium-browser --help' fails * test_rpm2tgz: Fix expected output [ Sebastian ] * cppcheck: Add new standards to --std option. (#356) [ Tomasz N ] * apt-get: fix pkg version completion if it contains a colon (#351) [ Ville Skyttä ] * test: bump black to >=19.10b0 * ssh, scp, sftp, ssh-copy-id, curl: improve identity file completion * update-rc.d: indentation fix * update-rc.d: remove dead code * screen: add serial device basic arg (non)completion * screen: add //telnet completion * test: add some trivial perl -E/-e cases * perl: indentation fixes * curl: make @filename completion do the right thing with dirs * _filedir: avoid duplicate dirs internally, and a compgen -d call for files * _filedir: remove unused $x * bash_completion.sh: shellcheck SC2086 fixes * test: shellcheck config cleanups * shellcheck: add some option arg (non)completions * test: fix cpio users test in presence of usernames with whitespace * test: python typing fixes * test: add minimal mypy config * .gitignore: mypy cache * makepkg: fix option completion * test: mark dcop and mr testcases requiring the cmd as such * CONTRIBUTING: disable e-mail bug gateway due to spam * carton: new completion * op: direct command parsing stderr to /dev/null * test: adjust java expectations based on whether jars can be listed * valgrind: look tool names from lib/*-linux-gnu dirs too * test: xfail locale-gen option completion if --help is not available * _sysvdirs: always return 0 * java: don't assume jar is installed * travis: test with Debian 10 * wine: install for wine-development and wine-stable too * travis: generate dist tarball on alpine * dmypy: new completion * test: add require_longopt xfail helper, use it * test: mark more tests that parse command output as requiring command * sysctl: invoke completed sysctl instead of one from path to get variables * screen, smartctl, update-alternatives: _parse_help, drop hardcoded option list * lintian-info: _parse_help, add more option arg (non)completions * gprof: _parse_usage, drop hardcoded option list * test: fix retrieving command to test from request * travis: pass NETWORK as env var, so we can actually use it * test: xfail MAC address completion without networking * test: ignore _makepkg_bootstrap in makepkg test env * test: hush flake8-bugbear B010 * test: don't sort expected completion lists under the hood * test: add bunch of basic option parsing test cases * test: always run tests which don't require tested command * test: explodepkg and upgradepkg test fixes * test: mark sbcl-mt xfail due to whitespace split issues * _terms: search directly from various terminfo dirs * _terms: combine and simplify somewhat * pkg-get: fix $i leak * pkgutil: fix $i leak * test: portinstall/upgrade test case and setup fixes * lvm pv*, vg*: parse help instead of hardcoding option list * ipv6calc: parse help instead of hardcoding option list * test: avoid some sed -r/-E runLint false positives * test: use sh +* as ccache command test case * java: make jar/zip listing work with unzip * test: installpkg test fixes * test: fix acroread fixture dir * test: remove unnecessary returns after pytest.skip * test: avoid gnome-mplayer core dump on Ubuntu 14 * xvfb-run: new completion * test: skip gssdp-discover --message-type when option not available * test: expect failures for bc without --help useful with _longopt * test: don't expect a .tox dir in fixture * test: drop sourcing our no longer existing profile.d script * tox: include -- in option completions * tox: complete defaults after a -- * gssdp-discover: new completion * test: register our pytest markers to hush warnings from 4.5+ * test: fix required pytest version * ip: invoke the tool as $1 * README: drop distro badges, link to Repology instead * chromium-browser: add --proxy-server arg completion * test: source our profile.d test env script in docker * influx: new completion * README: badge title tweaks * tox: do simple parse on tox.ini if --listenvs* yields nothing * test: add basic tox fixture * man: fall back to _parse_usage for _parse_help * test_wsimport: xfail options test on unparseable -help * test: don't try to install black on Python < 3.6 * pgrep: fix fallback to _parse_usage * test: xfail unparseable mock and munin-node-configure --help cases * test_pwdx: xfail more unparseable help cases * build: make pytest executable configurable, look for pytest-3 too * test: enforce minimum pytest version * test: zopflipng flake8 fix * test: xfail getent and pwdx option completions with unparseable --help * test: add more basic _parse_help use test cases * test: add bunch of basic _parse_help use test cases * .gitignore: add configure.lineno * badblocks: fix $i leak * postfix: option completion is expected to fail at the moment * cal: try _parse_help before _parse_usage * test: add bunch of basic _parse_usage use test cases * chsh, pwck: try _parse_help before _parse_usage * test: add basic autossh test * test: convert more _filedir unit tests to pytest+pexpect * test: flake8 fix * test: convert bunch of _filedir unit tests to pytest+pexpect * test: convert finger partial test case to pytest+pexpect * README: add some badges, tweak existing * test: port _variables unit tests to pytest+pexpect * test: port compgen and quote tests to pytest+pexpect * iconv, lz4, tipc, xsltproc: replace some seds with compgen -X * test: disallow Alpine failure on Travis * _pnames: adapt for busybox ps, rewrite in pure bash * test: run our docker script in test containers by default * test: use one Dockerfile for all dists * test_ifup: accept short option completions too * timeout: fallback to _parse_usage from _parse_help * test_wget: test --s instead of --h * test_lsusb: xfail with unparseable --help * test: expect failures for various completions without useful --help * test: support xfail in our markers like skipif, use it a lot * test: add Alpine Linux container, allow failures for now * iconv: weed out ... from encoding completions * test_iconv: add basic file completion test * test_iconv: skip option completion if --help fails * test_getconf: skip if -a doesn't output any POSIX_V* * test_feh, test_makepkg: invoke grep as "command grep" * test: generalize check whether we're being run in a container * tar: simplify locating tarball from command line * pkg_delete: don't limit to FreeBSD * test: reformat test_chromium_browser.py source * test: set up BASH_COMPLETION_COMPAT_DIR in bashrc (only) * test: more thorough system location interference avoidance * test: bashrc comment and whitespace tweaks * build: makefile whitespace tweaks * build: really reset return value before completions check * build: simplify symlink setup * tar: add missing bsdtar, gtar, and star symlinks * README: use light gray badges for unknown versions * README: link to cygwin package [ Wolf ] * ri: hush some warnings [ andreabravetti ] * unrar: complete on *.exe (#337) [ ezr ] * chromium-browser: Add support for .mhtml files [ jerkey ] * screen: complete first arg with serial devices [ marxin ] * gcc: support new --completion option (#222) [ pcc ] * unzip, zipinfo: complete *.aab (#340) [ versat ] * cppcheck: Remove deprecated option 'posix' for '--std=' -- Ville Skyttä Thu, 05 Dec 2019 17:04:26 +0200 bash-completion (2.9) [ Antonio Terceiro ] * dpkg-source: Add --before-build --after-build --commit, and --print-format [ Gabriel F. T. Gomes ] * xm: Deprecate completion for obsolete command (#284) * _filedir_xspec: Fallback to suggesting all files if requested (#260) * tar: Support completions for zstd compression extensions (#255) * dpkg: List held packages (#250) * cvs: Add completion for the log command [ Guillaume Mella ] * unzip, zipinfo: Associate with *.xar (eXist-db application package) (#257) [ Igor Susman ] * mplayer: Associate with *.w64 [ Jaak Ristioja ] * okular: Added support for xz-compressed files. [ John Swinbank ] * _xspecs: Declare as global on bash >= 4.2 [ Kevin Locke ] * test: Increase expect pty to 160 columns * test: avoid interrupting magic mark output [ Per Lundberg ] * 7z: add .msi support [ Peter Wu ] * tshark: speed up tshark -O completion * tshark: fix completion of -Xlua_script option * tshark: Support preferences (-o) completion with memoization * test: fix misinterpretation of completion output in tests * test: fix flake8 complaints about unused imports * conftest: fix RemovedInPytest4Warning due to use of node.get_marker * chromium-browser: consider chrome and chromium as aliases * tshark: support .gz and .cap files for -r expansion * tshark: prevent a single-character file from breaking -G completion * tshark: update -T and -t completions [ Russell Davis ] * man: Fix completion when failglob option is enabled (#225) [ Timo Taipalus ] * mplayer: Add common supported module music formats [ Tomasz N ] * _longopt: pick first long option on a line, not last [ Ville Skyttä ] * *: avoid shellcheck SC1007 and SC1010 * 7z: add some TODO notes on parsing "i" output for extensions * ssh: make -o protocol completion less hardcoded * ssh: make option completion case insensitive * ssh: fix suboption completion with combined -*o * xvnc4viewer: code cleanups * doc/testing: remove lots of legacy info, add some new * CONTRIBUTING: add upstream vs bash-completion considerations * CONTRIBUTING: note runLint and run-shellcheck * __parse_options, 7z: avoid herestrings * arp, ccze, ifstat, inotifywait, makepkg: invoke sed with "command" * shellcheck: disable bunch of warnings when in "-S warning" mode * test: move default shell option from run-shellcheck to .shellcheckrc * test: make runLint search for herestrings * tar, valgrind: avoid some herestrings * travis: run shellcheck on bash_completion.sh.in too * travis: fail on shellcheck errors * make: quote eval array definitions to work around shellcheck SC1036 bug * test: add make -C test case * *: shellcheck error fixes * _included_ssh_config_files: store found included files in an array * _included_ssh_config_files: doc grammar fixes * test: add invoke-rc.d test case for not repeating already given options * ebtables: improve existing table arg parsing * test: add script to run shellcheck, run it in Travis, allowing failure for now * iptables: improve existing table arg parsing * test: shorten long gdb test core file name so tar doesn't croak on it * AUTHORS: remove unrelated project association from my entry * apt-get: protect source against regex specials * mypy, mysql, xmms: don't complete unknown split long option args * synclient: remove unused local variable "split" * test: adjust _get_comp_words_by_ref test to changed error output * apt-cache: protect showsrc against regex specials * test: improve tshark -O arg completion test * tshark: ignore stderr when parsing -G, -L, and -h output * *: error output consistency, use bash_completion prefix * _upvar: deprecate in favor of _upvars * *: add missing "ex: filetype=sh" * phing: fix getting just a tab for options on CentOS 6 * phing: don't complete -l with files * various: apply file vs dir special cases also when invoked with full path * *: whitespace tweaks * ssh: don't offer protocol v1 specific options if it's not supported * test: add some gdb non-core files * _parse_help: look for long options somewhat more eagerly * gdb: relax core filename pattern * test/tools: fix exit status incrementation * *: arithmetic expression related cleanups * test/tools: run all tools, don't stop at first failure * test: check for perltidy errors and warnings * *: format Perl code with perltidy * *: format Python code with black * .dir-locals.el: use flycheck-sh-bash-args * valgrind: look up tools from libexec dirs too * *: make _parse_usage fallbacks more concise * svn, svk, wget: use _iconv_charsets * *: spelling fixes * msynctool: code cleanups * *: remove whitespace after redirections * *: remove spaces immediately within $() * bzip2: recognize *.tbz2 as bzipped * modprobe: module parameter boolean values * ping, tracepath: parse options primarily with _parse_help * ulimit: new completion * shellcheck: new completion * dnssec-keygen: new completion * modprobe: append = to module parameter completions * test: include test_unit_longopt.py in dist * test: add some _longopt unit tests * _longopt: simplify regex, use printf instead of echo, drop unnecessary sort * nsupdate: new completion * _longopt: don't complete --no-* with file/dirname arg * copyright: add 2019 * pytest: complete --pythonwarnings/-W arg * python: make warning action list reusable * test: use pytest-xdist * extra: add git pre-push hook for triggering Docker Hub builds * post-commit: trigger on test/requirements.txt too * pytest: complete pytest-xdist --dist, --numprocesses, and --rsyncdir * test: remove no longer needed completion/*.exp * xfreerdp: reinstate support for old versions with dash option syntax * test: rewrite "generate" in Python, fix trailing backslash in EXTRA_DIST * test: sort t/Makefile.am EXTRA_DIST in C locale * ssh: support RemoteCommand and SyslogFacility options * test: Expect failure for chown all users test as non-root * test: Fix declare test case with bash 5.0 * adb: Deprecate in favor of one shipped with the Android SDK * xfreerdp: Update for more modern xfreerdp * jsonschema: New completion * test: Remove unnecessary ri xfail * test: Clean up man tmp dir * .gitignore: Add .python-version (for pyenv) * test: Remove unnecessary autouse=True from fixtures * ifstat: Make work with iproute2 version * iperf, iperf3: Add some option arg (non-)completions * test: Fix test generation wrt results checking improvements * ifstat: New completion * __parse_options: Avoid non-zero exit status * test: Refactor/improve completion results checking * test: Match Python's default locale unaware sort in bash setup * test: Rename completion.line to .output * test: Add man failglob test case * test: Add pre_cmds support for completion fixture * inotifywatch: New completion, common with inotifywait * inotifywait: Fix -e completion with BSD sed * inotifywait: Avoid some false positive event names * test: extend _ip_addresses unit tests some * _ip_addresses: Avoid completing ipv4 ones with -6 * inotifywait: New completion * test: Mark some xfails based on if in docker instead of in CI * test: Skip ifup options test if it doesn't grok --help, not in CI * test: Clean up and docker-ignore __pycache__ dirs * build: Include test/t in dist tarball * test/t: Avoid trailing backslash in Makefile.am's to appease automake * test: Remove some no longer used old test suite code * _xspecs: Simplify bash version check * chmod: Fix "-" completion * sysctl: Treat -f as alias for -p/--load * .gitignore: Add pytestdebug.log * chmod: Fix file completion after modes starting with a dash * _count_args: Add 3rd arg for treating option-like things as args * test: Fix _count_args test_7 to test intended case * pydocstyle: New completion * Travis: Remove unused PYTEST env var * doc: Note email issues gateway * tcpdump: Various option and their arg completion updates * test: Fix arp CI (non)expectations, remove redundant test case * test: Be more consistent with "CI" env var examination and xfails * arp: New completion, somewhat incomplete * test: Expect failure in gkrellm if there's no X display * doc: Update docs on generating simple tests * doc: Some test dependency doc updates * test: Add requirements.txt for installing dependencies * grpck: Parse options with _parse_help, falling back to _parse_usage * grpck: Add --root/-R arg completion * test suite: Ignore _scp_path_esc in env for ssh-copy-id * ssh-copy-id: Add -i and -o arg (non-)completions * tar: Clean up some redundant code * cancel: Split long line * cancel: Add some option arg (non-)completions * locale-gen: New completion * makepkg: Don't apply to other than Slackware makepkg * test: Allow unknowns options in makepkg option completion * makepkg: Use _parse_help instead of hardcoding option list * mypy: New completion * op: New completion * hunspell: New completion * xmllint: Improve --encode, --pretty, and --xpath arg (non-)completions * test: Remove leftover completion/ls.exp * gcc: Add g++, gcc, gccgo, and gfortran *-[568] aliases * perlcritic: New completion * gnome-screenshot: New completion * isort: New completion * freeciv: Option and arg completion updates * freeciv-gtk2: Install for freeciv and freeciv-gtk3, rename to freeciv * mplayer etc: Complete on *.crdownload partial downloads in addition to *.part * chromium-browser, google-chrome*: New non-xspec completion * firefox etc: New non-xspec completion * Merge branch 'master' into wip-pexpect * nc: Add some more option (non-)completions * test: Mark MANPATH without leading/trailing colons test an xfail on CI CentOS 6 * test: Remove kill, killall remnants * test: Make case specific env entries shell code, not escaped * Merge branch 'master' into wip-pexpect * unzip, zipinfo: Associate with *.whl * __load_completion: Avoid unnecessary lookups from nonexistent dirs * Merge branch 'master' into wip-pexpect * gcc: Add g++, gcc, gccgo, and gfortran *-7 aliases * test: Use test_unit_* prefix for unit tests, to avoid name clashes * test: Support setting cmd=None to require no command, for unit tests * test: Misc test suite fixes * test: Fix jq and scrub skipif commands * test: Don't require complete marker on test methods * test: Add support for per-test env modifications * test: Use more conventional Python file names for tests * test: Sort completion results in Python for ease of use in Python tests * test: Allow __load_completion to fail * test: chdir to fixtures dir in Python as well * test: Mark xfreerdp as expected failure for now * test: Replace + with Plus in test class names * test: Implement load_completion_for using assert_bash_exec * test: Add ability to selectively ignore diffs in environment * test: Fixture reorganization * test: Pass through $HOME and $DISPLAY to test bash * test: Log pexpect interaction to $BASHCOMP_TEST_LOGFILE if set * test: Rename BASHCOMP_* test env variables to BASHCOMP_TEST_* * test: Add python3 test case * test: Add class level skipif based on bash exec result * test: Include command name in test class name, use numbered test method names * test: Fix some regressions introduced in recent test conversions * test: Add support for running test case in a specified dir * test: Add support for skipping individual tests based on shell command status * test: Make test base work with Python 3.3+ * test: Add some iperf, iperf3 and xmodmap test cases * xmodmap: Use _parse_help instead of hardcoded option list * iperf: Improve client/server specific option parsing * iperf: Install for iperf3 too * iperf: Add g/G to --format completions * xmodmap: Use _parse_help instead of hardcoded option list * iperf: Improve client/server specific option parsing * iperf: Install for iperf3 too * iperf: Add g/G to --format completions * test: Use /root/.local/bin/pytest on ubuntu14 by default * test: Add generated test files to t/Makefile.am automatically * test: Add new test files to EXTRA_DIST * test: Use /root/.local/bin/pytest on centos6 by default * test: Use make pytest docker executable env-configurable, default pytest-3 * test: Update generate for pytest+pexpect * test: Convert majority of test cases to pytest+pexpect * tox: Fall back to --listenvs for env list if --listenvs-all fails * git-post-commit: Avoid some error trash when HEAD is not a symbolic ref * test: Add pylint-3 test case * test: Limit number of pylint option completions * pydoc, pylint: Determine python2/3 based on command basename only * pylint: Bring -f/--format arg completion up to date with pylint 1.9.2 * pylint: Implement comma separated --confidence arg completion * test: Fix buffer size option listing in run --help * test: Bump expect's match_max to 20000 by default * test: Run docker tests with --verbose * _services: Try systemctl list-unit-files if systemctl list-units fails * extra/git-post-commit.sh: Add git post-commit Docker Hub trigger hook * gpgv: New completion * pydoc, pylint: Skip module completion if current looks like a path * travis: Run ubuntu14/bsd with no network * travis: Split long lines in script * test: Limit number of wget option completions to avoid unresolved result * test: Mark flake8 untested if it seems broken * pylint: Option arg completion improvements * tshark: Get available interfaces from -D output * ngrep: Add "any" to -d arg completions * fio: New completion * test: Fix iwspy test case * uscan: Use _parse_help instead of hardcoded option list * urlsnarf: Add -p arg completion * tracepath: Add -m and -p arg non-completions * tracepath: Actually use our separate completion instead of _known_hosts * test: Skip jq option completion test if its --help doesn't list them * xdg-settings: Make help parsing work on BSD * test: Support running with local BSD binaries, do it w/ ubuntu14 in CI * jq, sqlite3: Protect against negative array subscripts * sudo: Improve long option arg handling * sysctl: Recognize --pattern/-r and --load options * test: Add sysctl option parsing test case * sudo: Parse options from help/usage output, add some long option support * strace: Use _parse_help instead of hardcoded option list * sshow: Add -p arg completion * sqlite3: Add some option arg (non-)completions * tune2fs: Update -o/-O argument lists * jq: New completion * reportbug: Run _parse_help and apt-cache more selectively * querybts: Use _parse_help, not hardcoded option list, misc improvements * pyvenv: Support versioned 3.6-3.8 executables * passwd: Try _parse_help before _parse_usage to parse options * profile.d: Avoid tested variable values being confused as [ ] operators * cryptsetup: Add some option arg (non-)completions * cryptsetup, nc, sh: Skip option args when counting arguments * modinfo: Fall back to _parse_usage if _parse_help yields no results * mysql, mysqladmin: Complete --ssl-{ca,cert,key} option arg * mysqladmin: Reuse --default-character-set completion from mysql * modinfo: Use _parse_help instead of hardcoded option list * minicom: Use _parse_help instead of hardcoded option list * mplayer: Associate with *.S[3T]M, *.med, *.MED * completions/Makefile.am: Use install-data-hook, not install-data- local * ifup etc: Add option and option argument completion * _count_args: Add support for not counting specified option args * ifquery: New ifup alias completion * ngrep, tshark: Complete on *.pcapng too * rpm: Complete --licensefiles with -q * pytest: Rename from py.test to follow upstream recommended name * README: Add instructions for overriding completions system wide * README: Note $BASH_COMPLETION_USER_DIR * test: Mark psql etc test cases untested if --help doesn't work * aclocal, automake: Support versioned 1.16 executables * __load_completion: Avoid bad array subscript on "commands" ending with slash * lzma: Use _parse_help instead of hardcoded option list * test: Run perlcritic and flake8 on perl and python helpers in Travis * build: Improve cleanup of test/log and test/tmp dirs * pkg-config: Complete on *.pc files * build: Use AC_PROG_SED to locate sed * build: Do cmake, pc, and profile variable replacements in Makefile * README: Add Q/A on overriding a completion, modernize local install answer * json_xs: New completion * chmod: New completion * iperf, nc: Include IPv6 addresses in bind address completions * links: Major rework, parse options from --help, add option arg completion * _ip_addresses: Add option to complete all/v4/v6 addresses, add unit test * wget: Remove nonexistent arg to _ip_addresses * _filedir: Drop unnecessary evals * iconv: Split charset completion to _iconv_charsets, add test case * links: Install completion for links2 too * xgamma: Comment spelling fix * lftp: handle -s * test: Skip scrub -p test when its --help doesn't list available patterns * ecryptfs-migrate-home: New completion * scrub: New completion * ether-wake: Install for etherwake as well * *: Support completing arg of last bundled short option * dselect: Parse options with _parse_help * dhclient: Add some option arg (non-)completions * dhclient: Parse options with _parse_usage * chage, chpasswd: Add -R/--root arg completion * reportbug: Add bunch of option arg (non-)completions * .dir-locals.el: Set -O extglob for flycheck bash checks * mount, umount: Deprecate on Linux in favor of util-linux >= 2.28 ones * _known_hosts_real: Reimplement known hosts file parsing in pure bash * test: Add comment line to fixtures/_known_hosts_real/known_hosts * ssh: Complete all *File option args with _filedir * README: Point Debian and openSUSE badges towards unstable and Tumbleweed * README: Link to various distro packages * apt-get: Add -h/-v/-o non-completions * apt-get: Sync option list with apt 1.5.1 * apt-get: Simplify -t and friends completion, support Ubuntu * apt-get: Add indextargets to list of suggested commands * apt-get: Complete install package=versions * ssh: Sync config option lists with OpenSSH 7.5p1, add some value completions * ssh: Sync query type list with OpenSSH 7.5p1 * ssh: Order various switch cases closer to alphabetical * completions/Makefile: Fix check-local in VPATH builds [ dmerge ] * _filedir: Refactor to remove heredoc-dependent loop [ marxin ] * gccgo: Add as a GCC completion target (#227) [ ovf ] * xrandr: match the output name exactly for --mode -- Ville Skyttä Sat, 27 Apr 2019 11:50:12 +0300 bash-completion (2.8) [ Andrea Dari ] * dpkg: Add -V/--verify arg completion [ Ben Wiederhake ] * Add support for .lz4 extension to file-roller (#158) [ Eric A. Zarko ] * unzip, zipinfo: Associate *.gar (#165) [ Gabriel F. T. Gomes ] * openssl: Add completion for the genpkey, pkey, pkeyparam, and pkeyutl commands [ Gonzalo Tornaría ] * test: run bash with --norc to avoid system bashrc [ Gábor Bernát ] * tox: New completion (#163) [ Halt ] * mplayer: Disable user config when parsing options [ Henry-Joseph Audéoud ] * ebtables: new completion (#150) [ Jakub Jelen ] * ssh,ssh-add,ssh-keygen: Complete pkcs11 options with *.so [ Kevin Pulo ] * mkdir: Complete on files in addition to dirs [ Luca Capello ] * dpkg-query: Fix -W/--show completion [ Mark Friedenbach ] * Add support for .lzo extension (--lzop) to tar (#155) [ Martin d'Anjou ] * java: Complete *.war [ Mateusz Piotrowski ] * kldunload: Increase robustness of compgen filters (#185) * kldunload: Show modules with digits [ Michał Górny ] * lftp: Support ~/.local/... bookmark location (#144) * test suite: Support overriding default match buffer size (#141) [ Pawel ] * man: Don't use $MANPATH directly (#161) [ Uwe Storbeck ] * dpkg: Complete --vextract on deb files * dpkg: Fix man page section in comment [ Ville Skyttä ] * make-changelog.py: Use python3 * test: Fix getting username in non-login shells * test/unit: Whitespace tweaks * info, man, rsync: Defer _expand invocation * _expand: Reuse __expand_tilde_by_ref and _tilde logic, clean up * test: Add some _expand unit tests * bzip2, gzip, and other compressors: Use _tilde instead of _expand * test: Add assert_complete_homedir, use in dpkg and ls * dd, find, gcc: Remove unnecessary tilde expansion * dd: Omit space only when offering one completion ending with = * __expand_tilde_by_ref: Eval tilde expansion only, simplify * Bump copyright years to -2018 * mkdir: Complete files without appending space * __load_completion: Load "xspec" completions dynamically too * __load_completion: Code cleanup * _available_interfaces: Get rid of eval * make: Pass script to sed as parameter instead of using process substitution * ccze: New completion * *: Comma separated opt arg completion improvements * test suite: Some more mplayer and mencoder coverage * tox: Complete comma separated -e arguments * xdg-mime,xdg-settings: Fix inclusion in tarball * geoiplookup: New completion * ping*,ssh,scp,sftp,tracepath6: Filter IPv4/IPv6 literal addresses * _known_hosts_real: Add option to filter IPv4 and IPv6 addresses * radvdump: New completion * lsscsi: New completion * python: Support completing dotted module hierarchies * test/docker: Tweak work dir, add bash as default cmd * test: Try to skip postconf variable test on broken postfix configs altogether * Revert "travis: Don't build local docker images, use vskytta/bash- completion ones" * test: Add "postconf -" test case * test: Work around broken centos/fedora postfix config in non-IPv6 setup * travis: Don't build local docker images, use vskytta/bash- completion ones * pycodestyle: New completion * flake8: Various option arg completion improvements * perltidy: New completion * lowriter,localc etc: Use corresponding oo* completions * cryptsetup: Update option lists * pv: New completion * getconf: New completion * nproc: New completion * _known_hosts_real: Document -a better * ssh: Add -J/ProxyJump completion * ssh: Declare $prefix closer to use * test: Ignore duplicates in find_unique_completion_pair list * test: dpkg,ls,_tilde: Skip gracefully if no uniq user for completion is found * xdg-mime: New completion * ssh-keygen: Add -E arg completion * reportbug: Don't hardcode option lists, split option args at = * reportbug: Add -A/--attach arg completion * apt-get: Complete *.deb on install if argument contains a slash * ri: Fix integrated ri 1.8 class completion * test: Add files to test older ri with * Whitespace * test: Remove things moved to library.exp from bashrc * test: Add some comments regarding bash init in library.exp * xdg-settings: New completion * tox: Remove spurious executable bits * tox: Include ALL in -e completions * tox: Avoid stderr spewage when -e invoked without tox.ini * pylint: Invoke python3 to search for modules if command contains 3 * pylint: Install for pylint-2 and pylint-3 too * test suite: Add bunch of man and MANPATH test cases * test suite: Make man test subject names less generic * test suite: man cleanup * rfkill: Rename to _rfkill to avoid conflict with util-linux >= 2.31 * test: Use prebuilt docker hub bash-completion images * README.md: Whitespace cleanup * iptables: Use invoked command instead of hardcoded "iptables" * iptables: Avoid stderr trashing when invoked as non-root * iptables: Parse options from --help output * vpnc: Add some option argument (non)completions * vpnc: Improve config completions * test suite: Drop no longer needed fedoradev /usr/bin/which workaround * test suite: Skip fedoradev GPG checks at least for now * lspci: New completion * lsusb: New completion * oggdec: New completion * alias: Fix completion followed by = (#146) * *: Protect shopt reset from non-default $IFS * test suite: Limit amount of info and pinfo test output * test suite: Add info and pinfo option test cases * test suite: Add basic hid2hci and munin-node-configure test cases * aptitude: Add keep to commands list (Debian: #867587) * *: Protect _known_hosts_real from user input treated as options * curl: Fix -x etc option argument hostname completion * groupdel: Parse and handle long options * aptitude-curses: Use aptitude completion * test suite: Install aptitude in ubuntu14 container * test suite: Enable wine in ubuntu14 * xm: Don't leak args and commands environment variables * uscan: Don't leak cword and words environment variables * test suite: Add bunch of missing basic test cases * ktutil: Don't leak i and command environment variables * test suite: Limit amount of output from process name completion * test suite: Limit number of screen -T completion matches [ j^ ] * xine etc, ogg123, mplayer -audiofile: Associate with *.oga -- Ville Skyttä Sat, 17 Mar 2018 10:30:07 +0200 bash-completion (2.7) [ Eli Young ] * Makefile: update default compatdir (#132) [ Ville Skyttä ] * Make user completion file configurable, disable in tests * test suite: Generalize xspec completion install check * pyflakes: Remove redundant xspec completion * test suite: Fix __expand_tilde_by_ref test expectation output * pdfunite: New *.pdf completion -- Ville Skyttä Sat, 01 Jul 2017 14:08:43 +0300 bash-completion (2.6) [ Björn Kautler ] * Add missing sidedoor to .gitignore (#114) [ Ville Skyttä ] * test suite: Mark expected centos6 CI _filedir failures as such * Expose version in BASH_COMPLETION_VERSINFO, use it in profile.d script * test suite: Skip an expected make test case failure in centos6 CI * test suite: Fix ifdown and ifup CI test skipping * test suite: Ignore env var pulled in by use of scp in tests * test suite: If colon trim doesn't do anything, trim as usual * tar: Comment spelling fixes * test suite: Mark dpkg -L test case untested if no packages installed * test suite: Cosmetic tweaks * dpkg: Fix dpkg -i home dir completion * test suite: Improve ls home dir test descriptions * python: Split module completion to separate helper * micropython: New completion, aliased from python * test suite: Add Python module completion test case * python: Fix traceback avoidance on module completion error * openssl: Parse available digests from dgst -h * openssl: Add sha2 commands * gm: New completion, commands only for now * (test suite): Test screen -T completions * (test suite): Set TERM to dumb, not dummy * Revert "(test suite): Fix alias and cd cursor position tests" * mplayer: Remove duplicate *.m4a and *.m4v associations * mplayer, xine, etc: Associate *.mp4a and *.mp4v * xine etc: Fix *.m4a association * bind: Add option and argument (non-)completions * _user_at_host: Set nospace only when completing username part * _user_at_host: Append @ suffix to username part completions * man: Don't check OSTYPE or GNU userland, just enable on all systems * (test suite): Set dcop result to untested if dcop server is not running * (test suite): Don't insist on loading all completions dynamically * _configured_interfaces: Parse from /etc/network/interfaces.d/* on Debian * py.test: New completion * oowriter: Associate with *.pdf * Don't define BASH_COMPLETION_COMPAT_DIR * ri: Add option and arg completions * (test suite): Add our own dummy ri test fixture * (test suite): Info test needs docs, don't exclude from CentOS * (test suite): Fix CentOS 6 tcllib setup * (test suite): Simplify renice test, fix with only one completion * (test suite): Don't assume configured interfaces in CI setups * Don't offer * as configured interface when there are none * (test suite): Add basic CentOS 6 container for bash 4.1 coverage * (test suite): Ignore runtime loaded env function changes * (test suite): Add mailman bin dir to PATH for arch test * arch: Parse options from --help * (test suite): Load tested completions dynamically * (test suite): Accept non-whitespace single word in assert_complete_any * (test suite): Avoid interference from user and system dirs (#87) * (test suite): Install some things N/A in ubuntu14 to fedoradev * (test suite): Add unrar to ubuntu14 container * (test suite): Fix alias and cd cursor position tests * (test suite): Add basic alpine test case * alpine: Parse opts from -h output, add some opt arg completions * (test suite): Install jshint globally in ubuntu14 * (test suite): Add mailman bin dir to PATH for some mailman tools * (test suite): Install jshint to ubuntu14 container with npm * unshunt: Parse options from --help * (test suite): Test lsof on ubuntu14 * (test suite): Add basic hping3 test case * (test suite): Add our ./configure to PATH to test it, test opts * (test suite): Add bunch of packages to ubuntu14 container * (test suite): Ensure /usr/(local/)games is in $PATH * (test suite): Fix perl -d* test cases with no Devel::* installed * (test suite): curl has lots of options, add more test prefix * (test suite): Fix tar test case for ones having --owner-map * (test suite): Unsupport various kill, renice cases if ps is N/A * (test suite): Make chkconfig test behave better in container * (test suite): Don't assume mounted filesystems in quota* tests * newlist: Parse options from --help, add some arg non-completions * (test suite): Delete trailing whitespace * (test suite): Don't assume lists set up in newlist test cases * (docker): Pull in missing fedoradev xvfb-run which dependency * mr: Avoid stderr trash and test suite failure if man is N/A * (test suite): Fix mmsitepass completion test * tshark -G: Avoid stderr noise when running as superuser * (docker): Run completion tests with xvfb-run, e.g. for gkrellm * ssh-keygen: Make option parsing work with OpenSSH < 7 * synclient, udevadm: Avoid use of posix char classes for awk * test suite: Add WIP Fedora dev config * Travis: Switch tests to docker, update to Ubuntu 14 * xv: Associate with *.j2c, *.j2k, *.jp2, *.jpf, and *.jpg2 (Debian: #859774) * eog: Associate with *.j2c and *.jpg2 * Bump copyright years * xine etc: Associate uppercase *.WM[AV] * mplayer: Associate *.weba (#112) * xine etc: Associate *.webm and *.weba (#112) -- Ville Skyttä Tue, 27 Jun 2017 12:29:33 +0300 bash-completion (2.5) [ BartDeWaal ] * Support for python gui source files (#91) [ Ben Webber ] * mr: New completion [ Christian Kujau ] * ssh-keygen: support ed25519 keys (#79) [ Dara Adib ] * Add sidedoor to _ssh() completion (#106) [ George Kola ] * .ipa is just a zip file and we should let unzip handle it (#71) [ Miroslav Šustek ] * ant: parse targets in imported buildfiles (#84) [ Reuben Thomas ] * Add more tests for ccache * ccache: fix completing compiler's flags [ Ville Skyttä ] * test suite: Add java/javac non-completion fixture * javac: Complete -cp like -classpath * travis: Skip bluez and nis for now due to post-install script issues * test/config/*: Delete trailing whitespace * (test suite): Avoid loading user's ~/.bash_completion, fixes #87 * ip: Recognize a as alias for address and l for link * ip: Recognize address in addition to addr * mr: Disable "clean" test case, command N/A before mr 1.20141023 * ssh-keygen: Parse switches with _parse_usage, not _parse_help * mplayer: Associate with *.mjpg, *.mjpeg (Debian: #837779) * dd: Sync completions with coreutils 8.24 * travis: Add mr * perl: Remove full path to cat in PERLDOC_PAGER call * deja-dup: New completion * CONTRIBUTING: Reorder sections * *: Move indentation settings to .editorconfig * make: Declare _make_target_extract_script like other functions * Travis: zopfli is AWOL? * *: Whitespace fixes [ Zearin ] * Minor edits to README.md (mostly formatting) (#110) [ l3nticular ] * Fix bug in 'make' completion when using BSD sed (#108) [ osu ] * Add support for Include in ssh config (#70) (#80) -- Ville Skyttä Sat, 04 Feb 2017 18:07:27 +0200 bash-completion (2.4) [ Arash Esbati ] * xetex, xelatex, luatex, lualatex: Associate with tex files [ Gene Pavlovsky ] * Use shell globbing instead of ls to source files in compat dir [ Grisha Levit ] * Support completing array variables and expansions * Add tests for declare/typeset * Better handling of typeset/declare [ Kylie McClain ] * tar: silence --version's stderr output [ Paul M. Lambert ] * Support pod document files for perldoc (#39) [ Richard Alpe ] * tipc: fix missing last char in link name completion * tipc: handle complete words without trailing space * tipc: suppress tipc error messages * tipc: use double brackets in if conditions * tipc: make loop variables local * tipc: remove unnecessary return values * tipc: readd call to complete command * tipc: use cur variable for flag completion * tipc: add command prefix to link sed * tipc: remove unnecessary function _tipc_get_val() * tipc: use bash here string instead of echo * tipc: merge functions into main * tipc: add test framework * tipc: add tipc completions [ Ville Skyttä ] * Release 2.4 * rpm: Offer --filetriggers with -q * javadoc: Add bunch of option arg (non)completions * lrzip: Add -m arg noncompletion * pkg-get: Don't use hyphens in function names * jarsigner: Add some option arg (non)completions * pkg-get,pkgrm: Drop unnecessary _have calls * *: Trivial cleanups * *: Remove redundant return 0's * pypy*: Add basic --jit arg completion * pypy3: Alias to python * hcitool,svcadm,tar: Spelling fixes * Travis: Install more packages for more test coverage * (test suite): Pass assert_complete_any for exact/only given arg completed * tipc: Invoke ls with "command" * tipc: Indentation fix * (test suite): Fix fallout from fec077d555f112b9f455c45860f90a3b47392fcf * (test suite): Remove Bash::Completion.3pm.gz from git, create on the fly * (test suite): Remove test/fixtures/_filedir/a"b from git, create on the fly * CONTRIBUTING: Note patch preferences if not using GitHub pull requests * python: Support -Q and -W arg completion without space * apache2ctl, aspell, make: Don't hardcode completion generator command * mysql: Avoid --default-character-set error with failglob, fixes #46 * test suite: Add perldoc module+pod completion test case * perl: Remove some duplicated code * pushd: Use _cd completion for CDPATH support, closes #38 * test suite: Add basic pushd test case * abook: Parse long options from command including full path * pyvenv: New completion * chroot: New (generic long options) completion, see #38 * Travis: First steps toward testing with OS X * test suite: Add bashcomp_bash env var for better control on tested bash * aptitude: List packages using _apt_cache_packages, fixes #33 * vncviewer: Cleanup shopt use, drop an eval * make: Avoid a grep * rpm: Fix --whatenhances arg completion * aspell, minicom, mysql: Replace use of ls with printf * cppcheck: Complete filenames too for --platform * man: Prioritize MANPATH, simplify, add fallback e.g. for busybox, fixes #28 * aclocal: Install completion for 1.14 and 1.15, fixes #25 * mpv: Don't install symlink for it, fixes #24 * test suite: Add function and declare test cases * CONTRIBUTING: Highlight request for test cases [ Wayne Scott ] * The BitKeeper completion used the wrong set of commands -- Ville Skyttä Fri, 12 Aug 2016 22:43:27 +0300 bash-completion (2.3) [ Daniel Milde ] * Completion for python zip archives [ Liuhua Wang ] * lvm: pvcreate should be able to use all block devcices * lvm: fix all commands that should get all PVs [ Ville Skyttä ] * Release 2.3 * make-changelog: Don't output "Merge pull request" entries * make: Use <<< instead of printf + pipe * gnokii: Use <<< instead of echo + pipe * *: Use [:blank:] instead of $'\t ' tricks where appropriate, fixes #19 * test suite: Fix abook test case * test suite: Don't insist on property completions if synclient -l fails * test suite: Tolerate "See 'man feh'" feh --help output * test suite: Fix tar failure caused by previous tar change * tar: Detect GNU/other from --version only once per session * tar: Remove unused variable * tar: Fix GNU tar help output parsing regex, fixes #15 * test suite: Add tar xvf filename test case * tar: Don't write to /tmp/jetel * python: Simplify code * python: Complete all files also after -m * python: Don't offer options after -c * python: Complete all files only if -c is before current word * test suite: Add some python test cases * unzip, zipinfo: Complete on *.pyz * travis: configure and run completions syntax check * make check: Test syntax of all completion files * CONTRIBUTING.md: Ask for test cases -- Ville Skyttä Mon, 28 Mar 2016 18:32:47 +0300 bash-completion (2.2) [ Barry Warsaw ] * _init_completion: Handle cword < 0 (LP: #1289597) [ Damien Nadé ] * (testsuite) Use 'set' command posix behaviour when saving env (Alioth: #314720) * Added test/site.{bak,exp} to .gitignore * _parse_help: Fix failglob failures (Alioth: #314707) * _lvm: using a single-pattern case and invoking function according to words[1] * lvm: _lvm_count_args parameter must be quoted in order to failglob not to complain * gendiff: Quoting suffix pattern to avoid triggering failglob [ Dams Nadé ] * ssh-add, ssh-keygen: -? needs to be quoted under failglob (Alioth: #314709) * Quote unset array element to avoid globbing interference (Alioth: #314708) [ David Paleino ] * Refactor bts and uscan, since they use common functions * uscan: New completion, thanks to Federico Ceratto * bts: New completion, thanks to Federico Ceratto. [ Guillaume Rousse ] * complete on freerdp-specific known hosts list * nmcli completion was integrated upstream [ Igor Murzov ] * isql: Fix failglob failure * ssh-add, ssh-keygen: -? needs to be quoted under failglob (take 2) (Alioth: #314709) * (testsuite): move testing of _linux_fstab() to umount.exp * umount: Fix mount points escaping/unescaping with Bash-4.3 * slapt-src: Handle --config=FILE option properly * sbopkg, slapt-{get,src}: expand tilde in config file name * slapt-{get,src}: Fix issue with sed not being able to handle some characters * slapt-src: split options from their arguments * Quote _filedir arguments when appropriate to prevent failglob failures * psql: Tell psql to not load .psqlrc as it may change output format (Alioth: #314636) * testsuite: Add basic tests for portsnap and freebsd-update * mplayer: -dvd-devices takes dvd devices, dirs and .iso files as argument * 7z: Improve completion * f77, f95: Use the same completion as for g77, g95 if they are links to gfortran * aptitude: safe-upgrade accepts package name as parameters (Alioth: #313638, Debian: 673235) * _longopt: Run commands in C locale. * make: Use only posix basic regexps with sed (Alioth: #314345) * cppcheck: Add new --enable option argument and --library argument completion * dpkg: Suppress unwanted error messages (Debian: #706502) * perl: -d/-dt option argument is optional (Alioth: #314242) * Add config for cmake to bash-completion. * kcov: Add new sort types, complete --replace-src-path arguments * feh: Add new sort type [ Mathieu Parent ] * Puppet: describe: update options list, accordind to 'puppet help describe' * Puppet: cert: update options list, accordind to 'puppet help cert' * Puppet: apply: update options list, accordind to 'puppet help apply' * Puppet: agent: update options list, accordind to 'puppet help agent' * Puppet: puppet parser support * Puppet: puppet -* doesn't imply 'puppet apply' * Puppet: use puppet terminology [ Matthew Gamble ] * Modify all usages of 'sed' to be run with command bash builtin * Use command built-in to run sed to avoid any custom aliases [ Matthieu Crapet ] * man: Use -w instead of --path [ Michael Gold ] * profile.d: Avoid some warnings from shells in "nounset" mode (Debian: #776160) [ Miroslav Lichvar ] * chronyc: Update help text parsing * chronyc: Add missing subcommands * chronyc: Add -6 option [ Nevo Hed ] * minicom: Recognize user ~/.minirc.* as config files [ Ondrej Oprala ] * __get_cword: avoid $index < 0 (Alioth: #315107) [ Patrick Monnerat ] * rpmbuild: Complete *.spec on --clean (RedHat: #1132959) [ Pavel Raiskup ] * tar: rework the completion completely [ Peter Cordes ] * upstart support for service completion [ Peter Dave Hello ] * freebsd-update: New completion. * portsnap: New completion. [ Peter Wu ] * modprobe: fix params with multi-line descriptions * gdb: support --args style completion (Alioth: #314664) [ Rainer Müller ] * make: Fix basic regex for portability (Alioth: #314345) [ Raphaël Droz ] * gnokii: New completion [ Rune Schjellerup Philosof (Olberd) ] * dpkg: Add support in dpkg completion for .ddeb (LP: #568404) [ Shaun McCance ] * xmllint, xmlwf, xsltproc: Complete on Mallard *.page files [ Stefano Rivera ] * pypy: New completion identical to python (Alioth: #314501) [ Thilo Six ] * Use more straightforward way to check bash version * _mac_addresses: Use explicit C locale for ifconfig (Debian: #704832). [ Tristan Wibberley ] * make: Don't pick up variables when makefile is reloaded * make: Offer hidden targets when it is clear that the user is trying to complete one of them * make: Fix detection of intermediate targets where make has changed its database whitespace * make: Add __BASH_MAKE_COMPLETION__ variable * make: completion shouldn't be confused by the output of $(info confuse: make) [ Uwe Kleine-König ] * Don't complete hostnames found after Hostname in ~/.ssh/config [ Ville Skyttä ] * Release 2.2 * README.md: Note autoreconf need only in unprepared tarball * make-changelog.py: Set myself in footer * make-changelog.py: Fix footer line output * make-changelog.py: flake8 fixes * make-changelog.py: Make work with Python 3 * README.md: More markdown tweaks * README.md: Markdown tweaks * zopflipng: New completion * README.md: Not need for autoreconf, fixes #11 * README: Expand troubleshooting section somewhat * Merge pull request #9 from shaunix/master * ssh: Extract duplicate code to _ssh_configfile * Remove various comments related to bash versions we don't support * travis: Install more packages for [xyz]* test coverage * travis: Install more packages for [stuvw]* test coverage * travis: Install more packages for [qr]* test coverage * travis: Install more packages for [op]* test coverage * travis: Install more packages for m* test coverage * travis: Install more packages for [jkl]* test coverage * Merge pull request #7 from ukleinek/master * indent: Remove generic long option completion * Update copyright year * travis: Install more packages for [hi]* test coverage * travis: Install more packages for [fg]* test coverage * mysql: Fix --default-character-set completion with mariadb * mysql, puppet: sed portability fixes * gnokii, minicom: Use grep through "command" * lint: Check for sed without "command" * Merge pull request #2 from djmattyg007/avoid_sed_alias * travis: Install more packages for [de]* test coverage * travis: Install more packages for c* test coverage * travis: Add note about (currently) N/A packages * test suite: Mark unsupported look test case as such, not unresolved * test suite: Use unsupported instead of xfail for modinfo/modprobe cases * travis: Install more packages for [0-9][ab]* test coverage * travis: Run tests with --all to get some more useful output * test suite: Fix ssh partial hostname completion test * README: Split contributing to separate CONTRIBUTING doc * README: Convert to markdown * Drop references to bash-completion-devel@lists.alioth.debian.org * build system: Switch to xz compressed tarball * aclocal, automake: Install for versioned 1.14 and 1.15 executables * Update URLs and various instructions to GitHub * README: Update POSIX spec link * travis: Avoid Travis default ri, use distro one instead * test suite: Make apt-get test less sensitive to available commands * test suite: Output tool log on failure in CI * Set up Travis * test suite: Expect failure in modinfo/modprobe if there are no modules * test suite: Fix ssh-copy-id test on old setups with no identities * cppcheck: Add native to --platform completions * ssh: Avoid completing commands before hostname * chronyc: Parse command args from help output * chronyc: Wrap long lines * Load completions also from $XDG_DATA_DIRS (RedHat: #1264094) * (testsuite) Ignore files generated by complete-ant-cmd.pl * scp, sftp: Complete -S on commands * scp, sftp: Fix querying ssh options * sftp: Add -l arg non-completion * ssh-copy-id: Offer only *.pub to -i * mpv: Remove mplayer-aliased completion * __load_completion: New function, use in _completion_loader and _xfunc * modplug*: Associate *.oct and *.okt * rpm: Add --whatenhances/recommends/suggests/supplements and --recommends/supplements completions * pgrep, pidof, pkill, pwdx, vmstat: Add support for procps-ng * pdftotext: New completion * checksec: New completion * ssh: Complete HostbasedKeyTypes,HostKeyAlgorithms,KexAlgorithms values * ssh: Query ciphers and macs from ssh before hardcoded fallback * ssh: Add -Q argument completion * sysctl: Return early on --help, --version * sysctl: Try parsing options from help before usage * Document how to avoid command_not_found_handler interference * eog: Complete on *.ppm (RedHat: #1090481) * tar: Plug $line var leak * tar: Style tweaks * (testsuite) Add required "empty" dir for tar * bsdtar, tar: Remove symlinks from git, have make create them * jshint: New completion * gnokii: Include and install it * gnokii: Fix completions of options that are prefixes for others * gnokii: Drop dead code * (testsuite): Add basic gnokii test case * gnokii: Various minor and cosmetic fixes * _filedir: Avoid some unnecessary work with -d * _filedir: Remove unused variable * _filedir: Fix overquoted argument to compgen -d (RedHat: #1171396) * 2015 * Load user completions from $BASH_COMPLETION_USER_DIR/completions * Revert "README: Don't hardcode /etc in cmake fallback dir" * README: Don't hardcode /etc in cmake fallback dir * README: Add cmake usage example * README: Add autotools and cmake tips * Drop reference to no longer used sysconf_DATA * synclient: New completion * tune2fs: Add missing return in -M arg completion * reptyr: Rename file to _reptyr to avoid conflict with upstreamed completion * cppcheck: Option argument (non-)completion update * dropuser: New completion * createuser: New completion * createdb, dropdb: Drop -o default, it does not appear to do anything good here * tshark: Simplify cut usage * mcrypt: Simplify -m arg completion * (testsuite): Add mcrypt -a and -m argument completion tests * strings: Fix -T/--target arg completion with non-English locale * chrome, firefox etc: Complete on *.pdf * ccache: Add -o/--set-config arg name completion * gphoto2: Replace tail with awk * *: Invoke command to be completed, not its basename * gphoto2: Fix split argument handing, and colon treatment in --port args * _completion_loader: Protect compgen from -* leakage (Debian: #769399) * Actually install the lz4 completion * _pnames: Add -s for producing (possibly) truncated names (RedHat: #744406) * (testsuite) Add cd in dir without subdirs or CDPATH test case * Protect various compgen invocations from -* leakage (Debian: #766163) * pigz, unpigz: Handle *.zz * _completion_loader: Set empty command to _EmptycmD_ for cross version compat * Comment update * rpmbuild: Complete *.spec on --nobuild * mplayer, *xine: Complete on *.mts (Debian: #759219) * ant: Support buildfile set in $ANT_ARGS (Alioth: #314735) * (testsuite) Add ant -f test case * ant: Don't offer more completions after options that exit * 7z, adb: Trivial cleanups * python(3): Add -X argument non-completion * xsltproc. TODO fix for previous commit * xmllint, xmlwf, xsltproc: Complete on *.dbk and *.docbook (Alioth: #314770) * xz: Complete -T/--threads argument * (testsuite) Save shell variables when saving env (Alioth: #314720) * adb: New completion * modprobe: Try parsing help before using hardcoding option list * (testsuite) Add vgcreate test case for _lvm_count_args with failglob on * _filedir_xspec: Fix with failglob on * Various mostly array element unsetting fixes under failglob * __reassemble_comp_words_by_ref: Make work with failglob on (Alioth: #312741) * _services: README in sysv init dir is not a service * mpv: New completion alias + adjustments for mplayer (Debian: #749115) * (testsuite) Add puppet subcommand option test case * puppet: Recognize some short options * puppet: Parse most subcommand options from "help subcommand" output * puppet: Exit early on -h|-V|--version in addition to --help * hostname: New completion * nslookup: complete on hosts (Alioth: #314673) * eog: Complete on *.pgm (RedHat: #1090481) * pngfix: New completion * qemu: Fix -balloon arg completion * qemu: Apply completion to qemu-kvm/-system-i386/-system-x86_64 too * xrandr: Use the invoked command internally, not hardcoded "xrandr" * xrandr: Add (some) --setprovider* arg completion support * profile.d: Don't return from a sourced script (Debian: #741657) * FAQ: Clarify that we mean the bash man page for M-/ * (testsuite) Avoid complete-ant-cmd.pl errors with our build.xml * ri: Fix class completion with ri >= 3. * ri: Fix colon handling in class completion. * flake8: New completion * pyflakes: New completion * cal,chfn,chsh,dmesg,eject,hexdump,look,newgrp,renice,runuser,su,wr ite: Deprecate on Linux in favor of util-linux ones (Debian: #737672) * testsuite: Add basic newgrp test case * testsuite: Add basic test cases for deprecated completions * _*: Install our deprecated completions too, try loading them secondarily * hwclock,ionice,rtcwake: Deprecate in favor of util-linux ones (Debian: #737672) * ssh-keygen: New completion * Bump copyright years to 2014. * jpegoptim: New completion * ip: Add some addr, addrlabel, and route arg completions * aptitude, dpkg: Replace some grep+cuts with awk * gcc, lintian, make, pkgadd, slackpkg: grep -> "command grep" (Debian: #734095) * lintian: Replace some grep+cuts with awk * (testsuite) Check for grep and ls invoked without "command", see README * lz4: New completion. * optipng: New completion. * cppcheck: Include - in --file-list completions. * (testsuite): Limit wtf completions to A* to keep expect happier. * wtf: Look for acronym db from /usr/share/games/bsdgames/acronyms too. * wtf: Don't offer -f if it was already specified. * wtf: Hush stderr when db file doesn't exist. * appdata-validate: New completion. * timeout: New completion. * _known_hosts_real: Exclude %h HostName entries (RedHat: #1015935). * cc, c++: Check path to binary when finding out if it's gcc (Alioth: #314417). * cc, c++: Install minimal completion for non-gcc ones (Alioth: #314417). * abook, kldunload: Pre-expand \t instead of relying on sed supporting it. * dict: Trivial regex cleanup. * _known_hosts_real: Pre-expand \t instead of relying on sed supporting it (Alioth: #314393). * zopfli: New completion. * bzip2, gzip, lzma: Cleanups. * Cosmetics. * export, _variables: Do TZ= completion (Redhat: #994646). * 2to3: New completion. * file-roller: Reuse unzip's xspec. * 7z: New completion. * hcitool, rfcomm, ciptool, hciconfig: Don't leak $args. * perl: Fix -dt: completion. * perl*: Fix handling of relative paths in @INC. * wget: Add --accept-regex/--reject-regex/--regex-type arg (non)completions. * wget: Drop incorrect -nv arg completion. * wget: Stop completing after --help/--version. * Clean up/compact various globs. * cvs: Fix checkout -j non-completion. * sh: Complete script arguments with all filenames (Alioth: #314226). * nmcli: Deprecate our completion, upstream has one in 0.9.8.0. * Revert "nmcli completion was integrated upstream" * Use == instead of =. * cvs rm: Don't filter existing files with -f (RedHat: #949479). * aclocal, automake: Install for *-1.10, *-1.12, and *-1.13 too. -- Ville Skyttä Thu, 03 Mar 2016 17:22:50 +0200 bash-completion (2.1) [ AllKind ] * Fix __ltrim_colon_completions() fail on parameter (\$1) containing a glob. [ Andreas Müller ] * completions/Makefile.am: symlinks depends on $(DATA) to avoid race conditions [ Christian von Roques ] * Fix __reassemble_comp_words_by_ref for $COMP_CWORD == ${#COMP_WORDS[@]} [ David Paleino ] * Fix helper script to create changelogs [ Guillaume Rousse ] * New completions: nmcli, gphoto2 * Improved completions: - dsniff: add -p option completion - dsniff: fix interface completion [ Igor Murzov ] * _command_offset: Restore compopts properly (Alioth: #313890) * _parse_help, _parse_usage: Run commands in C locale. * New completions: wget, zathura * Improved completions: - cppcheck: Add new standards to --std option. - evince: Evince supports opening .pdf.xz files (Alioth: #313739). - feh: Add new options introduced in feh-2.7. - feh: Fix list of background styles. - fusermount: Complete curlftpfs-mounts for "fusermount -u" (Debian: #685377) - kcov: Add new sort types (introduced in kcov-9). - kcov: Complete arguments of --limits option. - lvm: Fix typo in option name: s/continguous/contiguous/. - make: Do not append space if target is a filepath. - mount: Fix parsing /etc/fstab on *BSD. - mount.linux: Add some new mount options intoduced in Linux 3.5 and 3.7 - mount.linux: Add options completion for nfs and davfs. - mount.linux: Clean up mount options, remove duplicates. - mplayer: Add opus to the list of supported formats. - mplayer: Add -subcp argument completion. - opera: Handle options. - slackpkg, slapt-get: Update the list of package sets. - tar: Fix detection if the $prev is a tar file. - valgrind: Add --soname-synonyms option arguments completion. * Testsuite: - _filedir: Remove the cruft from the a\$b->h unit test (Alioth: #313480) [ Jeroen Hoek ] * Improved completions: - unzip: Add support for OpenDocument formats. [ Ken Sharp ] * Improved completions: - wine: add .msi completion [ Martin Ueding ] * Stylistic cleanup [ Tristan Wibberley ] * Improved completions: - make: incremental completion for make with compact display - make: convert make completion to use smarter parser [ Ville Skyttä ] * Avoid sourcing dirs in completion loader to avoid fd leaks (RedHat: #903540) * Ignore colormake symlink. * Line continuation, whitespace, and compgen -W ... -- "$cur" quoting cleanups. * _available_interfaces: Try with "ip link" if ifconfig is not available. * _ip_addresses: Try with "ip addr" if ifconfig is not available. * _known_hosts_real: Filter ruptime stdout error spewage (Alioth: #313893). * _mac_addresses: Try local interfaces with "ip link" if ifconfig not available. * _mac_addresses: Try ARP cache with "ip neigh" if arp is not available. * _mac_addresses: Fix with net-tools' ifconfig that outputs ether, not HWaddr. * New completions: chronyc, eject, eog, file-roller, hexdump, interdiff, lua, luac, luseradd, luserdel, lusermod, mussh, nc, ngrep, patch, pydoc, pyflakes, pylint, ss, strings, tshark, wsimport, xxd * Improved completions: - acpi, chpasswd, dmesg, gkrellm, groupmems, hwclock, lastlog, pwd, vipw: Complete options even without "-" given. - arpspoof, dsniff, ether-wake, nmap: Offer active interfaces only. - clzip, pdlzip, plzip: New lzip alias completions. - colormake: New make alias completion (LP: #743208, Debian: #682557) - cpio: Recognize pass thru when -p is bundled w/other options (RedHat: #912113). - cppcheck: Add --language/-x argument completion. - cppcheck: Complete --include= with filenames. - dnsspoof, filesnarf, macof, sshow, tcpkill, tcpnice, urlsnarf: Fix -i completion. - genisoimage: Use _parse_help instead of hardcoding options, add basic test case. - groupmems: Add -R/--root arg completion. - hexdump: Actually install for hd as well. - host: Complete with known hosts. - ip: Improve addr show and link show completions. - ip: Remove some stale TODOs. - jar: Reuse unzip's xspec (RedHat: #928253). - koji: Complete on build targets when --target is given to wait-repo. - lv{create,resize,extend}, vg{create,reduce,extend,split}: Fix variable leaks. - lvm: Add _lvm prefix to helper functions. - lvm: Take option args into account when counting args (RedHat: #860510). - lvm volumes: Complete on /dev/mapper/* (RedHat: #851787). - lzip: Do not append space after equal sign in long options. - make: Convert internal variable names to lowercase, indentation fix. - make: Don't leak $mode. - make: Make work in POSIX mode. - man: Add support for .lz man pages (RedHat: #839310). - man: Don't expand man page extensions too early. - man: Fix -P/--pager full path arg completion. - modinfo: Use ,, for lowercasing instead of tr in a subshell. - modprobe: Don't suggest installing already installed modules. - ncftp: Add option completion. - pkg-config: Try to complete --variable= if package name is already given. - pydoc: Complete on keywords and topics. - python, pydoc: Add module completion. - scp: Treat strings with slash before colon or starting with [.~] as local. - ssh: Add some -o and related arg completions. - ssh: Add -O argument completion (Debian: #680652). - tar: Don't take -I to mean bzip2. - tar: Fix completing files inside *.tlz when J is explicitly given. - tar: Simplify bzip patterns. - tar: Support *.tar.lz (Debian: #703599). - tar: Recognize taz and tb2 as compressed tarballs. - tcpdump: Fix -z full path arg completion. - unzip/zipinfo: Associate with more StarOffice extensions. - useradd, userdel, usermod: Add -R/--root arg completion. - useradd, usermod: Support comma separated -G/--groups arg completion. - useradd: Fix -k, -K, and --home-dir argument completions. - userdel: Add -h/--help non-completion. - valgrind: Fix full path arg completion. - vgcreate: Add missing symlink. - vipw: Add -R/--root arg completion. - vpnc: Add bunch of option arg (non)completions. - vpnc: Use _parse_help instead of hardcoding options, add basic test case. - wget: Use == instead of =. - wine: Fix extension glob to work on its own. - wol: Try "ip addr" before ifconfig for finding out broadcast addresses. - xrandr: Add bunch of option arg non-completions. - xrandr: Use _parse_help. - xrandr --mode: Clean up one awk call. - xrandr: Avoid --mode completion error when --output is not given. - xrandr: Don't leak $i when completing --mode. * Deprecated completions: - udevadm: one is shipped in systemd >= 196 (RedHat: #919246). * Testsuite: - Make pydoc test more likely to work with our limited expect buffer size. - Fix pwd unit test [ Yann Rouillard ] * New completions: pkgutil, pkgrm, pkgadd, pkg-get, svcadm. [ wonder.mice ] * Fixed tilde expanding in _filedir_xspec -- David Paleino Fri, 05 Apr 2013 12:05:15 +0200 bash-completion (2.0) [ Anthony Ramine ] * Properly declare 'symlinks' dependencies [ David Paleino ] * apt-get: add 'changelog' to completed commands [ Guillaume Rousse ] * Add xz compression extension for kernel modules [ Igor Murzov ] * sudo: Handle options (Alioth: #311414). * sudoedit: New completion. * _command_offset: Properly quote arguments of eval (Alioth: #313499). * mount.linux: Add some new mount options intoduced in Linux 3.0-3.2 * _modules: Ignore error messages. * modprobe, modinfo, insmod: Move modprobe and modinfo completions to their own files. * sbopkg: Use _parse_help. * sbopkg, slackpkg, slapt-{get,src}: Use shorter form of the check if file exists. * _filedir: Properly quote paths to avoid unexpected expansion. * su: Add linux-specific completion * insmod, modprobe: Don't hardcode path to modinfo (Alioth: #313569) * man: --path option is supported on Darwin (Alioth: #313584) * man: Move variable declaration to the right place. * feh: Update option argument completions. * fbi, feh: Complete more supported file formats. * fbgs: Add new options introduced in fbida-2.09. * cppcheck: Complete new --relative-paths option arguments * _expand: Suppress unwanted bash error messages (Alioth: #313497) [ Itaï BEN YAACOV ] * scp: Recognise symlinks to directories as directories (Debian: #666055). [ Jonathan Nieder ] * ri: Rename ri_get_methods helper to add leading underscore [ Ville Skyttä ] * rmmod: Add option completions. * testsuite/generate: Generate less linefeeds. * insmod: Install for insmod.static too. * mplayer: Add -monitoraspect arg completion. * mplayer: Add generic handling of options that take arguments. * testsuite: Fix spurious modinfo and modprobe test failures on systems that have /lib and /lib64 dirs. * pigz: Add -p/--processes arg completion. * testsuite: Add basic su test case. * su: Fix long option handling. * su: Add --session-command arg completion. * su: Complete -s/--shell with shells instead of all files. * lyx: Remove simple completion, upstream has more complete one (Debian: #662203) * testsuite/generate: Tweak linefeeds. * make: Add generic variable completion. * man: Recognize 3gl as man page filename extension -- at least Mesa uses it. * _realcommand: Try greadlink before readlink (Alioth: #313659). * Comment spelling fix. * qiv: Add *.svg. * xmllint: Add *.svgz. * autotools: Use MKDIR_P instead of mkdir_p (Alioth: #313671). * lbzip2: Add -n argument completion. * *_tilde*: Escape tilde in [[ $1 == \~* ]] tests (RedHat: #817902). * New completions: - acpi, hwclock, pwd, ssh-add, vmstat [ Sung Pae ] * Workaround bash bug that fails to complete <, > -- David Paleino Sun, 17 Jun 2012 20:01:36 +0200 bash-completion (1.99) * Hopefully the last 2.0 preview. [ David Paleino ] * Correctly list purgeable packages for dpkg --listfiles and dpkg --purge (Debian: #647684) * Fix bash_completion paths in README (Debian: #647941) [ Florian Hubold ] * xv: Add *.eps and *.ps to filename completions (Alioth: #313477) [ Igor Murzov ] * Add and use _sysvdirs() function that sets correct SysV init directory. * cppcheck: Add new options introduced in cppcheck-1.52. * cppcheck: Several ids separated by commas can be given for --enable=. * _known_hosts_real: Add some quotes (Alioth #313158) * Merge completions/service into the bash_completion script. * _modules: Follow symlinks in /lib/modules/$(uname -r) (Alioth: #313461) * mount, umount: Add linux-specific completions. * mount: Don't suggest short options. * pidof: Don't check OS type (Alioth #311403) * removepkg: Make it possible to complete filenames. * umount: Fix for completion of relative paths. * upgradepkg: Support oldpackage%newpackage notation. * wine: Complete all files after an .exe (Alioth #313131) * New completions: - htop, nethogs. [ Jan Kratochvil ] * rpm: Treat -r as --root (RedHat: #759224). [ Raphaël Droz ] * Added a word about compopt -o nospace in styleguide.txt. * _ip_addresses: Make it locale agnostic. [ Ville Skyttä ] * cc, c++: Install gcc completion if compiler looks like GCC (Alioth: #311408). * cppcheck: Offer header filename completions too. * curl: Add bunch of new option argument completions. * dequote: Use printf instead of echo (Alioth: #312163). * dict: Speed up word completion with common use cases and large word lists. * dmesg: Adapt to versions returning long options. * Document $split && return. * _filedir, _tilde: Ignore compopt stderr for direct invocations in unit tests. * Include doc/ in dist tarball. * _known_hosts_real: Handle more than two hostnames per known hosts line (Debian: #647352). * _known_hosts_real: Include hosts reported by ruptime (Alioth: #313308). * _known_hosts_real: Support > 1 files per *KnownHostsFile line (Debian: #650514). * lintian: Use <<< instead of echo and a pipe (Alioth: #312163). * lrzip: -T no longer takes an argument since version 0.570. * _mac_addresses: Grab addresses from FreeBSD's ifconfig -a output too. * make: Add -j/--jobs completion, complete up to number of CPUs * 2. * _muttconffiles: Use printf instead of echo (Alioth: #312163). * _parse_help, _parse_usage: If first arg is "-", read from stdin. * rpm: Add --delsign completion, don't suggest --resign (identical to --addsign). * _variables: New function split from _init_completion. * vi and friends: Fix /etc/ld.so.conf.d/* completion (Alioth: #312409). * New completions: - plague-client, desktop-file-validate, valgrind, ccache, iperf, koji, lzip, udevadm. -- David Paleino Sat, 07 Jan 2012 23:52:36 +0100 bash-completion (1.90) * bash-completion 2 preview: dynamic loading of completions. [ David Paleino ] * If _filedir 'ext' returns nothing, just fallback to generic file completion. It is optional, and off by default. Patch by Clint Byrum (Debian: #619014, LP: #533985) * Fix __get_cword_at_cursor_by_ref: check for $index when completing with a cword+1 argument already present (Debian: #622383) * Layout change: everything is now in /usr/share/bash-completion/, rather than in /etc/. * Get rid of BASH_COMPLETION_DIR, BASH_COMPLETION_HELPERS_DIR, BASH_COMPLETION * Fix autotools to use pkgdatadir instead of redefining datadir, get rid of helpersdir. * Implemented a blacklist for unwanted third-parties completions * New completions: - epdfview, lpr and lpq (Raphaël Droz), mysql (Raphaël Droz) * Improved completions: - ant: handle "extension-point" the same as "target" tag (Petr Kozelka, Alioth: #313105) - apt: add 'download' to subcommands (Debian: #625234, Ubuntu: #720541) - aptitude: add 'versions' command (Debian: #604393) - dpkg-query: use the 'dpkg' completion (Debian: #642526) - lintian: remove --unpack-level (Debian: #623680) - {shadow,coreutils}: fix broken _allowed_groups usage - rrdtool: complete filenames after commands (Debian: #577933) - sitecopy: fixed a bug with grep and brackets: use sitecopy -v to fetch sites (Raphaël Droz). [ Freddy Vulto ] * Improve __reassemble_comp_words_by_ref() (Alioth #313057) * Testsuite: - add -unsorted option to _get_hosts() [ Guillaume Rousse ] * Use $() for subshell, instead of backquotes * Use simple quotes for constant strings * Drop -o filenames, as suggested by Ville * New completions: puppet [ Igor Murzov ] * Abort completion file loading earlier if required commands are not available. * docs: Improve tester's manual * Make completions that use _command also work with file names * _command_offset: Restore compopts used by called command. * New completions: - pkgtool, makepkg, rmp2tgz, slapt-get, slapt-src, slackpkg, kcov, feh, xgamma, fbi, fbgs * Improved completions: - file: ddd few missing --exclude arguments completions - host, nslookup: Remove completions for bind utils from bash_completion. - {install,upgrade,explode}pkg: use -o plusdirs instead of -o dirnames - makepkg: should complete filenames - removepkg, upgradepkg, installpkg: add option completion - xrandr: Add more option completions. - overall clean up of different slackware-specific completions * Testsuite: - add basic tests for pkgtools, rpm2tgz, slapt, sbopkg, slackpkg - fix broken tests for finger and xhost - remove unused -expect-cmd-full option from assert_complete* [ Sergey V ] * New completions: sbopkg [ Ville Skyttä ] * Load completions in separate files dynamically, get rid of have() * Drop unnecessary $USERLAND checks * Try /usr/sbin before /sbin in have() * Try both full path and basename completions for sudo etc (Alioth: #313065) * Add _init_completion() for common completion initialization and generic redirection handling * Replace actual sysconfdir in bash_completion on install (Alioth: #313081) * Drop support for bash < 4.1 * Drop no longer needed _compopt_o_filenames() * Drop no longer needed "type compopt" checks * docs: Update "simply sourcing" instructions to match new layout, check $PS1. * Get rid of bash_completion self-parsing from _filedir_xspec (RedHat: #479936). * Provide profile.d hook for per user disabling of bash_completion (Debian: #593835) * New completions: - a2x, arping, asciidoc, base64, cal, chrpath, cppcheck, curl, dmesg, dot, file, gnome-mplayer, gprof, hddtemp, host, htpasswd, idn, ionice, jps, lbunzip2, lbzip2, lbzcat, prelink, protoc, pwdx, pwgen, reptyr, sum (RedHat: #717341), watch - phing: reuse ant completion (Elan Ruusamäe, Alioth: #312910) - pinfo: reuse info completion * Improved completions: - bluez, e2fsprogs, grpck, java (Mattias Ulbrich), passwd, pwck, route, rsync, smartctl - ant: improve -lib, -find/-s, and -D argument completions; rewrite build target parsing in plain bash, add build file test case - aspell: add --add-filter|--rem-filter completions; get --mode completions from 'aspell modes' output - bzip2, gzip, python, sysbench: quote command argument to _parse_help() - chsh: use _allowed_users instead of plain compgen -u - cksfv: add -g argument completion - cpan2dist: don't hang if no package list files exist - crontab: use /sys/fs/selinux and /selinux instead of /etc/selinux to find out if SELinux is around - cvs: (diff) parse options from cvs diff instead of plain diff; drop -o default to fix CVS root completions; (commit) complete on entries instead of default if COMP_CVS_REMOTE is not set; improve CVS controlled file completions; add CVS controlled file completions for admin and update; list "primary" command names first in mode switch; recognize some additional commands and synonyms; add editors/watchers completion; sort mode completions alphabetically - freeciv: complete freeciv-* in addition to civclient/civserver - gdb: improve filename completion - gendiff: do file completion after output redirection - getent: add gshadow to known databases; allow multiple completions from same db, add option completion - info: add option completion support - ipsec (Tobias Brunner): drop uname check, add strongSwan specific completion with fallback, complete connection names for 'up', 'down' and other commands - jar: complete on *.sar (JBoss service archive) - java, javac: add -X* completions - javadoc: implement -linkoffline two argument completion - killall: activate completion on Darwin (Alioth: #312350) - (la)tex (Ted Pavlic): add *.dbj to filename completions (RedHat: #678122) - man: add option parsing and completion - modplug*: add more extensions for files supported by libmodplug - mutt: support tildes when recursively sourcing muttrc files (Debian: #615134); expand tilde in mutt query command (Alioth: #312759) - ntpdate: add some option argument (non)completions - oo{writer,impress,calc,draw} (Matej Cepl): complete on LibreOffice FlatXML extensions (RedHat: #692548) - perldoc (Scott Bronson): override MANPAGER when generating perldoc completions (RedHat: #689180); don't parse man page when we know it'll produce no completions; use perldoc itself instead of man - pgrep: add option and option argument completions - rpm: make rpm --queryformat use more consistent; drop rpm query support for rpm < 4.1 - rpmbuild: add --buildpolicy completion - rpmcheck: drop reference to undefined $files variable (Alioth: #313270) - screen: add _terms() and -T completion; add commands completion (Alioth: #312164, RedHat: #547852) - _services: avoid bogus completions when init or xinetd dirs exist but are empty; include systemd services - smartctl: fix short alternative for --tolerance - ssh, scp, sftp, ssh-copy-id: add some option argument (non)completions - strace: don't append space for -e *= completions; don't try to extract syscall names if they're not going to be used; rewrite arch specific syscall extraction in plain bash - svn*: don't suggest short options - tar: fix completion of files inside *.tar.bz2 archives when [Ijy] is not given; added option completions; improve tar *[cr]*f completions (Debian: #618734) - unzip: complete on *.sar (JBoss service archive) - xmllint, xmlwf: complete on *.tld (tag library descriptor) - xmlwf: add -v non-completion - xmms: add some option argument completions - xz: apply xz completion to pxz too; non-complete --memlimit{,-compress,-decompress} * Testsuite: - add basic tests for gendiff, mdadm, puppet, xzdec, mii-diag, mii-tool, grpck, passwd, pwck, samba, rdesktop, fusermount, tcpdump, l2ping, ssh-copy-id, postfix, qemu, ldap*, medusa, mdtool, monodevelop, msynctool, cfagent, lpr, lpq, mysql, nslookup, compare, conjure, import, stream - fix tests for ri - fix get_hosts option docs. - add test case for Debian: #622383. - add chown foo: and :foo test cases, should complete files (RedHat: #710714) -- David Paleino Thu, 03 Nov 2011 09:53:55 +0000 bash-completion (1.3) [ Guillaume Rousse ] * added pure-perl perldoc completion helper, using work from Aristotle Pagaltzis (pagaltzis@gmx.de) * added completions for xfreerdp and iscsiadm * updated xm subcommands list [ David Paleino ] * Fixed "service" completion, thanks to John Hedges (Debian: #586210) * Complete on all files for mplayer's -dvd-device * Fixed typo in openssl completion (Debian: #609552) [ Ville Skyttä ] * Activate hping2 completion also for hping and hping3. * Add badblocks, compgen, crontab, dumpe2fs, e2freefrag, e2label, ether-wake, filefrag, gendiff, growisofs, iftop, ip (Debian: #600617), javaws, kid3, lrzip, lsof, mktemp, portecle, POSIX sh, sha{,224,256,384,512}sum, sysbench, tune2fs, xmodmap, and xrdb completions. * Add *.gif (Alioth: #312512), *.m2t (Alioth: #312770), *.3gpp, *.3gpp2, *.awb, and *.iso (Alioth: #311420) to mplayer filename completions. * Add "short" tarball extensions to unxz, unlzma etc completions. * Improve /etc/init.d/*, ipmitool, jar, java, javadoc, man, mencoder, mkdir, mplayer, pack200, povray, python, rpmbuild, sqlite3, tar, wodim, and general help parsing completions. * Fix p4 and povray completions (Alioth: #312625). * Add *.xsd, *.xsl, *.rng, *.wsdl, and *.jnlp to xmllint and xmlwf filename completions, and *.gz versions of all of the supported ones for xmllint. * Recognize rpm query mode based on the --file, --group, --package, and --all long options (RedHat: #630328). * Improve rpm query option completions. * Drop bad kompare filename completion (Alioth: #312708). * Make _filedir and _filedir_xspec complete uppercase versions of their filename extension arguments in addition to exact case matches. * IPv6 known hosts completion fixes (Alioth: #312695, RedHat: #630658). * Fixes to completions for filenames containing tabs (RedHat: #629518). * Add *.iso (Alioth: #311420), *.m2t and *.m2ts (Alioth: #312770) to xine-based player filename completions. * Add /etc/ethers to MAC address completion sources. * Add *.gem and *.spkg to tar filename completions. * Complete known hosts from avahi-browse only if $COMP_KNOWN_HOSTS_WITH_AVAHI is non-empty (Alioth: #312691, RedHat: #630326). * Improve relevance of many user/group completions, depending on context. * Remove most "-o filenames" options to "complete", turn "-o filenames" on dynamically when needed instead. * Add/improve various autotools completions. * Add *.apk to unzip and jar filename completions. * Do not load bash_completion in profile.d script if progcomp is not enabled. * Ignore muttrc source entries that are not files (Alioth: #312881). * Re-enable postgresql database and user completion (Alioth: #312914, Ubuntu: #164772). * Add *.fdf to various PDF viewer completions. [ Freddy Vulto ] * Added _tilde(), fix ~username completion (Alioth: #312613, Debian: #587095) * Speed up `compopt' availability detection * Fix _filedir `-o filenames' detection on bash-3 (Alioth: #312646) * Fix __reassemble_comp_words_by_ref (Alioth #312740) [ Anton Khirnov ] * Improve mplayer and mencoder completions. [ Paul Walmsley ] * Add *.webm to mplayer file completions (Debian: #588079). [ Miklos Vajna ] * Add *.amr to mplayer file completions (Alioth: #312634). [ Andrej Gelenberg ] * Add *.part (partially downloaded) to mplayer and xine-based player completions (Alioth: #312657). [ Stephen Gildea ] * Fix false posives for non-option words in _parse_help (Alioth: #312750). [ Andrey G. Grozin ] * Add *.fb2 to okular filename completions. -- David Paleino Sun, 06 Feb 2011 19:03:46 +0100 bash-completion (1.2) [ David Paleino ] * Don't use pidof in _known_hosts_real() to detect whether Avahi is available, since it's not available on MacOS X. Thanks to Rainer Müller (bash-completion MacPorts maintainer) * Fixed "freq" and "rate" completion for iwconfig * contrib/munin-node fixed (Debian: #550943) * contrib/dpkg fixed -W and --show completing on .?(u)deb's (Debian: #552109) * contrib/aptitude: add @(add|remove)-user-tag * Added munindoc completion to contrib/munin-node, thanks to Tom Feiner (Debian: #553371) * Added colordiff completion, same as diff * contrib/cpio: added missing completions for -?, --help, --license, --usage, --version and (-p) --to-stdout (Debian: #557436) * Style policy: don't use fancy globbing in case labels * Added .fdf completion to okular and evince * Added .okular completion to okular (Debian: #545530) * Added lintian completion * Refreshed reportbug completion, added --from-buildd (Debian: #579471) * Special-case "apt-get source" (Debian: #572000) * Added lintian completion (Debian: #547361) * contrib/dpkg: update completion to current API * Styleguide: establish line wrapping and $() instead of `` [ Ville Skyttä ] * Create bz2 dist tarball too. * Include CHANGES in dist tarball. * Include profile snippet in tarball, install it. * Rename contrib/bluez-utils to contrib/bluez to follow bluez 4.x naming. * Apply cardctl completion to pccardctl too. * Apply pine completion to alpine too. * Remove many unnecessary short option completions where long ones exist. * Improve chsh, chgrp, chown, configure, curl, cvs, find, gkrellm, gzip, iconv, lftp, look, lzma, make, man, mdadm, modprobe, mount, mplayer, mysqladmin, perldoc, rsync, screen, service, scp, ssh, sshfs, unzip, update-alternatives, vncviewer, wget, yp-tools, xine based players' and general hostname completions. * Add abook and wtf completion, based on work by Raphaël Droz. * Add cvsps, dragon, fusermount, jarsigner, k3b, lftpget, modplug123, pm-utils, rtcwake, pack200, unpack200, pbzip2, pbunzip2, pbzcat, pigz, unpigz, and wol completions. * Don't overwrite other host completions when completing from multiple SSH known hosts files. * Speed up installed rpm package completion on SUSE, based on work by Marco Poletti (Alioth: #312021). * Improve sourcing snippets from completion dirs. * Drop support for bash < 3. The compatibility global variables $bashN, $default, $dirnames, $filenames, $compopt, $nospace, $bashdefault, and $plusdirs have been dropped too. 3rd party completions should switch to using the complete/compgen features directly, and BASH_VERSINFO for bash version checks. * Protect various completions from unusual user input by not embedding the input in external command arguments (Debian: #552631). * Add /sbin to $PATH when invoking ifconfig and iwconfig. * Combine dcop and qdbus completions into the latter. * awk and sed usage portability fixes (Alioth: #311393, Debian: #501479). * Fix leaking local variables from various completions. * Turn on -o filenames in _filedir on bash >= 4. * Deprecate modules completion, upstream modules >= 3.2.7 ships one. * Protect grep invocations from user aliases (Alioth: #312143). * Split sshfs completion from contrib/ssh into contrib/sshfs. * Split mount and umount completion into contrib/mount. * Split service completion into contrib/service. * Split chown, chgrp, and id completions into contrib/coreutils. * Split kill, look, and renice completions into contrib/util-linux. * Split killall, pkill, pgrep and related completions into contrib/procps. * Split ipsec completion into contrib/ipsec. * Split ifup and ifdown completions into contrib/ifupdown. * Do basic HTML file completion with Firefox and Chrome and friends, and Epiphany. * Do basic diff/patch completion with cdiff and kompare. * Don't install mock completion by default, it's in upstream mock > 1.1.0. * Do basic text editor completion with xemacs, sxemacs, kate, and kwrite. * Do meta-command completion for aoss and padsp. [ Freddy Vulto ] * Prevent root PATH expansion prolifering in _root_command (bash >= 4.1.4) * Only complete xhost if (_)xhost is available. * Added _get_comp_words_by_ref to replace both _get_cword & _get_pword. Also additional variables `words' and `cword' can be returned. * Added _upvar & _upvars helper functions to aid in passing variables by reference. * Make _filedir emulate `-o filenames' * Fixed completion perl modules containing colons. * Merged __get_cword3 & __get_cword4 to _get_cword. * Added __expand_tilde_by_ref helper function. * Added __ltrim_colon_completions to fix completions containing colons * Improved mutt completion * Added _get_pword helper function, thanks to Sung Pae (Alioth: #312030) [ Ted Stern ] * Fix modules completion for "(default)" entries. [ Jeremie Lasalle Ratelle ] * Fix rsync remote path completion (Alioth: #312173, Gentoo: #297818). [ Leonard Crestez ] * Improve ssh -o suboption completion (Alioth: #312122). * Fix NFS mounts completion (Alioth: #312285). * Fix completion of usernames (Alioth: #311396, Debian: #511788). * Fix chown test crashing on systems with no root group (Alioth: #312306). * Fixed tests when BASH_COMPLETION or TESTDIR contain spaces. * Fix mount handling of escapes (Alioth: #311410, Launchpad: #219971, Debian: #511149). * Cleanup scripts to run tests. Make runUnit and runCompletion use test/run. Make it possible to run tests from any directory. * Add a --debug-xtrace option to test/run using BASH_XTRACEFD from bash-4.1. * Add a --timeout option to test/run to override the default expect timeout. [ Raphaël Droz ] * Add xsltproc completion (Alioth: #311843). [ Adrian Friedli ] * Add ipv6calc completion. [ Ildar Mulyukov ] * Add showmount completion (Alioth: #312285). [ Neville Gao ] * Fix mount completion error "bash: [: too many arguments" (Alioth #312381). [ Austin English ] * Make lookup of wine file completions case insensitive. [ Igor Murzov ] * Improve xz completion (Alioth: #312466). [ Mario Schwalbe ] * Update find completion (Alioth: #312491, Launchpad: #570113). [ Mark van Rossum ] * Add basic lyx completion. -- David Paleino Wed, 16 Jun 2010 17:44:59 +0200 bash-completion (1.1) [ David Paleino ] * Permit .gz files concatenation (Debian: #514377) * Fix svk completion using $filenames instead of $default (Debian: #524961) * Really add build-dep to aptitude's completion (Debian: #495883) * Fix checks for GNUish userland, thanks to Robert Millan (Debian: #529510) * Fix typo in .ass subtitles completion for mplayer (Debian: #531337) * Fix regression on man(1) completion: also complete on local .3pm files (Debian: #531343) * Split mutt completion to contrib/mutt * Split iconv completion to contrib/iconv * Split dict completion to contrib/dict * Split {update,invoke}-rc.d completions to contrib/sysv-rc * Don't install _subversion anymore, upstream completion is better than ours. Added to EXTRA_DIST in Makefile.am * Split autorpm completion to contrib/autorpm * Split jar completion to contrib/jar * Split chkconfig completion to contrib/chkconfig * Split chsh completion to contrib/chsh * Split apt_build completion to contrib/apt-build * Split aptitude-related completions to contrib/aptitude * Split apt-cache and apt-get completions to contrib/apt * Split rpm-related completions to contrib/rpm * Split cvs-related completions to contrib/cvs * Split man completion to contrib/man * Split bash builtins completions to contrib/bash-builtins * Split dpkg-related completions to contrib/dpkg (and re-enable usage of grep-status if available) * Split gcc completion to contrib/gcc * Split dselect completion to contrib/dselect * Split cardctl completion to contrib/cardctl * Split pineaddr completion to contrib/pine * Added avahi-discovered hosts to _known_hosts_real() (Debian: #518561) * Added m4v completion to mplayer (Debian: #504213) * Improve qemu completion (Debian: #534901) * Added sshfs completion (shares the same as scp) (Debian: #545978) * Fixed obvious brokenness (typos) in contrib/mdadm * Clean [1.2.3.4]:port format in known_hosts, thanks to Xuefer (Gentoo: #284563) * Added --no-generate to "apt-cache pkgnames" calls, make it faster on certain configurations (Debian: #547550) * Split okular from evince filename extension completion, needed to add okular-specific completions: xps, epub, odt, fb, mobi, g3 and chm. Also, okular can read any of its formats also in .gz/.bz2 compressed format, so change the regular expression to match this. * Remove --with-suggests and --without-suggests from aptitude completion * Patches from PLD Linux (thanks to Elan Ruusamäe): - avoid sed pipe as ps itself can omit the headers - improve service(8) completion, also look for "msg_usage" [ Ville Skyttä ] * Split yum completion to contrib/_yum (no longer installed by default, the intent is to move it to yum upstream soon). * Split yum-arch completion into contrib/yum-arch, load completion only if yum-arch is installed. * Update list of yum commands and options. * Add yum repolist, --enable/disablerepo, --disableexcludes, -d, -e, --color, and --enable/disableplugin completions. * Add chkconfig --override and resetpriorities completions. * Split mplayer and friends completions to contrib/mplayer. * Parse top level mplayer and friends option completions from -list-options. * Fix dir-only completion for make to include only dirs, not files. * Remove unused variable RELEASE. * Improve aspell dictionary completion: don't hardcode data-dir, get canonical dicts from "aspell dicts". * Always use /etc/shells for chsh -s completion, don't complete on comment lines in it. * Fix rpm --whatrequires/--whatprovides completions with spaces and other unusual characters, add filename based --whatrequires completions. * Add modplugplay filename completion. * Add more mod-like audio file extensions for xine-based players and timidity. * Complete on plain alternatives like update-alternatives. * Rename installed_alternatives() to _installed_alternatives(). * Add /etc/pki/tls/openssl.cnf to list of default openssl config files, search for default ones only if -config is not given. * Use POSIX compliant arguments to tail in mkisofs completion. * Protect various completions from unusual user input by not embedding the input in external command arguments. * Add _split_longopt() helper for improved handling of long options that take arguments in both "--foo bar" and "--foo=bar" formats. * Use _split_longopt to improve and clean up aspell, bluez-utils, chgrp, chown, chkconfig, cpio, dpkg, heimdal, iptables, mailman, make, mc, mii-diag, mii-tool, mkinitrd, pkg-config, postgresql, quota, reportbug, samba, smartctl, yum, and generic long option completion (Alioth: #311398). * Add chown --from and --reference value completions. * Add chgrp --reference value completion. * Do not assume all --foo= options take filenames in generic long option completion, assume only that --*file*= does, and that --*dir*= takes dirs. * Add make --old/new-file, --assume-old/new, --what-if value completions. * Add smartctl -n/--nocheck completion, add more other value completions. * Fix leaking $prev from cpio, dsniff, freeciv, gkrellm, mkinitrd, service, and tcpdump completions. * Split ant completion to contrib/ant, improve the built in one. * Improve postfix completion. * Improve samba completion. * Split lilo completion to contrib/lilo. * Split reportbug and querybts completions to contrib/reportbug. * Remove debug output noise from quotaon completion. * Split Linux wireless tools completion to contrib/wireless-tools. * Add mock completion. * Split FreeBSD kld(un)load completion to contrib/kldload. * Split FreeBSD pkg_* completion to contrib/pkg_install. * Split FreeBSD portupgrade and friends completion to contrib/portupgrade. * Split Slackware pkgtools completion to contrib/pkgtools. * Improve rpm group completion (displayed completions are still wrong). * Change many completions to load in memory only if the completed commands are available. * Invoke the actual mplayer/mencoder command being completed (with full path) to get various completions instead of simply "mplayer" or "mencoder". * Associate OOXML/MS Office 2007 extensions with OpenOffice applications. * Associate .tsv with oocalc. * Add xmlwf completion. * Associate *.po with poedit, gtranslator, kbabel, and lokalize. * Add xz, xzcat, xzdec, and unxz completion. * Add lzcat, lz*grep, lzless, lzmore, and unlzma completion. * Load "modules" completion if /etc/profile.d/modules.sh exists even if the "module" alias has not been defined (yet). * Add *.ogv to xine-based players (Debian: #540033). * Add $compopt (":" i.e. no-op with bash < 4, "compopt" with >= 4). * Complete bzcat and zcat only on compressed files. * Do not require a dot in bzcmp, bzdiff, bz*grep, zcmp, zdiff, z*grep, zless, and zmore filename completions. * Add xz and compress support and more tarball filename extensions to rpmbuild -t*/--tarbuild completion. * Don't hardcode path to lsmod. * Fix sbcl file/dirname completion (Debian: #545743). * Add /sbin to $PATH when invoking lspci and lsusb. * Support .xz suffix in info page completions. * Prevent rpm --define/-D completions from falling through. * Add more common options to rpm option completions. [ Todd Zullinger ] * Make yum complete on filenames after install, deplist, update and upgrade when the following argument contains a slash. [ Mike Kelly ] * Fix _filedir on bash 4. * Add support for xz to tar completion. * Fix _quote_readline on bash 4 (Debian: #544024). [ Guillaume Rousse ] * Split mkinitrd completion to contrib/mkinitrd, improve it. * Split smartctl completion to contrib/smartctl. * Better ssh and sftp completion * Better xhost completion * Split _known_hosts completion in two parts, to avoid parsing command line twice * Added strace completion * Added xm completion * Added rpcdebug completion * Added msynctool completion * Added openldap completion * Added ldapvi completion * Added heimdal completion * Added vpnc completion * Added rpmcheck completion * Added munin-node completion * Added bluez-utils completion * Added samba completion * Added cfengine completion * Added xmllint completion, contributed by Ville * Added shadow completion, contributed by Ville * Added repomanage completion, contributed by Ville * Splitted and enhanced openssl completion * Added rfkill, mdadm and resolvconf completions [ Raphaël Droz ] * Add mount -L and -U completion. [ Philipp Weis ] * Add .dvi.{gz,bz2} completion for evince/okular (Debian: #522656) [ Freddy Vulto ] * Patched _known_hosts() to support multiple {Global,User}KnownHosts in SSH config files, thanks to Thomas Nilsson (Alioth: #311595) (Debian: #524190) * Fix leaking $i from info, man and python completions. * Added setting COMP_KNOWN_HOSTS_WITH_HOSTFILE. _known_hosts_real() will add hosts from HOSTFILE, unless COMP_KNOWN_HOSTS_WITH_HOSTFILE is set to an empty value (Alioth: #311821) * Quoted $cur to prevent globbing - thanks to Eric Blake (Alioth #311614) * Fix leaking $muttcmd from mutt completion * Fix completing multiple hosts (Debian: #535585) [ Michele Ballabio ] * Add more extensions to pkgtools completion. -- David Paleino Sat, 03 Oct 2009 15:41:49 +0200 bash-completion (1.0) [ Guillaume Rousse ] * Make bibtex complete on .aux files * Add .xvid and .XVID to player completion * Added cowsay/cowthink completion * Added brctl completion * Added cpan2dist completion * Added qemu completion * Added net-tools (mii-tool and mii-diag) completions * Added minicom completion * Added quota-tools completion * Added rdesktop completion * Added tightvncviewer completion * Cleanup screen completion, and make it completes on options [ David Paleino ] * Added .kar to Timidity completion. * Fix killall completion, remove trailing ":" on certain process names * Fix man -l completing filenames (Debian: #497074) * (Partly) fixed java classes completion (Debian: #496828). Look for FIXME in source. * Dump to /dev/null error message from look(1) with no arguments (Debian: #495142) * Set ssh as default for rsync (was rsh) (Debian: #492328) * Added .oga, .ogv, .ogx to mplayer completion (Debian: #496162) * Added .epub to unzip|zipinfo completion (Debian: #492476) * Added ssh-copy-id completion (Debian: #491856) * Moved ssh completion to separate file (Debian: #360628) * Bogus completion when mounting subdirs fixed (Debian: #322238) * Fix `apt-cache showsrc` completing only on source package names (Debian: #361535) * Fixed bugs with gdb completion: - when an empty directory is in $PATH (thanks to Morita Sho) (Debian: #497597) - when a non-existing directory is in $PATH (Debian: #499780) * Fix missing completion for "-n" and "-e" (we were using echo, now using printf) (thanks to Morita Sho) (Debian: #498105) * Fixed gpg completion: - --@(export|@(?(l|nr|nrl)sign|edit)-key)) (Debian: #500316) - -@(r|-recipient)) * Fixed .cb[rz] completion for evince (Debian: #502885) * Added gksudo, gksu, kdesudo completion * Added apache2ctl completion * Added gpg2 completion (Debian: #489927) * Fixed mplayer -skin completion (Debian: #501473) * Fixed errors with POSIX enabled (Debian: #502804) * Fixed dpkg-source wrong exit() with return() (Debian: #) * Added --schedule-only to aptitude's completion (Debian: #502664) * Added build-dep to aptitude's completion (Debian: #495883) * Added support for `-F configfile' to _known_hosts(), ssh, scp and sftp, thanks to Freddy Vulto (Debian: #504141) * Fixed sed quoting bug in _known_hosts(), thanks to Freddy Vulto (Debian: #504650) * Allow `Host(Name)' in ssh config file to be indented * Allow `Host(Name)' in ssh config file to have trailing comment. * Allow for comments in known_hosts files (Debian: #511789) * Fixed perl -I/-x completion, thanks to Freddy Vulto (Debian: #504547) * README updated: explain how to use bash-completion correctly. (Debian: #506560) * TODO updated: the Alioth team is now upstream. * Added qdbus completion, thanks to Terence Simpson (Ubuntu: #257903) * Added monodevelop and mdtool completions. * Split subversion-related completions to contrib/_subversion (prefixed with _ to avoid file conflicts with upstream's one) * Fixed completion of environment variables, thanks to Morita Sho (Debian: #272660) * Fix dpkg completion bug: it listed only non-Essential packages (Debian: #511790) * Fixed _dpkg_source completion (Debian: #503317) * Added _parse_help() to try to parse options listed in $command --help * Fixed gzip completion to use _parse_help(), since the available options vary with distributions * Added to_review/ directory, where completions needing a review would go. After it gets accepted, the completion would go into contrib/. * Remove unused UNAME local variable in _info() (Debian: #501843) * AUTHORS added * Make _alias() use _get_cword * Added .zip to jar completions (Debian: #521041) * Merge from Gentoo: - fix 'find' completion so that it properly completes on -?(i)whilename. Patch by Ciaran McCreesh. - use make -qp to parse the Makefile for us, so we get proper completion on things like pattern rules. Patch by Mike Kelly . - complete on gkrellm2 as well. Patch by Aaron Walker. - fix CVS completion * Merge from Ubuntu: - consume error messages in configure completion (Ubuntu: #223882) (Mika Fischer) - quote $xspec in _filedir_xspec in case it is empty, which would cause errors if there was no match under failglob. (Ubuntu: #194419) (Mika Fischer) * debian/links fixed (Debian: #494292) * debian/control: - fixed typo in the long description - added Vcs-* fields * debian/install: - correctly install contrib/* under /etc/bash_completion.d/ * debian/copyright updated * extra/dh_bash-completion: - updated to support a list of files in debian/.bash-completion (Debian: #512917) [ Ville Skyttä ] * Added JPEG 2000 files to display completion, thanks to Bastien Nocera (RedHat: #304771) * Improved rpm macro completion. * Added -E to rpm completion. * Improved rpm backup file avoidance. * Improved /var/log/rpmpkgs based rpm installed package completion. * Improved performance of rpm -qa based rpm installed package completion. * Improved features and performance of yum completion. * Added support for p (POSIX) and x (x.org) man sections. * Improved filename based man page completion. * Added minimal sqlite3 completion. * Improved getent completion (Ville Skyttä, Guillaume Rousse). * (Re)fix gzip and bzip2 options completion. * Improved svn filename completion (RedHat: #430059). * Add lzma completion (Per Øyvind Karlsen, Ville Skyttä). * Add .mp2 and .vdr to mplayer completion (RedHat: #444467). * Add .mkv, .mp2 and .vdr to *xine completion (RedHat: #444467). * Added lzop completion. * Fix scp metacharacter escaping. * Remove duplicate cpio completion, thanks to Freddy Vulto (Debian: #512823) * Fix awk error in "modprobe -r /" completion (Debian: #512556). * Expand ~foo to dir name more eagerly to avoid quoting issues. * Fix -sourcepath handling in javadoc packages completion. * Extract process name completion from _killall to _pnames, make it work for others than Linux and FreeBSD. * Fix process name completion with relative paths (RedHat: #484578). * Use improved process name completion in pgrep in addition to killall. * Enable pgrep and pkill completion if the commands are available, not just on Linux and FreeBSD. * Drop hg completion, an improved version is shipped with Mercurial (contrib/bash_completion in the tarball). * Make okular complete on same files as evince, thanks to Mary Ellen Foster (RedHat: #486998). * Apply ps2pdf completion to ps2pdf{12,13,14,wr} too. * Simplify bash_completion.sh, return earlier in non-applicable environments. * Remove obsolete --buildarch and --buildos rpm(build) completions. * Add rpmbuild --target completion. * Use "-profile help" to get mplayer and friends -profile completions. * Fix local array initialization under bash 3.0, prevents "()" occurring in file and dir name completions. [ Freddy Vulto ] * Restored `_display()' completion for `display' by removing completion-by-extension for `display' (Alioth#311429) * Removed duplicate completion option `-borderwidth' for `display' * Prevent completion dir from being sourced twice if BASH_COMPLETION_DIR and BASH_COMPLETION_COMPAT_DIR are equal (Alioth#311433) * Make `_mii-tool()' and `_mii-diag()' POSIX-compliant * Fix _isql completion waiting for grep input if $ODBCINI not set; handle whitespace in $ODBCINI. * Split vncviewer completion in _tightvncviewer() and _xvnc4viewer() Added _realcommand() global function. [ Jakob Unterwurzacher ] * ps2pdf can run on .pdf files as well. (Debian: #516614, Ubuntu: #316943) [ Santiago M. Mola ] * Add .ape to mplayer supported extensions (Alioth#311510). -- David Paleino Wed, 25 Mar 2009 23:18:24 +0100 bash-completion (20080705) unstable; urgency=low [ David Paleino ] * Added more completions to imagemagick (thanks to Nelson A. de Oliveira) (Debian: #487786) * Added xrandr completion (thanks to Anton Khirnov) (Debian: #487825) * Improving _gdb completion: - $filenames to $default (Debian: #463969) - also show directory names (i.e. compgen -d) in COMPREPLY. - added . to $PATH, to allow debugging "local" executables. - do not complete Bash's builtins (thanks to Morita Sho) [ Luk Claes ] * Remove use of ucf for /etc/bash-completion (Debian: #488171). -- Luk Claes Sat, 05 Jul 2008 16:14:15 +0200 bash-completion (20080617.5) unstable; urgency=medium * Revert way of setting environment variables (Debian: #487774). * Add equals sign to _get_cword for mutt_aliases (Debian: #482635). * Enhance mlayer completion (Debian: #487826, #487838). -- Luk Claes Tue, 24 Jun 2008 19:50:57 +0200 bash-completion (20080617.4) experimental; urgency=low [ David Paleino ] * Merged Ubuntu changes: - added quote(), quote_readline(), dequote() helper functions. - added _remove_word() - fixed _get_cword() - refactored _filedir using quote_readline() - refactored _filedir_xspec using quote_readline() - fixed COMPREPLY's in _iwconfig - fixed _cvs() - _known_hosts(): use files from UserKnownHostsFile options in addition to standard ones. - fixed _command() to correctly prune the command line - disabled completion of PostgreSQL users and databases (Ubuntu: #164772) - fixed _java_packages() - fixed _muttquery() - added flv/FLV completion to mplayer - added --installed to apt-cache - only complete on filenames for aspell - fixed code for exclusions compspecs - added code to gracefully handle debug options (set +/-v) -- Luk Claes Mon, 23 Jun 2008 19:25:25 +0200 bash-completion (20080617.3) unstable; urgency=low [ David Paleino ] * Fixed IFS for filedir_xspec - Thanks to Stefan Lippers-Hollmann (Debian: #487571) [ Luk Claes ] * Install dh-bash-completion to ease installation of completions. -- Luk Claes Mon, 23 Jun 2008 07:24:21 +0200 bash-completion (20080617.2) unstable; urgency=low [ David Paleino ] * New upstream release - provide a manpage for extra/dh_bash-completion - fix semi-serious problem with _filedir() (Debian: #487449) * debian/rules: - added rule to generate dh_bash-completion's manpage * debian/install, debian/dirs: - installing dh_bash-completion into /usr/bin * debian/control: - new package dh-bash-completion [ Luk Claes ] * Comment new package to make sure current fix gets in the archive first. * Add compression completion for vi(m). -- Luk Claes Sun, 22 Jun 2008 19:47:23 +0200 bash-completion (20080617.1) unstable; urgency=medium [ David Paleino ] * Urgency set to medium because the package is currently unusable. * New upstream sub-release - fixed some typos here and there which prevented bash completions at all (Debian: #487441). - really closing Debian bug #455510. -- Luk Claes Sun, 22 Jun 2008 00:22:53 +0200 bash-completion (20080617) unstable; urgency=low [ David Paleino ] * New upstream release - add more completions to aptitude (Debian: #432289) - fixed UTF-8 problem with _get_cword(), thanks to Andrei Paskevich (Debian: #472132) - fixed autoremove completion, thanks to Flavio Visentin (Debian: #474974) - cmf and CMF added to playmidi completion (Debian: #365658) - added rrdtool completion, thanks to Justin Pryzby (Debian: #428641) - added OpenDocument completion for unzip/zipinfo (.od{f,g,p,s,t}) (Debian: #472940) - fixed escaping problems with job control (i.e. disown, jobs, bg, fg): the argument is now surrounded by "" (Debian: #347316) - make mkdir complete also on filenames (Debian: #376433) - {bz,z}{cat,cmp,diff,egrep,fgrep,grep,less,more} now should complete on all filenames, not just compressed archives (just commented out) (Debian: #455510) - fixes Perl completion (Debian: #470742) - fixes get_cword -> _get_cword typo (Debian: #478596) - fixes _get_cword() function to properly handle filenames with whitespaces (Debian: #394636, #468254, #474094) - added .pdf.bz2 completion to evince (Debian: #424736) - added .svg completion to display (Debian: #441017) - added .m2ts completion to mplayer (Debian: #480879) - added extra/dh_bash-completion to ease future rewrite of bc. * debian/copyright - now in a fancier machine-parsable format. * debian/control: - added myself to Uploaders - debhelper Build-Depends updated to >= 6. * debian/watch: - improved current watch line regex - added (commented out) probable future watch line * debian/compat bumped to 6 * debian/dirs, debian/install and debian/links added * debian/rules: - refactored to make use of debian/{dirs,install,links} [ Steve Kemp ] * Applied patch to fix completion of umount command. (Debian: #470539) * Fixed the completion of Perl manpages. (Debian: #404976) * Added 'aif' to the filenames offed for completion for mplayer. (Debian: #474517) * Allow tsocks completion. (Debian: #409423) * Update mutt completion to handle local usernames. (Debian: #416655) * Update apt-get completion to include the flag "--no-install-recommends" (Debian: #475242) -- Luk Claes Sat, 21 Jun 2008 21:59:43 +0200 bash-completion (20060301-4) unstable; urgency=low * Add some fixes from Ubuntu: * Fix completion of filenames with spaces (Debian: #468254). * Fix parsing of SSH config files (Debian: #435117). * Change priority to standard (Debian: #471666). * Add some more completions for xine (Debian: #452083, #471249). * Fix completion of gzip (Debian: #351913). * Also use $HOSTFILE in hostname completion (Debian: #400380). -- Luk Claes Sat, 22 Mar 2008 23:10:30 +0000 bash-completion (20060301-3) unstable; urgency=low * Fix kpdf completion (Debian: #468163, #413374). * Fix completion of - or -- with _command (Debian: #415276). * Add sux to the complete -u list (Debian: #466089). * Add dvipdfm to the list of dvi programs (Debian: #396644). * Add --purge-unused option completion for aptitude (Debian: #438471). * Add divx extension completion for mplayer (Debian: #444294). * Add pdf.gz completion for evince (Debian: #456887). * Add --remove-all completion for update-alternatives (Debian: #269173). -- Luk Claes Wed, 05 Mar 2008 22:57:27 +0100 bash-completion (20060301-2) unstable; urgency=low * Take over the package. -- Luk Claes Wed, 27 Feb 2008 19:22:03 +0100 bash-completion (20060301-1) unstable; urgency=low * Upload to unstable. -- Matthias Klose Sat, 09 Feb 2008 23:18:20 +0100 bash-completion (20060301-0ubuntu2) hardy; urgency=low * Replace bash (<< 3.1dfsg-9), handle upgrade in preinst. * Exclude hashed hostnames from ssh host completion results. Debian: #428085. * Fix: ifup/down don't really complete. Debian: #463756. * Allow perl completion to complete filenames, complete -I and -x arguments. Debian: #443394. * Add find -wholename completion. Debian: #431220. * Handle whitespaces in $HOME for _known_hosts() completion. Debian: #414821. * dpkg -L: complete for removed-but-not-purged packages. Debian: #372156. * Complete for apt-get autoremove. Debian: #433542, #443816, #445332. * Update completion for mplayer (mka/flac). Debian: #340452. * Add ping6/fping6 completion. Debian: #413170. * Handle whitespace in paths for mount/umount completion. Debian: #367957. * apt-get: Support --auto-remove. Ubuntu: #60666. -- Matthias Klose Sat, 09 Feb 2008 23:11:32 +0100 bash-completion (20060301-0ubuntu1) hardy; urgency=low * Initial release, split out from the bash package. The software currently is unsupported upstream. * Don't try to set a readonly variable. Ubuntu: #149527. * Support purge in apt-get auto completion (Mathias Gug). Ubuntu: #151677. * evince: Autocomplete on cbr/cbz/djvu files. Ubuntu: #156200, #175220. Debian: #400678. * kdvi: complete .*\.dvi\.(gz|bz2). Ubuntu: #128234. * kpdf: Complete postscript files. Ubuntu: #162319. * Make completion working in the middle of a word (Adam Simpkins). Ubuntu: #139666. -- Matthias Klose Fri, 08 Feb 2008 16:46:34 +0100 bash-completion-2.11/CONTRIBUTING.md000066400000000000000000000226301370676621500167720ustar00rootroot00000000000000# Contributing to bash-completion Contributions to the bash completion project are more than welcome. Fixes, clean-ups and improvements of existing code are much appreciated, as are completion functions for new commands. However, before submitting a completion to us, first consider submitting it to the project that ships the commands your completion is for. Having the completion shipped along with the command opens up some liberties we don't have if the completion is included with bash-completion. For example, we generally do not want to hardcode lists of available command options and their completions, because they quite probably vary between versions of the completed command, and therefore resort to scraping --help output and the like. While we do fairly well there, depending on the command, this can be fragile or expensive, or just not possible. If the completion is shipped alongside the command, they can be kept in sync and use more hardcoding etc. They are also more likely to be maintained and/or watched by people intimately familiar with the completed commands. See instructions in README.md how to install completion files from other projects so they are automatically enabled and dynamically loaded by bash-completion. On the other hand, we do have a pretty nice test suite and a bunch of helper functions that you may find useful. And a whole slew of completions in one package. Our functions can be used from "external" completions as well, just make sure you test for their existence and/or fail gracefully if you intend your completion to be usable without having bash-completion installed. It's nowhere near clear cut always what is the best place for the completion, upstream project or us. Even if it would seem to be upstream, not all upstreams are interested in shipping completions, or their install systems might not easily support installing completion files properly. But give it some thought, and ask if unsure. If you wish to contribute code to us, volunteering for long term maintainership of your code within bash-completion is welcome. When exactly you will be asked to do that depends on the case; don't be disappointed if it does or doesn't happen instantly. Also, please bare the following coding guidelines in mind: - Do not use Perl, Ruby, Python etc. to do text processing unless the command for which you are writing the completion code implies the presence of one of those languages. For example, if you were writing completion code for perldoc(1), the use of Perl to achieve your goal would be acceptable. irb(1) completion would similarly make the use of Ruby acceptable. Even so, please consider alternatives to these large and slow to start interpreters. Use lightweight programs such as grep(1), awk(1) and sed(1). - Use the full power of bash >= 4.2. We no longer support earlier bash versions, so you may as well use all the features of that version of bash to optimise your code. However, be careful when using features added since bash 4.2, since not everyone will be able to use them. For example, extended globs often enable you to avoid the use of external programs, which are expensive to fork and execute, so do make full use of those: `?(pattern-list)` - match zero or one occurrences of patterns `*(pattern-list)` - match zero or more occurrences of patterns `+(pattern-list)` - match one or more occurrences of patterns `@(pattern-list)` - match exactly one of the given patterns `!(pattern-list)` - match anything except one of the given patterns - Following on from the last point, be sparing with the use of external processes whenever you can. Completion functions need to be fast, so sacrificing some code legibility for speed is acceptable. For example, judicious use of sed(1) can save you from having to call grep(1) and pipe the output to cut(1), which saves a fork(2) and exec(3). Sometimes you don't even need sed(1) or other external programs at all, though. Use of constructs such as `${parameter#word}`, `${parameter%word}` and `${parameter/pattern/string}` can provide you a lot of power without having to leave the shell. For example, if `$foo` contains the path to an executable, `${foo##*/}` will give you the basename of the program, without having to call basename(1). Similarly, `${foo%/*}` will give you the dirname, without having to call dirname(1). As another example, ```shell bar=$(echo $foo | command sed -e 's/bar/baz/g') ``` can be replaced by: ```shell bar=${foo//bar/baz} ``` These forms of parameter substitutions can also be used on arrays, which makes them very powerful (if a little slow). - We want our completions to work in `posix` and `nounset` modes. Unfortunately due to a bash < 5.1 bug, toggling POSIX mode interferes with keybindings and should not be done. This rules out use of process substitution which causes syntax errors in POSIX mode. Instead of toggling `nounset` mode, make sure to test whether variables are set (e.g. with `[[ -v varname ]]`) or use default expansion (e.g. `${varname-}`). - Prefer `compgen -W '...' -- $cur` over embedding `$cur` in external command arguments (often e.g. sed, grep etc) unless there's a good reason to embed it. Embedding user input in command lines can result in syntax errors and other undesired behavior, or messy quoting requirements when the input contains unusual characters. Good reasons for embedding include functionality (if the thing does not sanely work otherwise) or performance (if it makes a big difference in speed), but all embedding cases should be documented with rationale in comments in the code. - When completing available options, offer only the most descriptive ones as completion results if there are multiple options that do the same thing. Usually this means that long options should be preferred over the corresponding short ones. This way the user is more likely to find what she's looking for and there's not too much noise to choose from, and there are less situations where user choice would be needed in the first place. Note that this concerns only display of available completions; argument processing/completion for options that take an argument should be made to work with all known variants for the functionality at hand. For example if `-s`, `-S`, and `--something` do the same thing and require an argument, offer only `--something` as a completion when completing option names starting with a dash, but do implement required argument processing for all `-s`, `-S`, and `--something`. Note that GNU versions of various standard commands tend to have long options while other userland implementations of the same commands may not have them, and it would be good to have the completions work for as many userlands as possible so things aren't always that simple. - Do not write to the file-system under any circumstances. This can create race conditions, is inefficient, violates the principle of least surprise and lacks robustness. - Use printf(1) instead of echo(1) for portability reasons, and be sure to invoke commands that are often found aliased (such as `ls` or `grep` etc) using the `command` (or `builtin`) command as appropriate. - Make small, incremental commits that do one thing. Don't cram unrelated changes into a single commit. - If your code was written for a particular platform, try to make it portable to other platforms, so that everyone may enjoy it. If your code works only with the version of a binary on a particular platform, ensure that it will not be loaded on other platforms that have a command with the same name. In particular, do not use GNU extensions to commands like sed and awk if you can write your code another way. If you really, REALLY must use them, do so if there's no other sane way to do what you're doing. The "Shell and Utilities" volume of the POSIX specification is a good starting reference for portable use of various utilities, see . - Use an editor that supports EditorConfig, see , and format source code according to our settings. - Read the existing source code for examples of how to solve particular problems. Read the bash man page for details of all the programming tools available to you within the shell. - Please test your code thoroughly before sending it to us. We don't have access to all the commands for which we are sent completion functions, so we are unable to test them all personally. If your code is accepted into the distribution, a lot of people will try it out, so try to do a thorough job of eradicating all the bugs before you send it to us. If at all practical, **add test cases** to our test suite (in the test/ dir) that verify that the code does what it is intended to do, fixes issues it intends to fix, etc. - In addition to running the test suite, there are a few scripts in the test/ dir that catch some common issues, see and use for example runLint. - File bugs, enhancement, and pull requests at GitHub, . Sending them to the developers might work too, but is really strongly discouraged as bits are more likely to fall through the cracks that way compared to the tracker. Just use GitHub. If that's not an option for some reason and you want to use email to send patches, send them as attachments formatted by `git format-patch` or directly with `git send-email`. bash-completion-2.11/COPYING000066400000000000000000000431031370676621500155720ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. bash-completion-2.11/Makefile.am000066400000000000000000000026061370676621500165760ustar00rootroot00000000000000SUBDIRS = completions doc helpers test pkgdata_DATA = bash_completion # Empty, but here just to get the compat dir created with install compatdir = $(sysconfdir)/bash_completion.d compat_DATA = profiledir = $(sysconfdir)/profile.d profile_DATA = bash_completion.sh pkgconfigdir = $(datadir)/pkgconfig pkgconfig_DATA = bash-completion.pc cmakeconfigdir = $(datadir)/cmake/$(PACKAGE)/ cmakeconfig_DATA = bash-completion-config.cmake \ bash-completion-config-version.cmake %: %.in Makefile $(SED) \ -e 's|@prefix[@]|$(prefix)|' \ -e 's|@datadir[@]|$(datadir)|' \ -e 's|@sysconfdir[@]|$(sysconfdir)|' \ -e 's|@PACKAGE[@]|$(PACKAGE)|' \ -e 's|@VERSION[@]|$(VERSION)|' \ <$(srcdir)/$@.in >$@ CLEANFILES = bash_completion.sh bash-completion.pc \ bash-completion-config.cmake bash-completion-config-version.cmake EXTRA_DIST = CHANGES $(pkgdata_DATA) bash_completion.sh.in .dir-locals.el \ .editorconfig README.md CONTRIBUTING.md pyproject.toml .perltidyrc \ .shellcheckrc bash-completion.pc.in bash-completion-config.cmake.in \ bash-completion-config-version.cmake.in setup-symlinks.sh install-data-hook: tmpfile=`mktemp $${TMPDIR:-/tmp}/bash_completion.XXXXXX` && \ $(SED) -e 's|-/etc/bash_completion\.d|-$(compatdir)|' \ $(DESTDIR)$(datadir)/$(PACKAGE)/bash_completion >$$tmpfile && \ cat $$tmpfile >$(DESTDIR)$(datadir)/$(PACKAGE)/bash_completion && \ rm $$tmpfile bash-completion-2.11/README.md000066400000000000000000000322711370676621500160220ustar00rootroot00000000000000# bash-completion [![Build Status](https://travis-ci.org/scop/bash-completion.svg?branch=master)](https://travis-ci.org/scop/bash-completion) ## Introduction bash-completion is a collection of command line command completions for the [Bash shell](https://www.gnu.org/software/bash/), collection of helper functions to assist in creating new completions, and set of facilities for loading completions automatically on demand, as well as installing them. ## Installation The easiest way to install this software is to use a package; refer to [Repology](https://repology.org/project/bash-completion) for a comprehensive list of operating system distributions, package names, and available versions. Depending on the package, you may still need to source it from either `/etc/bashrc` or `~/.bashrc` (or any other file sourcing those). You can do this by simply using: ```shell # Use bash-completion, if available [[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \ . /usr/share/bash-completion/bash_completion ``` (if you happen to have *only* bash >= 4.2 installed, see further if not) If you don't have the package readily available for your distribution, or you simply don't want to use one, you can install bash completion using the standard commands for GNU autotools packages: ```shell autoreconf -i # if not installing from prepared release tarball ./configure make # GNU make required make check # optional, requires python3 with pytest >= 3.6, pexpect make install # as root ``` These commands install the completions and helpers, as well as a `profile.d` script that loads `bash_completion` where appropriate. If your system does not use the `profile.d` directory (usually below `/etc`) mechanism—i.e. does not automatically source shell scripts in it—you can source the `$sysconfdir/profile.d/bash_completion.sh` script in `/etc/bashrc` or `~/.bashrc`. The `profile.d` script provides a configuration file hook that can be used to prevent loading `bash_completion` on per user basis when it's installed system wide. To do this: 1. Turn off programmable completion with `shopt -u progcomp` in `$XDG_CONFIG_HOME/bash_completion` (or `~/.config/bash_completion` if `$XDG_CONFIG_HOME` is not set) 2. Turn it back on (for example in `~/.bashrc`) if you want to use programmable completion for other purposes. ### macOS (OS X) If you're using macOS (formerly OS X), `/etc/bashrc` is apparently not sourced at all. In that case, you can put the `bash_completion` file in `/sw/etc` and add the following code to `~/.bash_profile`: ```shell if [ -f /sw/etc/bash_completion ]; then . /sw/etc/bash_completion fi ``` ## Troubleshooting If you find that a given function is producing errors or does not work as it should under certain circumstances when you attempt completion, try running `set -v` or `set -x` prior to attempting the completion again. This will produce useful debugging output that will aid us in fixing the problem if you are unable to do so yourself. Turn off the trace output by running either `set +v` or `set +x`. To debug dynamic loading of a completion, tracing needs to be turned on before the debugged completion is attempted the first time. The easiest way to do this is to start a new shell session, and to turn tracing on in it before doing anything else there. ## Known problems 1. There seems to be some issue with using the bash built-in `cd` within Makefiles. When invoked as `/bin/sh` within `Makefile`s, bash seems to have a problem changing directory via the `cd` command. A work-around for this is to define `SHELL=/bin/bash` within your `Makefile`. This is believed to be a bug in bash. 2. Many of the completion functions assume GNU versions of the various text utilities that they call (e.g. `grep`, `sed`, and `awk`). Your mileage may vary. ## FAQ **Q. The bash completion code inhibits some commands from completing on files with extensions that are legitimate in my environment. Do I have to disable completion for that command in order to complete on the files that I need to?** A. No. Use `M-/` to (in the words of the bash man page) attempt file name completion on the text to the left of the cursor. This will circumvent any file type restrictions put in place by the bash completion code. **Q. How can I override a completion shipped by bash-completion?** A. Install a local completion of your own appropriately for the desired command, and it will take precedence over the one shipped by us. See the next answer for details where to install it, if you are doing it on per user basis. If you want to do it system wide, you can install eagerly loaded files in `compatdir` (see a couple of questions further down for more info) and install a completion for the commands to override our completion for in them. If you want to use bash's default completion instead of one of ours, something like this should work (where `$cmd` is the command to override completion for): `complete -o default -o bashdefault $cmd` **Q. Where should I install my own local completions?** A. Put them in the `completions` subdir of `$BASH_COMPLETION_USER_DIR` (defaults to `$XDG_DATA_HOME/bash-completion` or `~/.local/share/bash-completion` if `$XDG_DATA_HOME` is not set) to have them loaded automatically on demand when the respective command is being completed. See also the next question's answer for considerations for these files' names, they apply here as well. Alternatively, you can write them directly in `~/.bash_completion` which is loaded eagerly by our main script. **Q. I author/maintain package X and would like to maintain my own completion code for this package. Where should I put it to be sure that interactive bash shells will find it and source it?** A. Install it in one of the directories pointed to by bash-completion's `pkgconfig` file variables. There are two alternatives: - The recommended directory is `completionsdir`, which you can get with `pkg-config --variable=completionsdir bash-completion`. From this directory, completions are automatically loaded on demand based on invoked commands' names, so be sure to name your completion file accordingly, and to include (for example) symbolic links in case the file provides completions for more than one command. - The other directory (which only present for backwards compatibility) is `compatdir` (get it with `pkg-config --variable=compatdir bash-completion`) from which files are loaded when `bash_completion` is loaded. For packages using GNU autotools the installation can be handled for example like this in `configure.ac`: ```m4 PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir], , bashcompdir="${sysconfdir}/bash_completion.d") AC_SUBST(bashcompdir) ``` ...accompanied by this in `Makefile.am`: ```makefile bashcompdir = @bashcompdir@ dist_bashcomp_DATA = # completion files go here ``` For cmake we ship the `bash-completion-config.cmake` and `bash-completion-config-version.cmake` files. Example usage: ```cmake find_package(bash-completion) if(BASH_COMPLETION_FOUND) message(STATUS "Using bash completion dir ${BASH_COMPLETION_COMPLETIONSDIR}") else() set (BASH_COMPLETION_COMPLETIONSDIR "/etc/bash_completion.d") message (STATUS "Using fallback bash completion dir ${BASH_COMPLETION_COMPLETIONSDIR}") endif() install(FILES your-completion-file DESTINATION ${BASH_COMPLETION_COMPLETIONSDIR}) ``` **Q. I use CVS in combination with passwordless SSH access to my remote repository. How can I have the `cvs` command complete on remotely checked-out files where relevant?** A. Define `$COMP_CVS_REMOTE`. Setting this to anything will result in the behaviour you would like. **Q. When I'm running a `./configure` script and completion returns a list of long options to me, some of these take a parameter, e.g. `--this-option=DESCRIPTION`.** **Running `./configure --help` lists these descriptions, but everything after the `=` is stripped when returning completions, so I don't know what kind of data is expected as a given option's parameter.** **Is there a way of getting `./configure` completion to return the entire option string, so that I can see what kind of data is required and then simply delete the descriptive text and add my own data?** A. Define `$COMP_CONFIGURE_HINTS`. Setting this to anything will result in the behaviour you would like. **Q. When doing tar completion on a file within a tar file like this:** ```shell tar tzvf foo.tar.gz ``` **the pathnames contained in the tar file are not displayed correctly. The slashes are removed, and everything looks like it's in a single directory. Why is this?** A. It's a choice we had to make. bash's programmable completion is limited in how it handles the list of possible completions it returns. Because the paths returned from within the tar file are likely not existing paths on the file system, `-o dirnames` must be passed to the `complete` built-in to make it treat them as such. However, then bash will append a space when completing on directories during pathname completion to the tar files themselves. It's more important to have proper completion of paths to tar files than it is to have completion for their contents, so this sacrifice was made and `-o filenames` is used with complete instead. If you would rather have correct path completion for tar file contents, define `$COMP_TAR_INTERNAL_PATHS` *before* sourcing `bash_completion`. **Q. When completing on a symlink to a directory, bash does not append the trailing `/` and I have to hit <Tab> again. I don't like this.** A. This has nothing to do with `bash_completion`. It's the default for completing symlinks to directories since bash 2.05a, and was added because sometimes you want to operate on the symlink itself, rather than what it points to. You can get the pre-2.05a behaviour back by putting `set mark-symlinked-directories on` in your `/etc/inputrc` or `~/.inputrc` file. **Q. Completion goes awry when I try to complete on something that contains a colon.** A. This is actually a 'feature' of bash. bash recognises a colon as starting a new completion token, which is often what you want when completing something like a `PATH` variable: ```shell export PATH=/bin:/sbin:/usr ``` Without the special treatment of the colon, the above wouldn't work without programmable completion, so it has long been a feature of the shell. Unfortunately, you don't want the colon to be treated as a special case when doing something like: ```shell man File::B ``` Here, the colons make bash think that it's completing a new token that begins with 'B'. Unfortunately, there's no way to turn this off. The only thing you can do is escape the colons with a backslash. **Q. Why is `rpm` completion so slow with `-q`?** A. Probably because the database is being queried every time and this uses a lot of memory. You can make this faster by pregenerating the list of installed packages on the system. Make sure you have a readable file called `/var/log/rpmpkgs`. It's generated by `/etc/cron.daily/rpm` on some Red Hat and Mandrake and derivative Linux systems. If you don't have such a cron job, make one: ```shell #!/bin/sh rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' 2>&1 \ | sort >/var/log/rpmpkgs ``` rpm completion will use this flat text file instead of the RPM database, unless it detects that the database has changed since the file was created, in which case it will still use the database to ensure accuracy. **Q. bash-completion interferes with my `command_not_found_handler` function!** A. If your `command_not_found_handler` function is not intended to address (possibly missing) commands invoked during bash programmable completion functions, you can account for this by, for example, testing if the `$COMP_`\* variables are set and taking appropriate bypass or other action. **Q. Can tab completion be made even easier?** A. The `readline(3)` library offers a few settings that can make tab completion easier (or at least different) to use. For example, try putting the following in either `/etc/inputrc` or `~/.inputrc`: ```inputrc set show-all-if-ambiguous on ``` This will allow single tab completion as opposed to requiring a double tab. This makes things much more pleasant, in our opinion. ```inputrc set visible-stats on ``` This will suffix each returned file completion with a character denoting its type, in a similar way to `ls(1)` with `-F` or `--classify`. ```inputrc set page-completions off ``` This turns off the use of the internal pager when returning long completion lists. **Q. Is bash the be-all-and-end-all of completion as far as shells go?** A. Absolutely not. zsh has an extremely sophisticated completion system that offers many features absent from the bash implementation. Its users often cannot resist pointing this out. More information can be found at . bash-completion-2.11/bash-completion-config-version.cmake.in000066400000000000000000000004011370676621500241520ustar00rootroot00000000000000set (PACKAGE_VERSION "@VERSION@") if (NOT ${PACKAGE_FIND_VERSION} VERSION_GREATER ${PACKAGE_VERSION}) set (PACKAGE_VERSION_COMPATIBLE 1) if (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION}) set (PACKAGE_VERSION_EXACT 1) endif () endif () bash-completion-2.11/bash-completion-config.cmake.in000066400000000000000000000006141370676621500224750ustar00rootroot00000000000000# config file for bash-completion # https://github.com/scop/bash-completion set (BASH_COMPLETION_VERSION "@VERSION@") set (BASH_COMPLETION_PREFIX "@prefix@") set (BASH_COMPLETION_COMPATDIR "@sysconfdir@/bash_completion.d") set (BASH_COMPLETION_COMPLETIONSDIR "@datadir@/@PACKAGE@/completions") set (BASH_COMPLETION_HELPERSDIR "@datadir@/@PACKAGE@/helpers") set (BASH_COMPLETION_FOUND "TRUE") bash-completion-2.11/bash-completion.pc.in000066400000000000000000000005061370676621500205540ustar00rootroot00000000000000prefix=@prefix@ datadir=@datadir@ sysconfdir=@sysconfdir@ compatdir=${sysconfdir}/bash_completion.d completionsdir=${datadir}/@PACKAGE@/completions helpersdir=${datadir}/@PACKAGE@/helpers Name: @PACKAGE@ Description: programmable completion for the bash shell URL: https://github.com/scop/bash-completion Version: @VERSION@ bash-completion-2.11/bash_completion000066400000000000000000002250541370676621500176370ustar00rootroot00000000000000# -*- shell-script -*- # # bash_completion - programmable completion functions for bash 4.2+ # # Copyright © 2006-2008, Ian Macdonald # © 2009-2020, Bash Completion Maintainers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # # The latest version of this software can be obtained here: # # https://github.com/scop/bash-completion BASH_COMPLETION_VERSINFO=(2 11) if [[ $- == *v* ]]; then BASH_COMPLETION_ORIGINAL_V_VALUE="-v" else BASH_COMPLETION_ORIGINAL_V_VALUE="+v" fi if [[ ${BASH_COMPLETION_DEBUG-} ]]; then set -v else set +v fi # Blacklisted completions, causing problems with our code. # _blacklist_glob='@(acroread.sh)' # Turn on extended globbing and programmable completion shopt -s extglob progcomp # A lot of the following one-liners were taken directly from the # completion examples provided with the bash 2.04 source distribution # start of section containing compspecs that can be handled within bash # user commands see only users complete -u groups slay w sux # bg completes with stopped jobs complete -A stopped -P '"%' -S '"' bg # other job commands complete -j -P '"%' -S '"' fg jobs disown # readonly and unset complete with shell variables complete -v readonly unset # set completes with set options complete -A setopt set # shopt completes with shopt options complete -A shopt shopt # helptopics complete -A helptopic help # unalias completes with aliases complete -a unalias # type and which complete on commands complete -c command type which # builtin completes on builtins complete -b builtin # start of section containing completion functions called by other functions # Check if we're running on the given userland # @param $1 userland to check for _userland() { local userland=$(uname -s) [[ $userland == @(Linux|GNU/*) ]] && userland=GNU [[ $userland == "$1" ]] } # This function sets correct SysV init directories # _sysvdirs() { sysvdirs=() [[ -d /etc/rc.d/init.d ]] && sysvdirs+=(/etc/rc.d/init.d) [[ -d /etc/init.d ]] && sysvdirs+=(/etc/init.d) # Slackware uses /etc/rc.d [[ -f /etc/slackware-version ]] && sysvdirs=(/etc/rc.d) return 0 } # This function checks whether we have a given program on the system. # _have() { # Completions for system administrator commands are installed as well in # case completion is attempted via `sudo command ...'. PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &>/dev/null } # Backwards compatibility for compat completions that use have(). # @deprecated should no longer be used; generally not needed with dynamically # loaded completions, and _have is suitable for runtime use. have() { unset -v have _have $1 && have=yes } # This function checks whether a given readline variable # is `on'. # _rl_enabled() { [[ "$(bind -v)" == *$1+([[:space:]])on* ]] } # This function shell-quotes the argument quote() { local quoted=${1//\'/\'\\\'\'} printf "'%s'" "$quoted" } # @see _quote_readline_by_ref() quote_readline() { local ret _quote_readline_by_ref "$1" ret printf %s "$ret" } # quote_readline() # This function shell-dequotes the argument dequote() { eval printf %s "$1" 2>/dev/null } # 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 '_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 _upvar() { echo "bash_completion: $FUNCNAME: deprecated function," \ "use _upvars instead" >&2 if unset -v "$1"; then # Unset & validate varname if (($# == 2)); then eval $1=\"\$2\" # Return single value else eval $1=\(\"\$"{@:2}"\"\) # Return array fi fi } # Assign variables one scope above the caller # Usage: local varname [varname ...] && # _upvars [-v varname value] | [-aN varname [value ...]] ... # Available OPTIONS: # -aN Assign next N values to varname as array # -v Assign single value to varname # Return: 1 if error occurs # See: https://fvue.nl/wiki/Bash:_Passing_variables_by_reference _upvars() { if ! (($#)); then echo "bash_completion: $FUNCNAME: usage: $FUNCNAME" \ "[-v varname value] | [-aN varname [value ...]] ..." >&2 return 2 fi while (($#)); do case $1 in -a*) # Error checking [[ ${1#-a} ]] || { echo "bash_completion: $FUNCNAME:" \ "\`$1': missing number specifier" >&2 return 1 } printf %d "${1#-a}" &>/dev/null || { echo bash_completion: \ "$FUNCNAME: \`$1': invalid number specifier" >&2 return 1 } # Assign array of -aN elements [[ "$2" ]] && unset -v "$2" && eval $2=\(\"\$"{@:3:${1#-a}}"\"\) && shift $((${1#-a} + 2)) || { echo bash_completion: \ "$FUNCNAME: \`$1${2+ }$2': missing argument(s)" \ >&2 return 1 } ;; -v) # Assign single value [[ "$2" ]] && unset -v "$2" && eval $2=\"\$3\" && shift 3 || { echo "bash_completion: $FUNCNAME: $1:" \ "missing argument(s)" >&2 return 1 } ;; *) echo "bash_completion: $FUNCNAME: $1: invalid option" >&2 return 1 ;; esac done } # Reassemble command line words, excluding specified characters from the # list of word completion separators (COMP_WORDBREAKS). # @param $1 chars 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 here. # @param $2 words Name of variable to return words to # @param $3 cword Name of variable to return cword to # __reassemble_comp_words_by_ref() { local exclude i j line ref # Exclude word separator characters? if [[ $1 ]]; then # Yes, exclude word separator characters; # Exclude only those characters, which were really included exclude="[${1//[^$COMP_WORDBREAKS]/}]" fi # Default to cword unchanged printf -v "$3" %s "$COMP_CWORD" # Are characters excluded which were former included? if [[ -v exclude ]]; then # Yes, list of word completion separators has shrunk; line=$COMP_LINE # Re-assemble words to complete for ((i = 0, j = 0; i < ${#COMP_WORDS[@]}; i++, j++)); do # Is current word not word 0 (the command itself) and is word not # empty and is word made up of just word separator characters to # be excluded and is current word not preceded by whitespace in # original line? while [[ $i -gt 0 && ${COMP_WORDS[i]} == +($exclude) ]]; do # Is word separator not preceded by whitespace in original line # and are we not going to append to word 0 (the command # itself), then append to current word. [[ $line != [[:blank:]]* ]] && ((j >= 2)) && ((j--)) # Append word separator to current or new word ref="$2[$j]" printf -v "$ref" %s "${!ref-}${COMP_WORDS[i]}" # Indicate new cword ((i == COMP_CWORD)) && printf -v "$3" %s "$j" # Remove optional whitespace + word separator from line copy line=${line#*"${COMP_WORDS[i]}"} # Start new word if word separator in original line is # followed by whitespace. [[ $line == [[:blank:]]* ]] && ((j++)) # Indicate next word if available, else end *both* while and # for loop ((i < ${#COMP_WORDS[@]} - 1)) && ((i++)) || break 2 done # Append word to current word ref="$2[$j]" printf -v "$ref" %s "${!ref-}${COMP_WORDS[i]}" # Remove optional whitespace + word from line copy line=${line#*"${COMP_WORDS[i]}"} # Indicate new cword ((i == COMP_CWORD)) && printf -v "$3" %s "$j" done ((i == COMP_CWORD)) && printf -v "$3" %s "$j" else # No, list of word completions separators hasn't changed; for i in "${!COMP_WORDS[@]}"; do printf -v "$2[i]" %s "${COMP_WORDS[i]}" done fi } # __reassemble_comp_words_by_ref() # @param $1 exclude 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 words Name of variable to return words to # @param $3 cword Name of variable to return cword to # @param $4 cur Name of variable to return current word to complete to # @see __reassemble_comp_words_by_ref() __get_cword_at_cursor_by_ref() { local cword words=() __reassemble_comp_words_by_ref "$1" words cword local i cur="" index=$COMP_POINT lead=${COMP_LINE:0:COMP_POINT} # Cursor not at position 0 and not leaded by just space(s)? if [[ $index -gt 0 && ($lead && ${lead//[[:space:]]/}) ]]; then cur=$COMP_LINE 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 # Clear $cur if just space(s) [[ $cur && ! ${cur//[[:space:]]/} ]] && cur= # Zero $index if negative ((index < 0)) && index=0 fi local "$2" "$3" "$4" && _upvars -a${#words[@]} $2 ${words+"${words[@]}"} \ -v $3 "$cword" -v $4 "${cur:0:index}" } # Get the word to complete and optional previous words. # 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 --------> ^ # Also one is able to cross over possible wordbreak characters. # Usage: _get_comp_words_by_ref [OPTIONS] [VARNAMES] # Available VARNAMES: # cur Return cur via $cur # prev Return prev via $prev # words Return words via $words # cword Return cword via $cword # # Available OPTIONS: # -n EXCLUDE 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 -n option in this case. # -c VARNAME Return cur via $VARNAME # -p VARNAME Return prev via $VARNAME # -w VARNAME Return words via $VARNAME # -i VARNAME Return cword via $VARNAME # # Example usage: # # $ _get_comp_words_by_ref -n : cur prev # _get_comp_words_by_ref() { local exclude flag i OPTIND=1 local cur cword words=() local upargs=() upvars=() vcur vcword vprev vwords while getopts "c:i:n:p:w:" flag "$@"; do case $flag in c) vcur=$OPTARG ;; i) vcword=$OPTARG ;; n) exclude=$OPTARG ;; p) vprev=$OPTARG ;; w) vwords=$OPTARG ;; *) echo "bash_completion: $FUNCNAME: usage error" >&2 return 1 ;; esac done while [[ $# -ge $OPTIND ]]; do case ${!OPTIND} in cur) vcur=cur ;; prev) vprev=prev ;; cword) vcword=cword ;; words) vwords=words ;; *) echo "bash_completion: $FUNCNAME: \`${!OPTIND}':" \ "unknown argument" >&2 return 1 ;; esac ((OPTIND += 1)) done __get_cword_at_cursor_by_ref "${exclude-}" words cword cur [[ -v vcur ]] && { upvars+=("$vcur") upargs+=(-v $vcur "$cur") } [[ -v vcword ]] && { upvars+=("$vcword") upargs+=(-v $vcword "$cword") } [[ -v vprev && $cword -ge 1 ]] && { upvars+=("$vprev") upargs+=(-v $vprev "${words[cword - 1]}") } [[ -v vwords ]] && { upvars+=("$vwords") upargs+=(-a${#words[@]} $vwords ${words+"${words[@]}"}) } ((${#upvars[@]})) && local "${upvars[@]}" && _upvars "${upargs[@]}" } # 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 Use `_get_comp_words_by_ref cur' instead # @see _get_comp_words_by_ref() _get_cword() { local LC_CTYPE=C local cword words __reassemble_comp_words_by_ref "${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_cword() # 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 Use `_get_comp_words_by_ref cur prev' instead # @see _get_comp_words_by_ref() # _get_pword() { if ((COMP_CWORD >= 1)); then _get_cword "${@:-}" 1 fi } # If the word-to-complete contains a colon (:), left-trim COMPREPLY items with # word-to-complete. # With a colon in COMP_WORDBREAKS, words containing # colons are always completed as entire words if the word to complete contains # a colon. This function fixes this, by removing the colon-containing-prefix # from COMPREPLY items. # The preferred solution is to remove the colon (:) from COMP_WORDBREAKS in # your .bashrc: # # # Remove colon (:) from list of word completion separators # COMP_WORDBREAKS=${COMP_WORDBREAKS//:} # # See also: Bash FAQ - E13) Why does filename completion misbehave if a colon # appears in the filename? - https://tiswww.case.edu/php/chet/bash/FAQ # @param $1 current word to complete (cur) # @modifies global array $COMPREPLY # __ltrim_colon_completions() { if [[ $1 == *:* && $COMP_WORDBREAKS == *:* ]]; then # Remove colon-word prefix from COMPREPLY items local colon_word=${1%"${1##*:}"} local i=${#COMPREPLY[*]} while ((i-- > 0)); do COMPREPLY[i]=${COMPREPLY[i]#"$colon_word"} done fi } # __ltrim_colon_completions() # This function quotes the argument in a way so that readline dequoting # results in the original argument. This is necessary for at least # `compgen' which requires its arguments quoted/escaped: # # $ ls "a'b/" # c # $ compgen -f "a'b/" # Wrong, doesn't return output # $ compgen -f "a\'b/" # Good # a\'b/c # # See also: # - https://lists.gnu.org/archive/html/bug-bash/2009-03/msg00155.html # - https://www.mail-archive.com/bash-completion-devel@lists.alioth.debian.org/msg01944.html # @param $1 Argument to quote # @param $2 Name of variable to return result to _quote_readline_by_ref() { if [[ $1 == \'* ]]; then # Leave out first character printf -v $2 %s "${1:1}" else printf -v $2 %q "$1" fi # If result becomes quoted like this: $'string', re-evaluate in order to # drop the additional quoting. See also: # https://www.mail-archive.com/bash-completion-devel@lists.alioth.debian.org/msg01942.html [[ ${!2} == \$* ]] && eval $2=${!2} } # _quote_readline_by_ref() # This function performs file and directory completion. It's better than # simply using 'compgen -f', because it honours spaces in filenames. # @param $1 If `-d', complete only on directories. Otherwise filter/pick only # completions with `.$1' and the uppercase version of it as file # extension. # _filedir() { local IFS=$'\n' _tilde "${cur-}" || return local -a toks local reset arg=${1-} if [[ $arg == -d ]]; then reset=$(shopt -po noglob) set -o noglob toks=($(compgen -d -- "${cur-}")) IFS=' ' $reset IFS=$'\n' else local quoted _quote_readline_by_ref "${cur-}" quoted # Munge xspec to contain uppercase version too # https://lists.gnu.org/archive/html/bug-bash/2010-09/msg00036.html # news://news.gmane.io/4C940E1C.1010304@case.edu local xspec=${arg:+"!*.@($arg|${arg^^})"} plusdirs=() # Use plusdirs to get dir completions if we have a xspec; if we don't, # there's no need, dirs come along with other completions. Don't use # plusdirs quite yet if fallback is in use though, in order to not ruin # the fallback condition with the "plus" dirs. local opts=(-f -X "$xspec") [[ $xspec ]] && plusdirs=(-o plusdirs) [[ ${COMP_FILEDIR_FALLBACK-} || -z ${plusdirs-} ]] || opts+=("${plusdirs[@]}") reset=$(shopt -po noglob) set -o noglob toks+=($(compgen "${opts[@]}" -- $quoted)) IFS=' ' $reset IFS=$'\n' # Try without filter if it failed to produce anything and configured to [[ -n ${COMP_FILEDIR_FALLBACK-} && -n $arg && ${#toks[@]} -lt 1 ]] && { reset=$(shopt -po noglob) set -o noglob toks+=($(compgen -f ${plusdirs+"${plusdirs[@]}"} -- $quoted)) IFS=' ' $reset IFS=$'\n' } fi if ((${#toks[@]} != 0)); then # 2>/dev/null for direct invocation, e.g. in the _filedir unit test compopt -o filenames 2>/dev/null COMPREPLY+=("${toks[@]}") fi } # _filedir() # This function splits $cur=--foo=bar into $prev=--foo, $cur=bar, making it # easier to support both "--foo bar" and "--foo=bar" style completions. # `=' should have been removed from COMP_WORDBREAKS when setting $cur for # this to be useful. # Returns 0 if current option was split, 1 otherwise. # _split_longopt() { if [[ $cur == --?*=* ]]; then # Cut also backslash before '=' in case it ended up there # for some reason. prev="${cur%%?(\\)=*}" cur="${cur#*=}" return 0 fi return 1 } # Complete variables. # @return True (0) if variables were completed, # False (> 0) if not. _variables() { if [[ $cur =~ ^(\$(\{[!#]?)?)([A-Za-z0-9_]*)$ ]]; then # Completing $var / ${var / ${!var / ${#var if [[ $cur == '${'* ]]; then local arrs vars vars=($(compgen -A variable -P ${BASH_REMATCH[1]} -S '}' -- ${BASH_REMATCH[3]})) arrs=($(compgen -A arrayvar -P ${BASH_REMATCH[1]} -S '[' -- ${BASH_REMATCH[3]})) if ((${#vars[@]} == 1 && ${#arrs[@]} != 0)); then # Complete ${arr with ${array[ if there is only one match, and that match is an array variable compopt -o nospace COMPREPLY+=(${arrs[*]}) else # Complete ${var with ${variable} COMPREPLY+=(${vars[*]}) fi else # Complete $var with $variable COMPREPLY+=($(compgen -A variable -P '$' -- "${BASH_REMATCH[3]}")) fi return 0 elif [[ $cur =~ ^(\$\{[#!]?)([A-Za-z0-9_]*)\[([^]]*)$ ]]; then # Complete ${array[i with ${array[idx]} local IFS=$'\n' COMPREPLY+=($(compgen -W '$(printf %s\\n "${!'${BASH_REMATCH[2]}'[@]}")' \ -P "${BASH_REMATCH[1]}${BASH_REMATCH[2]}[" -S ']}' -- "${BASH_REMATCH[3]}")) # Complete ${arr[@ and ${arr[* if [[ ${BASH_REMATCH[3]} == [@*] ]]; then COMPREPLY+=("${BASH_REMATCH[1]}${BASH_REMATCH[2]}[${BASH_REMATCH[3]}]}") fi __ltrim_colon_completions "$cur" # array indexes may have colons return 0 elif [[ $cur =~ ^\$\{[#!]?[A-Za-z0-9_]*\[.*\]$ ]]; then # Complete ${array[idx] with ${array[idx]} COMPREPLY+=("$cur}") __ltrim_colon_completions "$cur" return 0 else case ${prev-} in TZ) cur=/usr/share/zoneinfo/$cur _filedir for i in "${!COMPREPLY[@]}"; do if [[ ${COMPREPLY[i]} == *.tab ]]; then unset 'COMPREPLY[i]' continue elif [[ -d ${COMPREPLY[i]} ]]; then COMPREPLY[i]+=/ compopt -o nospace fi COMPREPLY[i]=${COMPREPLY[i]#/usr/share/zoneinfo/} done return 0 ;; TERM) _terms return 0 ;; LANG | LC_*) COMPREPLY=($(compgen -W '$(locale -a 2>/dev/null)' \ -- "$cur")) return 0 ;; esac fi return 1 } # 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 _get_comp_words_by_ref -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 _split_longopt, implies -n = # @return True (0) if completion needs further processing, # False (> 0) no further processing is necessary. # _init_completion() { local exclude="" flag outx errx inx OPTIND=1 while getopts "n:e:o:i:s" flag "$@"; do case $flag in n) exclude+=$OPTARG ;; e) errx=$OPTARG ;; o) outx=$OPTARG ;; i) inx=$OPTARG ;; s) split=false exclude+== ;; *) echo "bash_completion: $FUNCNAME: usage error" >&2 return 1 ;; esac done COMPREPLY=() local redir="@(?([0-9])<|?([0-9&])>?(>)|>&)" _get_comp_words_by_ref -n "$exclude<>&" cur prev words cword # Complete variable names. _variables && return 1 # Complete on files if current is a redirect possibly followed by a # filename, e.g. ">foo", or previous is a "bare" redirect, e.g. ">". # shellcheck disable=SC2053 if [[ $cur == $redir* || ${prev-} == $redir ]]; then local xspec case $cur in 2'>'*) xspec=${errx-} ;; *'>'*) xspec=${outx-} ;; *'<'*) xspec=${inx-} ;; *) case $prev in 2'>'*) xspec=${errx-} ;; *'>'*) xspec=${outx-} ;; *'<'*) xspec=${inx-} ;; esac ;; esac cur="${cur##$redir}" _filedir $xspec return 1 fi # Remove all redirections so completions don't have to deal with them. local i skip for ((i = 1; i < ${#words[@]}; )); do if [[ ${words[i]} == $redir* ]]; then # If "bare" redirect, remove also the next word (skip=2). # shellcheck disable=SC2053 [[ ${words[i]} == $redir ]] && skip=2 || skip=1 words=("${words[@]:0:i}" "${words[@]:i+skip}") ((i <= cword)) && ((cword -= skip)) else ((i++)) fi done ((cword <= 0)) && return 1 prev=${words[cword - 1]} [[ ${split-} ]] && _split_longopt && split=true return 0 } # Helper function for _parse_help and _parse_usage. __parse_options() { local option option2 i IFS=$' \t\n,/|' # Take first found long option, or first one (short) if not found. option= local -a array=($1) for i in "${array[@]}"; do case "$i" in ---*) break ;; --?*) option=$i break ;; -?*) [[ $option ]] || option=$i ;; *) break ;; esac done [[ $option ]] || return 0 IFS=$' \t\n' # affects parsing of the regexps below... # Expand --[no]foo to --foo and --nofoo etc if [[ $option =~ (\[((no|dont)-?)\]). ]]; then option2=${option/"${BASH_REMATCH[1]}"/} option2=${option2%%[<{().[]*} printf '%s\n' "${option2/=*/=}" option=${option/"${BASH_REMATCH[1]}"/"${BASH_REMATCH[2]}"} fi option=${option%%[<{().[]*} printf '%s\n' "${option/=*/=}" } # 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) # _parse_help() { eval local cmd="$(quote "$1")" local line { case $cmd in -) cat ;; *) LC_ALL=C "$(dequote "$cmd")" ${2:---help} 2>&1 ;; esac } | while read -r line; do [[ $line == *([[:blank:]])-* ]] || continue # transform "-f FOO, --foo=FOO" to "-f , --foo=FOO" etc while [[ $line =~ \ ((^|[^-])-[A-Za-z0-9?][[:space:]]+)\[?[A-Z0-9]+([,_-]+[A-Z0-9]+)?(\.\.+)?\]? ]]; do line=${line/"${BASH_REMATCH[0]}"/"${BASH_REMATCH[1]}"} done __parse_options "${line// or /, }" done } # 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) # _parse_usage() { eval local cmd="$(quote "$1")" local line match option i char { case $cmd in -) cat ;; *) LC_ALL=C "$(dequote "$cmd")" ${2:---usage} 2>&1 ;; esac } | while read -r line; do while [[ $line =~ \[[[:space:]]*(-[^]]+)[[:space:]]*\] ]]; do match=${BASH_REMATCH[0]} option=${BASH_REMATCH[1]} case $option in -?(\[)+([a-zA-Z0-9?])) # Treat as bundled short options for ((i = 1; i < ${#option}; i++)); do char=${option:i:1} [[ $char != '[' ]] && printf '%s\n' -$char done ;; *) __parse_options "$option" ;; esac line=${line#*"$match"} done done } # This function completes on signal names (minus the SIG prefix) # @param $1 prefix _signals() { local -a sigs=($(compgen -P "${1-}" -A signal "SIG${cur#${1-}}")) COMPREPLY+=("${sigs[@]/#${1-}SIG/${1-}}") } # This function completes on known mac addresses # _mac_addresses() { local re='\([A-Fa-f0-9]\{2\}:\)\{5\}[A-Fa-f0-9]\{2\}' local PATH="$PATH:/sbin:/usr/sbin" # Local interfaces # - ifconfig on Linux: HWaddr or ether # - ifconfig on FreeBSD: ether # - ip link: link/ether COMPREPLY+=($( { LC_ALL=C ifconfig -a || ip link show } 2>/dev/null | command sed -ne \ "s/.*[[:space:]]HWaddr[[:space:]]\{1,\}\($re\)[[:space:]].*/\1/p" -ne \ "s/.*[[:space:]]HWaddr[[:space:]]\{1,\}\($re\)[[:space:]]*$/\1/p" -ne \ "s|.*[[:space:]]\(link/\)\{0,1\}ether[[:space:]]\{1,\}\($re\)[[:space:]].*|\2|p" -ne \ "s|.*[[:space:]]\(link/\)\{0,1\}ether[[:space:]]\{1,\}\($re\)[[:space:]]*$|\2|p" )) # ARP cache COMPREPLY+=($({ arp -an || ip neigh show } 2>/dev/null | command sed -ne \ "s/.*[[:space:]]\($re\)[[:space:]].*/\1/p" -ne \ "s/.*[[:space:]]\($re\)[[:space:]]*$/\1/p")) # /etc/ethers COMPREPLY+=($(command sed -ne \ "s/^[[:space:]]*\($re\)[[:space:]].*/\1/p" /etc/ethers 2>/dev/null)) COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) __ltrim_colon_completions "$cur" } # This function completes on configured network interfaces # _configured_interfaces() { if [[ -f /etc/debian_version ]]; then # Debian system COMPREPLY=($(compgen -W "$(command sed -ne 's|^iface \([^ ]\{1,\}\).*$|\1|p' \ /etc/network/interfaces /etc/network/interfaces.d/* 2>/dev/null)" \ -- "$cur")) elif [[ -f /etc/SuSE-release ]]; then # SuSE system COMPREPLY=($(compgen -W "$(printf '%s\n' \ /etc/sysconfig/network/ifcfg-* | command sed -ne 's|.*ifcfg-\([^*].*\)$|\1|p')" -- "$cur")) elif [[ -f /etc/pld-release ]]; then # PLD Linux COMPREPLY=($(compgen -W "$(command ls -B \ /etc/sysconfig/interfaces | command sed -ne 's|.*ifcfg-\([^*].*\)$|\1|p')" -- "$cur")) else # Assume Red Hat COMPREPLY=($(compgen -W "$(printf '%s\n' \ /etc/sysconfig/network-scripts/ifcfg-* | command sed -ne 's|.*ifcfg-\([^*].*\)$|\1|p')" -- "$cur")) fi } # Local IP addresses. # -4: IPv4 addresses only (default) # -6: IPv6 addresses only # -a: All addresses # _ip_addresses() { local n case ${1-} in -a) n='6\?' ;; -6) n='6' ;; *) n= ;; esac local PATH=$PATH:/sbin local addrs=$({ LC_ALL=C ifconfig -a || ip addr show } 2>/dev/null | command sed -e 's/[[:space:]]addr:/ /' -ne \ "s|.*inet${n}[[:space:]]\{1,\}\([^[:space:]/]*\).*|\1|p") COMPREPLY+=($(compgen -W "$addrs" -- "${cur-}")) } # This function completes on available kernels # _kernel_versions() { COMPREPLY=($(compgen -W '$(command ls /lib/modules)' -- "$cur")) } # This function completes on all available network interfaces # -a: restrict to active interfaces only # -w: restrict to wireless interfaces only # _available_interfaces() { local PATH=$PATH:/sbin COMPREPLY=($({ if [[ ${1:-} == -w ]]; then iwconfig elif [[ ${1:-} == -a ]]; then ifconfig || ip link show up else ifconfig -a || ip link show fi } 2>/dev/null | awk \ '/^[^ \t]/ { if ($1 ~ /^[0-9]+:/) { print $2 } else { print $1 } }')) COMPREPLY=($(compgen -W '${COMPREPLY[@]/%[[:punct:]]/}' -- "$cur")) } # Echo number of CPUs, falling back to 1 on failure. _ncpus() { local var=NPROCESSORS_ONLN [[ $OSTYPE == *linux* ]] && var=_$var local n=$(getconf $var 2>/dev/null) printf %s ${n:-1} } # Perform tilde (~) completion # @return True (0) if completion needs further processing, # False (> 0) if tilde is followed by a valid username, completions # are put in COMPREPLY and no further processing is necessary. _tilde() { local result=0 if [[ ${1-} == \~* && $1 != */* ]]; then # Try generate ~username completions COMPREPLY=($(compgen -P '~' -u -- "${1#\~}")) result=${#COMPREPLY[@]} # 2>/dev/null for direct invocation, e.g. in the _tilde unit test ((result > 0)) && compopt -o filenames 2>/dev/null fi return $result } # 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. # Example usage: # # $ v="~"; __expand_tilde_by_ref v; echo "$v" # # Example output: # # v output # -------- ---------------- # ~ /home/user # ~foo/bar /home/foo/bar # ~foo/$HOME /home/foo/$HOME # ~foo/a b /home/foo/a b # ~foo/* /home/foo/* # # @param $1 Name of variable (not the value of the variable) to expand __expand_tilde_by_ref() { if [[ ${!1-} == \~* ]]; then eval $1="$(printf ~%q "${!1#\~}")" fi } # __expand_tilde_by_ref() # This function expands tildes in pathnames # _expand() { # Expand ~username type directory specifications. We want to expand # ~foo/... to /home/foo/... to avoid problems when $cur starting with # a tilde is fed to commands and ending up quoted instead of expanded. case ${cur-} in ~*/*) __expand_tilde_by_ref cur ;; ~*) _tilde "$cur" || eval COMPREPLY[0]="$(printf ~%q "${COMPREPLY[0]#\~}")" return ${#COMPREPLY[@]} ;; esac } # Process ID related functions. # for AIX and Solaris we use X/Open syntax, BSD for others. if [[ $OSTYPE == *@(solaris|aix)* ]]; then # This function completes on process IDs. _pids() { COMPREPLY=($(compgen -W '$(command ps -efo pid | command sed 1d)' -- "$cur")) } _pgids() { COMPREPLY=($(compgen -W '$(command ps -efo pgid | command sed 1d)' -- "$cur")) } _pnames() { COMPREPLY=($(compgen -X '' -W '$(command ps -efo comm | \ command sed -e 1d -e "s:.*/::" -e "s/^-//" | sort -u)' -- "$cur")) } else _pids() { COMPREPLY=($(compgen -W '$(command ps axo pid=)' -- "$cur")) } _pgids() { COMPREPLY=($(compgen -W '$(command ps axo pgid=)' -- "$cur")) } # @param $1 if -s, don't try to avoid truncated command names _pnames() { local -a procs if [[ ${1-} == -s ]]; then procs=($(command ps axo comm | command sed -e 1d)) else local line i=-1 ifs=$IFS IFS=$'\n' local -a psout=($(command ps axo command=)) IFS=$ifs for line in "${psout[@]}"; do if ((i == -1)); then # First line, see if it has COMMAND column header. For example # the busybox ps does that, i.e. doesn't respect axo command= if [[ $line =~ ^(.*[[:space:]])COMMAND([[:space:]]|$) ]]; then # It does; store its index. i=${#BASH_REMATCH[1]} else # Nope, fall through to "regular axo command=" parsing. break fi else # line=${line:i} # take command starting from found index line=${line%% *} # trim arguments procs+=($line) fi done if ((i == -1)); then # Regular axo command= parsing for line in "${psout[@]}"; do if [[ $line =~ ^[[(](.+)[])]$ ]]; then procs+=(${BASH_REMATCH[1]}) else line=${line%% *} # trim arguments line=${line##@(*/|-)} # trim leading path and - procs+=($line) fi done fi fi COMPREPLY=($(compgen -X "" -W '${procs[@]}' -- "$cur")) } fi # This function completes on user IDs # _uids() { if type getent &>/dev/null; then COMPREPLY=($(compgen -W '$(getent passwd | cut -d: -f3)' -- "$cur")) elif type perl &>/dev/null; then COMPREPLY=($(compgen -W '$(perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"')' -- "$cur")) else # make do with /etc/passwd COMPREPLY=($(compgen -W '$(cut -d: -f3 /etc/passwd)' -- "$cur")) fi } # This function completes on group IDs # _gids() { if type getent &>/dev/null; then COMPREPLY=($(compgen -W '$(getent group | cut -d: -f3)' -- "$cur")) elif type perl &>/dev/null; then COMPREPLY=($(compgen -W '$(perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"')' -- "$cur")) else # make do with /etc/group COMPREPLY=($(compgen -W '$(cut -d: -f3 /etc/group)' -- "$cur")) fi } # Glob for matching various backup files. # _backup_glob='@(#*#|*@(~|.@(bak|orig|rej|swp|dpkg*|rpm@(orig|new|save))))' # Complete on xinetd services # _xinetd_services() { local xinetddir=${BASHCOMP_XINETDDIR:-/etc/xinetd.d} if [[ -d $xinetddir ]]; then local IFS=$' \t\n' reset=$(shopt -p nullglob) shopt -s nullglob local -a svcs=($(printf '%s\n' $xinetddir/!($_backup_glob))) $reset ((!${#svcs[@]})) || COMPREPLY+=($(compgen -W '${svcs[@]#$xinetddir/}' -- "${cur-}")) fi } # This function completes on services # _services() { local sysvdirs _sysvdirs local IFS=$' \t\n' reset=$(shopt -p nullglob) shopt -s nullglob COMPREPLY=( $(printf '%s\n' ${sysvdirs[0]}/!($_backup_glob|functions|README))) $reset COMPREPLY+=($({ systemctl list-units --full --all || systemctl list-unit-files } 2>/dev/null | awk '$1 ~ /\.service$/ { sub("\\.service$", "", $1); print $1 }')) if [[ -x /sbin/upstart-udev-bridge ]]; then COMPREPLY+=($(initctl list 2>/dev/null | cut -d' ' -f1)) fi COMPREPLY=($(compgen -W '${COMPREPLY[@]#${sysvdirs[0]}/}' -- "$cur")) } # This completes on a list of all available service scripts for the # 'service' command and/or the SysV init.d directory, followed by # that script's available commands # _service() { local cur prev words cword _init_completion || return # don't complete past 2nd token ((cword > 2)) && return if [[ $cword -eq 1 && $prev == ?(*/)service ]]; then _services [[ -e /etc/mandrake-release ]] && _xinetd_services else local sysvdirs _sysvdirs COMPREPLY=($(compgen -W '`command sed -e "y/|/ /" \ -ne "s/^.*\(U\|msg_u\)sage.*{\(.*\)}.*$/\2/p" \ ${sysvdirs[0]}/${prev##*/} 2>/dev/null` start stop' -- "$cur")) fi } && complete -F _service service _sysvdirs for svcdir in "${sysvdirs[@]}"; do for svc in $svcdir/!($_backup_glob); do [[ -x $svc ]] && complete -F _service $svc done done unset svc svcdir sysvdirs # This function completes on modules # _modules() { local modpath modpath=/lib/modules/$1 COMPREPLY=($(compgen -W "$(command ls -RL $modpath 2>/dev/null | command sed -ne 's/^\(.*\)\.k\{0,1\}o\(\.[gx]z\)\{0,1\}$/\1/p')" -- "$cur")) } # This function completes on installed modules # _installed_modules() { COMPREPLY=($(compgen -W "$(PATH="$PATH:/sbin" lsmod | awk '{if (NR != 1) print $1}')" -- "$1")) } # This function completes on user or user:group format; as for chown and cpio. # # The : must be added manually; it will only complete usernames initially. # The legacy user.group format is not supported. # # @param $1 If -u, only return users/groups the user has access to in # context of current completion. _usergroup() { if [[ $cur == *\\\\* || $cur == *:*:* ]]; then # Give up early on if something seems horribly wrong. return elif [[ $cur == *\\:* ]]; then # Completing group after 'user\:gr'. # Reply with a list of groups prefixed with 'user:', readline will # escape to the colon. local prefix prefix=${cur%%*([^:])} prefix=${prefix//\\/} local mycur="${cur#*[:]}" if [[ ${1-} == -u ]]; then _allowed_groups "$mycur" else local IFS=$'\n' COMPREPLY=($(compgen -g -- "$mycur")) fi COMPREPLY=($(compgen -P "$prefix" -W "${COMPREPLY[@]}")) elif [[ $cur == *:* ]]; then # Completing group after 'user:gr'. # Reply with a list of unprefixed groups since readline with split on : # and only replace the 'gr' part local mycur="${cur#*:}" if [[ ${1-} == -u ]]; then _allowed_groups "$mycur" else local IFS=$'\n' COMPREPLY=($(compgen -g -- "$mycur")) fi else # Completing a partial 'usernam'. # # Don't suffix with a : because readline will escape it and add a # slash. It's better to complete into 'chown username ' than 'chown # username\:'. if [[ ${1-} == -u ]]; then _allowed_users "$cur" else local IFS=$'\n' COMPREPLY=($(compgen -u -- "$cur")) fi fi } _allowed_users() { if _complete_as_root; then local IFS=$'\n' COMPREPLY=($(compgen -u -- "${1:-$cur}")) else local IFS=$'\n ' COMPREPLY=($(compgen -W \ "$(id -un 2>/dev/null || whoami 2>/dev/null)" -- "${1:-$cur}")) fi } _allowed_groups() { if _complete_as_root; then local IFS=$'\n' COMPREPLY=($(compgen -g -- "$1")) else local IFS=$'\n ' COMPREPLY=($(compgen -W \ "$(id -Gn 2>/dev/null || groups 2>/dev/null)" -- "$1")) fi } # This function completes on valid shells # _shells() { local shell rest while read -r shell rest; do [[ $shell == /* && $shell == "$cur"* ]] && COMPREPLY+=($shell) done 2>/dev/null 0) if not. _realcommand() { type -P "$1" >/dev/null && { if type -p realpath >/dev/null; then realpath "$(type -P "$1")" elif type -p greadlink >/dev/null; then greadlink -f "$(type -P "$1")" elif type -p readlink >/dev/null; then readlink -f "$(type -P "$1")" else type -P "$1" fi } } # This function returns the first argument, excluding options # @param $1 chars Characters out of $COMP_WORDBREAKS which should # NOT be considered word breaks. See __reassemble_comp_words_by_ref. _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 __reassemble_comp_words_by_ref. # @param $2 glob Options whose following argument should not be counted # @param $3 glob Options that should be counted as args _count_args() { local i cword words __reassemble_comp_words_by_ref "${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 } # This function completes on PCI IDs # _pci_ids() { COMPREPLY+=($(compgen -W \ "$(PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur")) } # This function completes on USB IDs # _usb_ids() { COMPREPLY+=($(compgen -W \ "$(PATH="$PATH:/sbin" lsusb | awk '{print $6}')" -- "$cur")) } # CD device names _cd_devices() { COMPREPLY+=($(compgen -f -d -X "!*/?([amrs])cd*" -- "${cur:-/dev/}")) } # DVD device names _dvd_devices() { COMPREPLY+=($(compgen -f -d -X "!*/?(r)dvd*" -- "${cur:-/dev/}")) } # TERM environment variable values _terms() { COMPREPLY+=($(compgen -W "$({ command sed -ne 's/^\([^[:space:]#|]\{2,\}\)|.*/\1/p' /etc/termcap { toe -a || toe } | awk '{ print $1 }' find /{etc,lib,usr/lib,usr/share}/terminfo/? -type f -maxdepth 1 | awk -F/ '{ print $NF }' } 2>/dev/null)" -- "$cur")) } _bashcomp_try_faketty() { if type unbuffer &>/dev/null; then unbuffer -p "$@" elif script --version 2>&1 | command grep -qF util-linux; then # BSD and Solaris "script" do not seem to have required features script -qaefc "$*" /dev/null else "$@" # no can do, fallback fi } # a little help for FreeBSD ports users [[ $OSTYPE == *freebsd* ]] && complete -W 'index search fetch fetch-list extract patch configure build install reinstall deinstall clean clean-depends kernel buildworld' make # This function provides simple user@host completion # _user_at_host() { local cur prev words cword _init_completion -n : || return if [[ $cur == *@* ]]; then _known_hosts_real "$cur" else COMPREPLY=($(compgen -u -S @ -- "$cur")) compopt -o nospace fi } shopt -u hostcomplete && complete -F _user_at_host talk ytalk finger # NOTE: Using this function as a helper function is deprecated. Use # `_known_hosts_real' instead. _known_hosts() { local cur prev words cword _init_completion -n : || return # NOTE: Using `_known_hosts' as a helper function and passing options # to `_known_hosts' is deprecated: Use `_known_hosts_real' instead. local options [[ ${1-} == -a || ${2-} == -a ]] && options=-a [[ ${1-} == -c || ${2-} == -c ]] && options+=" -c" _known_hosts_real ${options-} -- "$cur" } # _known_hosts() # Helper function to locate ssh included files in configs # This function looks for the "Include" keyword in ssh config files and # includes them recursively, adding each result to the config variable. _included_ssh_config_files() { (($# < 1)) && echo "bash_completion: $FUNCNAME: missing mandatory argument CONFIG" >&2 local configfile i f configfile=$1 local reset=$(shopt -po noglob) set -o noglob local included=($(command sed -ne 's/^[[:blank:]]*[Ii][Nn][Cc][Ll][Uu][Dd][Ee][[:blank:]]\(.*\)$/\1/p' "${configfile}")) $reset [[ ${included-} ]] || return for i in "${included[@]}"; do # Check the origin of $configfile to complete relative included paths on included # files according to ssh_config(5): # "[...] Files without absolute paths are assumed to be in ~/.ssh if included in a user # configuration file or /etc/ssh if included from the system configuration file.[...]" if ! [[ $i =~ ^\~.*|^\/.* ]]; then if [[ $configfile =~ ^\/etc\/ssh.* ]]; then i="/etc/ssh/$i" else i="$HOME/.ssh/$i" fi fi __expand_tilde_by_ref i # In case the expanded variable contains multiple paths set +o noglob for f in $i; do if [[ -r $f ]]; then config+=("$f") # The Included file is processed to look for Included files in itself _included_ssh_config_files $f fi done $reset done } # _included_ssh_config_files() # Helper function for completing _known_hosts. # This function performs host completion based on ssh's config and known_hosts # files, as well as hostnames reported by avahi-browse if # COMP_KNOWN_HOSTS_WITH_AVAHI is set to a non-empty value. Also hosts from # HOSTFILE (compgen -A hostname) are added, unless # COMP_KNOWN_HOSTS_WITH_HOSTFILE is set to an empty value. # Usage: _known_hosts_real [OPTIONS] CWORD # Options: -a Use aliases from ssh config files # -c Use `:' suffix # -F configfile Use `configfile' for configuration settings # -p PREFIX Use PREFIX # -4 Filter IPv6 addresses from results # -6 Filter IPv4 addresses from results # Return: Completions, starting with CWORD, are added to COMPREPLY[] _known_hosts_real() { local configfile flag prefix="" ifs=$IFS local cur suffix="" aliases i host ipv4 ipv6 local -a kh tmpkh=() khd=() config=() # TODO remove trailing %foo from entries local OPTIND=1 while getopts "ac46F:p:" flag "$@"; do case $flag in a) aliases='yes' ;; c) suffix=':' ;; F) configfile=$OPTARG ;; p) prefix=$OPTARG ;; 4) ipv4=1 ;; 6) ipv6=1 ;; *) echo "bash_completion: $FUNCNAME: usage error" >&2 return 1 ;; esac done if (($# < OPTIND)); then echo "bash_completion: $FUNCNAME: missing mandatory argument CWORD" >&2 return 1 fi cur=${!OPTIND} ((OPTIND += 1)) if (($# >= OPTIND)); then echo "bash_completion: $FUNCNAME($*): unprocessed arguments:" \ "$(while (($# >= OPTIND)); do printf '%s ' ${!OPTIND} shift done)" >&2 return 1 fi [[ $cur == *@* ]] && prefix=$prefix${cur%@*}@ && cur=${cur#*@} kh=() # ssh config files if [[ -v configfile ]]; then [[ -r $configfile ]] && config+=("$configfile") else for i in /etc/ssh/ssh_config ~/.ssh/config ~/.ssh2/config; do [[ -r $i ]] && config+=("$i") done fi local reset=$(shopt -po noglob) set -o noglob # "Include" keyword in ssh config files if ((${#config[@]} > 0)); then for i in "${config[@]}"; do _included_ssh_config_files "$i" done fi # Known hosts files from configs if ((${#config[@]} > 0)); then local IFS=$'\n' # expand paths (if present) to global and user known hosts files # TODO(?): try to make known hosts files with more than one consecutive # spaces in their name work (watch out for ~ expansion # breakage! Alioth#311595) tmpkh=($(awk 'sub("^[ \t]*([Gg][Ll][Oo][Bb][Aa][Ll]|[Uu][Ss][Ee][Rr])[Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee][ \t]+", "") { print $0 }' "${config[@]}" | sort -u)) IFS=$ifs fi if ((${#tmpkh[@]} != 0)); then local j for i in "${tmpkh[@]}"; do # First deal with quoted entries... while [[ $i =~ ^([^\"]*)\"([^\"]*)\"(.*)$ ]]; do i=${BASH_REMATCH[1]}${BASH_REMATCH[3]} j=${BASH_REMATCH[2]} __expand_tilde_by_ref j # Eval/expand possible `~' or `~user' [[ -r $j ]] && kh+=("$j") done # ...and then the rest. for j in $i; do __expand_tilde_by_ref j # Eval/expand possible `~' or `~user' [[ -r $j ]] && kh+=("$j") done done fi if [[ ! -v configfile ]]; then # Global and user known_hosts files for i in /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2 \ /etc/known_hosts /etc/known_hosts2 ~/.ssh/known_hosts \ ~/.ssh/known_hosts2; do [[ -r $i ]] && kh+=("$i") done for i in /etc/ssh2/knownhosts ~/.ssh2/hostkeys; do [[ -d $i ]] && khd+=("$i"/*pub) done fi # If we have known_hosts files to use if ((${#kh[@]} + ${#khd[@]} > 0)); then if ((${#kh[@]} > 0)); then # https://man.openbsd.org/sshd.8#SSH_KNOWN_HOSTS_FILE_FORMAT for i in "${kh[@]}"; do while read -ra tmpkh; do ((${#tmpkh[@]} == 0)) && continue set -- "${tmpkh[@]}" # Skip entries starting with | (hashed) and # (comment) [[ $1 == [\|\#]* ]] && continue # Ignore leading @foo (markers) [[ $1 == @* ]] && shift # Split entry on commas local IFS=, for host in $1; do # Skip hosts containing wildcards [[ $host == *[*?]* ]] && continue # Remove leading [ host="${host#[}" # Remove trailing ] + optional :port host="${host%]?(:+([0-9]))}" # Add host to candidates COMPREPLY+=($host) done IFS=$ifs done <"$i" done COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) fi if ((${#khd[@]} > 0)); then # Needs to look for files called # .../.ssh2/key_22_.pub # dont fork any processes, because in a cluster environment, # there can be hundreds of hostkeys for i in "${khd[@]}"; do if [[ $i == *key_22_$cur*.pub && -r $i ]]; then host=${i/#*key_22_/} host=${host/%.pub/} COMPREPLY+=($host) fi done fi # apply suffix and prefix for i in ${!COMPREPLY[*]}; do COMPREPLY[i]=$prefix${COMPREPLY[i]}$suffix done fi # append any available aliases from ssh config files if [[ ${#config[@]} -gt 0 && -v aliases ]]; then local -a hosts=($(command sed -ne 's/^[[:blank:]]*[Hh][Oo][Ss][Tt][[:blank:]]\(.*\)$/\1/p' "${config[@]}")) if ((${#hosts[@]} != 0)); then COMPREPLY+=($(compgen -P "$prefix" \ -S "$suffix" -W '${hosts[@]%%[*?%]*}' -X '\!*' -- "$cur")) fi fi # Add hosts reported by avahi-browse, if desired and it's available. if [[ ${COMP_KNOWN_HOSTS_WITH_AVAHI-} ]] && type avahi-browse &>/dev/null; then # The original call to avahi-browse also had "-k", to avoid lookups # into avahi's services DB. We don't need the name of the service, and # if it contains ";", it may mistify the result. But on Gentoo (at # least), -k wasn't available (even if mentioned in the manpage) some # time ago, so... COMPREPLY+=($(compgen -P "$prefix" -S "$suffix" -W \ "$(avahi-browse -cpr _workstation._tcp 2>/dev/null | awk -F';' '/^=/ { print $7 }' | sort -u)" -- "$cur")) fi # Add hosts reported by ruptime. if type ruptime &>/dev/null; then COMPREPLY+=($(compgen -W \ "$(ruptime 2>/dev/null | awk '!/^ruptime:/ { print $1 }')" \ -- "$cur")) fi # Add results of normal hostname completion, unless # `COMP_KNOWN_HOSTS_WITH_HOSTFILE' is set to an empty value. if [[ -n ${COMP_KNOWN_HOSTS_WITH_HOSTFILE-1} ]]; then COMPREPLY+=( $(compgen -A hostname -P "$prefix" -S "$suffix" -- "$cur")) fi $reset if [[ -v ipv4 ]]; then COMPREPLY=("${COMPREPLY[@]/*:*$suffix/}") fi if [[ -v ipv6 ]]; then COMPREPLY=("${COMPREPLY[@]/+([0-9]).+([0-9]).+([0-9]).+([0-9])$suffix/}") fi if [[ -v ipv4 || -v ipv6 ]]; then for i in "${!COMPREPLY[@]}"; do [[ ${COMPREPLY[i]} ]] || unset -v "COMPREPLY[i]" done fi __ltrim_colon_completions "$prefix$cur" } # _known_hosts_real() complete -F _known_hosts traceroute traceroute6 \ fping fping6 telnet rsh rlogin ftp dig mtr ssh-installkeys showmount # This meta-cd function observes the CDPATH variable, so that cd additionally # completes on directories under those specified in CDPATH. # _cd() { local cur prev words cword _init_completion || return local IFS=$'\n' i j k compopt -o filenames # Use standard dir completion if no CDPATH or parameter starts with /, # ./ or ../ if [[ -z ${CDPATH:-} || $cur == ?(.)?(.)/* ]]; then _filedir -d return fi local -r mark_dirs=$(_rl_enabled mark-directories && echo y) local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y) # we have a CDPATH, so loop on its contents for i in ${CDPATH//:/$'\n'}; do # create an array of matched subdirs k="${#COMPREPLY[@]}" for j in $(compgen -d -- $i/$cur); do if [[ ($mark_symdirs && -L $j || $mark_dirs && ! -L $j) && ! -d ${j#$i/} ]]; then j+="/" fi COMPREPLY[k++]=${j#$i/} done done _filedir -d if ((${#COMPREPLY[@]} == 1)); then i=${COMPREPLY[0]} if [[ $i == "$cur" && $i != "*/" ]]; then COMPREPLY[0]="${i}/" fi fi return } if shopt -q cdable_vars; then complete -v -F _cd -o nospace cd pushd else complete -F _cd -o nospace cd pushd fi # A _command_offset wrapper function for use when the offset is unknown. # Only intended to be used as a completion function directly associated # with a command, not to be invoked from within other completion functions. # _command() { local offset i # find actual offset, as position of the first non-option offset=1 for ((i = 1; i <= COMP_CWORD; i++)); do if [[ ${COMP_WORDS[i]} != -* ]]; then offset=$i break fi done _command_offset $offset } # A meta-command completion function for commands like sudo(8), which need to # first complete on a command, then complete according to that command's own # completion definition. # _command_offset() { # rewrite current completion context before invoking # actual command completion # find new first word position, then # rewrite COMP_LINE and adjust COMP_POINT local word_offset=$1 i j for ((i = 0; i < word_offset; i++)); do for ((j = 0; j <= ${#COMP_LINE}; j++)); do [[ $COMP_LINE == "${COMP_WORDS[i]}"* ]] && break COMP_LINE=${COMP_LINE:1} ((COMP_POINT--)) done COMP_LINE=${COMP_LINE#"${COMP_WORDS[i]}"} ((COMP_POINT -= ${#COMP_WORDS[i]})) done # shift COMP_WORDS elements and adjust COMP_CWORD for ((i = 0; i <= COMP_CWORD - word_offset; i++)); do COMP_WORDS[i]=${COMP_WORDS[i + word_offset]} done for ((i; i <= COMP_CWORD; i++)); do unset 'COMP_WORDS[i]' done ((COMP_CWORD -= word_offset)) COMPREPLY=() local cur _get_comp_words_by_ref cur if ((COMP_CWORD == 0)); then local IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -d -c -- "$cur")) else local cmd=${COMP_WORDS[0]} compcmd=${COMP_WORDS[0]} local cspec=$(complete -p $cmd 2>/dev/null) # If we have no completion for $cmd yet, see if we have for basename if [[ ! $cspec && $cmd == */* ]]; then cspec=$(complete -p ${cmd##*/} 2>/dev/null) [[ $cspec ]] && compcmd=${cmd##*/} fi # If still nothing, just load it for the basename if [[ ! $cspec ]]; then compcmd=${cmd##*/} _completion_loader $compcmd cspec=$(complete -p $compcmd 2>/dev/null) fi if [[ -n $cspec ]]; then if [[ ${cspec#* -F } != "$cspec" ]]; then # complete -F # get function name local func=${cspec#*-F } func=${func%% *} if ((${#COMP_WORDS[@]} >= 2)); then $func $cmd "${COMP_WORDS[-1]}" "${COMP_WORDS[-2]}" else $func $cmd "${COMP_WORDS[-1]}" fi # restore initial compopts local opt while [[ $cspec == *" -o "* ]]; do # FIXME: should we take "+o opt" into account? cspec=${cspec#*-o } opt=${cspec%% *} compopt -o $opt cspec=${cspec#$opt} done else cspec=${cspec#complete} cspec=${cspec%%$compcmd} COMPREPLY=($(eval compgen "$cspec" -- '$cur')) fi elif ((${#COMPREPLY[@]} == 0)); then # XXX will probably never happen as long as completion loader loads # *something* for every command thrown at it ($cspec != empty) _minimal fi fi } complete -F _command aoss command "do" else eval exec ltrace nice nohup padsp \ "then" time tsocks vsound xargs _root_command() { local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin local root_command=$1 _command } complete -F _root_command fakeroot gksu gksudo kdesudo really # Return true if the completion should be treated as running as root _complete_as_root() { [[ $EUID -eq 0 || ${root_command:-} ]] } _longopt() { local cur prev words cword split _init_completion -s || return case "${prev,,}" in --help | --usage | --version) return ;; --!(no-*)dir*) _filedir -d return ;; --!(no-*)@(file|path)*) _filedir return ;; --+([-a-z0-9_])) local argtype=$(LC_ALL=C $1 --help 2>&1 | command sed -ne \ "s|.*$prev\[\{0,1\}=[<[]\{0,1\}\([-A-Za-z0-9_]\{1,\}\).*|\1|p") case ${argtype,,} in *dir*) _filedir -d return ;; *file* | *path*) _filedir return ;; esac ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W "$(LC_ALL=C $1 --help 2>&1 | while read -r line; do [[ $line =~ --[A-Za-z0-9]+([-_][A-Za-z0-9]+)*=? ]] && printf '%s\n' ${BASH_REMATCH[0]} done)" -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace elif [[ $1 == *@(rmdir|chroot) ]]; then _filedir -d else [[ $1 == *mkdir ]] && compopt -o nospace _filedir fi } # makeinfo and texi2dvi are defined elsewhere. complete -F _longopt a2ps awk base64 bash bc bison cat chroot colordiff cp \ csplit cut date df diff dir du enscript env expand fmt fold gperf \ grep grub head irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \ mv netstat nl nm objcopy objdump od paste pr ptx readelf rm rmdir \ sed seq sha{,1,224,256,384,512}sum shar sort split strip sum tac tail tee \ texindex touch tr uname unexpand uniq units vdir wc who declare -Ag _xspecs _filedir_xspec() { local cur prev words cword _init_completion || return _tilde "$cur" || return local IFS=$'\n' xspec=${_xspecs[${1##*/}]} tmp local -a toks toks=($( compgen -d -- "$(quote_readline "$cur")" | { while read -r tmp; do printf '%s\n' $tmp done } )) # Munge xspec to contain uppercase version too # https://lists.gnu.org/archive/html/bug-bash/2010-09/msg00036.html # news://news.gmane.io/4C940E1C.1010304@case.edu eval xspec="${xspec}" local matchop=! if [[ $xspec == !* ]]; then xspec=${xspec#!} matchop=@ fi xspec="$matchop($xspec|${xspec^^})" toks+=($( eval compgen -f -X "'!$xspec'" -- '$(quote_readline "$cur")' | { while read -r tmp; do [[ -n $tmp ]] && printf '%s\n' $tmp done } )) # Try without filter if it failed to produce anything and configured to [[ -n ${COMP_FILEDIR_FALLBACK:-} && ${#toks[@]} -lt 1 ]] && { local reset=$(shopt -po noglob) set -o noglob toks+=($(compgen -f -- "$(quote_readline "$cur")")) IFS=' ' $reset IFS=$'\n' } if ((${#toks[@]} != 0)); then compopt -o filenames COMPREPLY=("${toks[@]}") fi } _install_xspec() { local xspec=$1 cmd shift for cmd in "$@"; do _xspecs[$cmd]=$xspec done } # bzcmp, bzdiff, bz*grep, bzless, bzmore intentionally not here, see Debian: #455510 _install_xspec '!*.?(t)bz?(2)' bunzip2 bzcat pbunzip2 pbzcat lbunzip2 lbzcat _install_xspec '!*.@(zip|[aegjswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl)' unzip zipinfo _install_xspec '*.Z' compress znew # zcmp, zdiff, z*grep, zless, zmore intentionally not here, see Debian: #455510 _install_xspec '!*.@(Z|[gGd]z|t[ag]z)' gunzip zcat _install_xspec '!*.@(Z|[gGdz]z|t[ag]z)' unpigz _install_xspec '!*.Z' uncompress # lzcmp, lzdiff intentionally not here, see Debian: #455510 _install_xspec '!*.@(tlz|lzma)' lzcat lzegrep lzfgrep lzgrep lzless lzmore unlzma _install_xspec '!*.@(?(t)xz|tlz|lzma)' unxz xzcat _install_xspec '!*.lrz' lrunzip _install_xspec '!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)' ee _install_xspec '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)' qiv _install_xspec '!*.@(gif|jp?(e)g?(2)|j2[ck]|jp[2f]|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|?(e)ps)' xv _install_xspec '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview _install_xspec '!*.@(dvi|DVI)?(.@(gz|Z|bz2))' xdvi kdvi _install_xspec '!*.dvi' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmx _install_xspec '!*.[pf]df' acroread gpdf xpdf _install_xspec '!*.@(?(e)ps|pdf)' kpdf _install_xspec '!*.@(okular|@(?(e|x)ps|?(E|X)PS|[pf]df|[PF]DF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb?(2)|FB?(2)|mobi|MOBI|g3|G3|chm|CHM)?(.?(gz|GZ|bz2|BZ2|xz|XZ)))' okular _install_xspec '!*.pdf' epdfview pdfunite _install_xspec '!*.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)' zathura _install_xspec '!*.@(?(e)ps|pdf)' ps2pdf ps2pdf12 ps2pdf13 ps2pdf14 ps2pdfwr _install_xspec '!*.texi*' makeinfo texi2html _install_xspec '!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvi xetex xelatex luatex lualatex _install_xspec '!*.mp3' mpg123 mpg321 madplay _install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' xine aaxine fbxine _install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' kaffeine dragon totem _install_xspec '!*.@(avi|asf|wmv)' aviplay _install_xspec '!*.@(rm?(j)|ra?(m)|smi?(l))' realplay _install_xspec '!*.@(mpg|mpeg|avi|mov|qt)' xanim _install_xspec '!*.@(og[ag]|m3u|flac|spx)' ogg123 _install_xspec '!*.@(mp3|ogg|pls|m3u)' gqmpeg freeamp _install_xspec '!*.fig' xfig _install_xspec '!*.@(mid?(i)|cmf)' playmidi _install_xspec '!*.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)' timidity _install_xspec '!*.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)' modplugplay modplug123 _install_xspec '*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)' vi vim gvim rvim view rview rgvim rgview gview emacs xemacs sxemacs kate kwrite _install_xspec '!*.@(zip|z|gz|tgz)' bzme # konqueror not here on purpose, it's more than a web/html browser _install_xspec '!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))' netscape mozilla lynx galeon dillo elinks amaya epiphany _install_xspec '!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)' oowriter lowriter _install_xspec '!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)' ooimpress loimpress _install_xspec '!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)' oocalc localc _install_xspec '!*.@(sxd|std|sda|sdd|?(f)odg|otg)' oodraw lodraw _install_xspec '!*.@(sxm|smf|mml|odf)' oomath lomath _install_xspec '!*.odb' oobase lobase _install_xspec '!*.[rs]pm' rpm2cpio _install_xspec '!*.aux' bibtex _install_xspec '!*.po' poedit gtranslator kbabel lokalize _install_xspec '!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])' harbour gharbour hbpp _install_xspec '!*.[Hh][Rr][Bb]' hbrun _install_xspec '!*.ly' lilypond ly2dvi _install_xspec '!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))' cdiff _install_xspec '!@(*.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|p7b|pkipath|pem|p10|csr|crl)|cacerts)' portecle _install_xspec '!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)' kid3 kid3-qt unset -f _install_xspec # Minimal completion to use as fallback in _completion_loader. _minimal() { local cur prev words cword split _init_completion -s || return $split && return _filedir } # Complete the empty string to allow completion of '>', '>>', and '<' on < 4.3 # https://lists.gnu.org/archive/html/bug-bash/2012-01/msg00045.html complete -F _minimal '' __load_completion() { local -a dirs=(${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions) local ifs=$IFS IFS=: dir cmd="${1##*/}" compfile [[ -n $cmd ]] || return 1 for dir in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share}; do dirs+=($dir/bash-completion/completions) done IFS=$ifs if [[ $BASH_SOURCE == */* ]]; then dirs+=("${BASH_SOURCE%/*}/completions") else dirs+=(./completions) fi local backslash= if [[ $cmd == \\* ]]; then cmd="${cmd:1}" # If we already have a completion for the "real" command, use it $(complete -p "$cmd" 2>/dev/null || echo false) "\\$cmd" && return 0 backslash=\\ fi for dir in "${dirs[@]}"; do [[ -d $dir ]] || continue for compfile in "$cmd" "$cmd.bash" "_$cmd"; do compfile="$dir/$compfile" # Avoid trying to source dirs; https://bugzilla.redhat.com/903540 if [[ -f $compfile ]] && . "$compfile" &>/dev/null; then [[ $backslash ]] && $(complete -p "$cmd") "\\$cmd" return 0 fi done done # Look up simple "xspec" completions [[ -v _xspecs[$cmd] ]] && complete -F _filedir_xspec "$cmd" "$backslash$cmd" && return 0 return 1 } # set up dynamic completion loading _completion_loader() { # $1=_EmptycmD_ already for empty cmds in bash 4.3, set to it for earlier local cmd="${1:-_EmptycmD_}" __load_completion "$cmd" && return 124 # Need to define *something*, otherwise there will be no completion at all. complete -F _minimal -- "$cmd" && return 124 } && complete -D -F _completion_loader # Function for loading and calling functions from dynamically loaded # completion files that may not have been sourced yet. # @param $1 completion file to load function from in case it is missing # @param $2... function and its arguments _xfunc() { set -- "$@" local srcfile=$1 shift declare -F $1 &>/dev/null || __load_completion "$srcfile" "$@" } # source compat completion directory definitions compat_dir=${BASH_COMPLETION_COMPAT_DIR:-/etc/bash_completion.d} if [[ -d $compat_dir && -r $compat_dir && -x $compat_dir ]]; then for i in "$compat_dir"/*; do [[ ${i##*/} != @($_backup_glob|Makefile*|$_blacklist_glob) && -f \ $i && -r $i ]] && . "$i" done fi unset compat_dir i _blacklist_glob # source user completion file user_completion=${BASH_COMPLETION_USER_FILE:-~/.bash_completion} [[ ${BASH_SOURCE[0]} != "$user_completion" && -r $user_completion && -f $user_completion ]] && . $user_completion unset user_completion unset -f have unset have set $BASH_COMPLETION_ORIGINAL_V_VALUE unset BASH_COMPLETION_ORIGINAL_V_VALUE # ex: filetype=sh bash-completion-2.11/bash_completion.sh.in000066400000000000000000000013101370676621500206400ustar00rootroot00000000000000# shellcheck shell=sh disable=SC1091,SC2039,SC2166 # Check for interactive bash and that we haven't already been sourced. if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" != x -a "x${BASH_COMPLETION_VERSINFO-}" = x ]; then # Check for recent enough version of bash. if [ "${BASH_VERSINFO[0]}" -gt 4 ] || [ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 2 ]; then [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" if shopt -q progcomp && [ -r @datadir@/@PACKAGE@/bash_completion ]; then # Source completion code. . @datadir@/@PACKAGE@/bash_completion fi fi fi bash-completion-2.11/completions/000077500000000000000000000000001370676621500170725ustar00rootroot00000000000000bash-completion-2.11/completions/.gitignore000066400000000000000000000041121370676621500210600ustar00rootroot000000000000007za aclocal-1.1[0123456] alpine alternatives animate apropos aptitude-curses arm-koji asciidoc.py autoheader automake-1.1[0123456] autossh autoupdate bmake bsdtar btdownloadcurses.py btdownloadgui.py c++ cc cdrecord chrome chromium ci ciptool civclient civserver clzip co colormake compare compgen composite conjure cowthink createdb createuser dcop declare dfutool display dpkg-deb dpkg-query dpkg-reconfigure dropdb dropuser edquota etherwake f77 f95 filebucket freeciv-gtk2 freeciv-gtk3 freeciv-sdl freeciv-xaw g++ g++-[5678] g4 g77 g95 gcc-[5678] gccgo gccgo-[5678] gcj geoiplookup6 gfortran gfortran-[5678] gkrellm2 gmake gmplayer gnumake google-chrome google-chrome-stable gpc gpgv2 gtar hciattach hciconfig hd host hping hping3 iceweasel identify ifdown ifquery ifstatus import inotifywatch insmod.static iperf3 javac javadoc kplayer l2ping lbzip2 ldapadd ldapcompare ldapdelete ldapmodify ldapmodrdn ldappasswd ldapwhoami links2 lintian-info lusermod lvchange lvcreate lvdisplay lvextend lvmdiskscan lvreduce lvremove lvrename lvresize lvs lvscan lz4c mailsnarf mdecrypt mencoder micropython mkisofs mogrify montage mozilla-firefox mplayer2 msgsnarf muttng ncal pbzip2 pccardctl pdlzip perldoc phing pigz pinfo ping6 pkg_deinstall pkg_info pkill plzip pm-suspend pm-suspend-hybrid pmake postalias ppc-koji puppetca puppetd puppetdoc puppetmasterd puppetqd puppetrun pvchange pvcreate pvdisplay pvmove pvremove pvs pvscan pxz py.test py.test-[23] pydoc3 pylint-[23] pytest-[23] python2 python2.7 python3 python3.[345678] pypy pypy3 pyvenv-3.[45678] qemu-kvm qemu-system-i386 qemu-system-x86_64 quotacheck quotaoff quotaon ralsh rcsdiff rdict repquota rfcomm rlog rpm2targz rpm2txz rpmbuild rpmbuild-md5 s390-koji sbcl-mt scp sdptool setquota sftp sidedoor slogin smbcacls smbcquotas smbget smbpasswd smbtar smbtree sparc-koji spovray star stream sudoedit tightvncviewer tracepath6 typeset vgcfgbackup vgcfgrestore vgchange vgck vgconvert vgcreate vgdisplay vgexport vgextend vgimport vgmerge vgmknodes vgreduce vgremove vgrename vgs vgscan vgsplit vigr whatis wine-development wine-stable xpovray xvnc4viewer ypcat bash-completion-2.11/completions/2to3000066400000000000000000000016331370676621500176070ustar00rootroot00000000000000# bash completion for 2to3 -*- shell-script -*- _2to3() { local cur prev words cword split _init_completion -s || return case $prev in -h | --help | --add-suffix) return ;; -f | --fix | -x | --nofix) COMPREPLY=($(compgen -W \ "$($1 --list-fixes 2>/dev/null | command sed -e 1d)" -- "$cur")) return ;; -j | --processes) COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur")) return ;; -o | --output-dir) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir py } && complete -F _2to3 2to3 # ex: filetype=sh bash-completion-2.11/completions/7z000066400000000000000000000103121370676621500173520ustar00rootroot00000000000000# 7z(1) completion -*- shell-script -*- _7z() { local cur prev words cword _init_completion -n = || return if ((cword == 1)); then COMPREPLY=($(compgen -W 'a b d e l t u x' -- "$cur")) return fi local mode [[ ${words[1]} == [adu] ]] && mode=w || mode=r case $cur in -ao*) COMPREPLY=($(compgen -P${cur:0:3} -W 'a s t u' -- "${cur:3}")) return ;; -?(a)[ix]*) local opt if [[ $cur == -a[ix]* ]]; then opt=${cur:0:3} cur=${cur:3} else opt=${cur:0:2} cur=${cur:2} fi if [[ $cur != *[@\!]* ]]; then COMPREPLY=($(compgen -P$opt -W '@ ! r@ r-@ r0@ r! r-! r0!' \ -- "$cur")) elif [[ $cur == ?(r@(-|0|))@* ]]; then local IFS=$' \t\n' reset=$(shopt -po noglob) set -o noglob COMPREPLY=($(compgen -P"${opt}${cur%%@*}@" -f -- "${cur#*@}")) $reset compopt -o filenames fi return ;; -mhe=* | -mhc=* | -ms=* | -mt=*) COMPREPLY=($(compgen -W 'on off' -- "${cur#*=}")) return ;; -mx=*) COMPREPLY=($(compgen -W '0 1 3 5 7 9' -- "${cur#*=}")) return ;; -o* | -w?*) local reset=$(shopt -po noglob) set -o noglob compopt -o filenames local ifs=$IFS IFS=$'\n' COMPREPLY=($(compgen -d -P${cur:0:2} -S/ -- "${cur:2}")) IFS=$ifs $reset compopt -o nospace return ;; -r?*) COMPREPLY=($(compgen -P${cur:0:2} -W '- 0' -- "${cur:2}")) return ;; -scs*) COMPREPLY=($(compgen -P${cur:0:4} -W 'UTF-8 WIN DOS' \ -- "${cur:4}")) return ;; -ssc?*) COMPREPLY=($(compgen -P${cur:0:4} -W '-' -- "${cur:4}")) return ;; -t*) if [[ $mode == w ]]; then COMPREPLY=($(compgen -P${cur:0:2} -W '7z bzip2 gzip swfc tar wim xz zip' -- "${cur:2}")) else COMPREPLY=($(compgen -P${cur:0:2} -W '7z apm arj bzip2 cab chm cpio cramfs deb dmg elf fat flv gzip hfs iso lzh lzma lzma86 macho mbr mslz mub nsis ntfs pe ppmd rar rpm squashfs swf swfc tar udf vhd wim xar xz z zip' \ -- "${cur:2}")) fi return ;; -m*=* | -p* | -u* | -v*) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-ai -an -ao -ax -bd -i -m{x,s,f,he,hc,mt}= -o -p -r -scs -sfx -si -slp -slt -so -ssc -t -u -v -w -x -y' \ -- "$cur")) [[ ${COMPREPLY-} == -@(an|bd|sfx|si|slt|so|ssc|[rwy]) ]] || compopt -o nospace return fi local args _count_args = if ((args == 2)); then _filedir_xspec unzip # TODO: parsing 7z i output? # - how to figure out if the format is input or output? # - find string Formats:, read until next empty line # - extensions start from column 26 # - ignore everything in parens # - terminate on two spaces # - terminate on token containing anything [^a-z0-9] # (assumption: extensions are all lowercase) [[ $mode == w ]] && _filedir '@(7z|bz2|swf|?(g)tar|?(t)[bglx]z|tb?(z)2|wim)' || _filedir '@(7z|arj|bz2|cab|chm|cpio|deb|dmg|flv|gem|img|iso|lz[ah]|lzma?(86)|msi|pmd|[rx]ar|rpm|sw[fm]|?(g)tar|taz|?(t)[bglx]z|tb?(z)2|vhd|wim|Z)' else if [[ ${words[1]} == d ]]; then local IFS=$'\n' COMPREPLY=($(compgen -W "$(printf '%s\n' "$($1 l ${words[2]} \ -slt 2>/dev/null | command sed -n '/^Path =/s/^Path = \(.*\)$/\1/p' \ 2>/dev/null | tail -n+2)")" -- "$cur")) compopt -o filenames else _filedir fi fi } && complete -F _7z 7z 7za # ex: filetype=sh bash-completion-2.11/completions/Makefile.am000066400000000000000000000320751370676621500211350ustar00rootroot00000000000000bashcompdir = $(datadir)/$(PACKAGE)/completions bashcomp_DATA = 2to3 \ 7z \ a2x \ abook \ aclocal \ acpi \ _adb \ add_members \ alias \ ant \ apache2ctl \ appdata-validate \ apt-build \ apt-cache \ apt-get \ aptitude \ arch \ arp \ arping \ arpspoof \ asciidoc \ aspell \ autoconf \ automake \ autoreconf \ autorpm \ autoscan \ avctrl \ badblocks \ bind \ bk \ brctl \ btdownloadheadless.py \ bts \ bzip2 \ _cal \ cancel \ cardctl \ carton \ ccache \ ccze \ cfagent \ cfrun \ chage \ change_pw \ check_db \ check_perms \ checksec \ _chfn \ chgrp \ chkconfig \ chmod \ chown \ chpasswd \ chromium-browser \ chronyc \ chrpath \ _chsh \ cksfv \ cleanarch \ clisp \ clone_member \ complete \ config_list \ configure \ convert \ cowsay \ cpan2dist \ cpio \ cppcheck \ crontab \ cryptsetup \ curl \ cvs \ cvsps \ dd \ deja-dup \ desktop-file-validate \ dhclient \ dict \ _dmesg \ dmypy \ dnssec-keygen \ dnsspoof \ dot \ dpkg \ dpkg-source \ dselect \ dsniff \ dumpdb \ dumpe2fs \ e2freefrag \ e2label \ ebtables \ ecryptfs-migrate-home \ _eject \ eog \ ether-wake \ evince \ explodepkg \ export \ faillog \ fbgs \ fbi \ feh \ file \ file-roller \ filefrag \ filesnarf \ find \ find_member \ fio \ firefox \ flake8 \ freebsd-update \ freeciv \ freeciv-server \ function \ fusermount \ gcc \ gcl \ gdb \ genaliases \ gendiff \ genisoimage \ geoiplookup \ getconf \ getent \ gkrellm \ gm \ gnatmake \ gnokii \ gnome-mplayer \ gnome-screenshot \ gpasswd \ gpg \ gpg2 \ gpgv \ gphoto2 \ gprof \ groupadd \ groupdel \ groupmems \ groupmod \ growisofs \ grpck \ gssdp-discover \ gzip \ hcitool \ hddtemp \ _hexdump \ hid2hci \ hostname \ hping2 \ htop \ htpasswd \ hunspell \ _hwclock \ iconv \ id \ idn \ ifstat \ iftop \ ifup \ influx \ info \ inject \ inotifywait \ insmod \ installpkg \ interdiff \ invoke-rc.d \ _ionice \ ip \ ipcalc \ iperf \ ipmitool \ ipsec \ iptables \ ipv6calc \ iscsiadm \ isort \ isql \ iwconfig \ iwlist \ iwpriv \ iwspy \ jar \ jarsigner \ java \ javaws \ jq \ jpegoptim \ jps \ jshint \ json_xs \ jsonschema \ k3b \ kcov \ kill \ killall \ kldload \ kldunload \ koji \ ktutil \ larch \ lastlog \ ldapsearch \ ldapvi \ lftp \ lftpget \ lilo \ links \ lintian \ lisp \ list_admins \ list_lists \ list_members \ list_owners \ _look \ locale-gen \ lpq \ lpr \ lrzip \ lsof \ lsscsi \ lsusb \ lua \ luac \ luseradd \ luserdel \ lvm \ lz4 \ lzip \ lzma \ lzop \ macof \ mailmanctl \ make \ makepkg \ man \ mc \ mcrypt \ mdadm \ mdtool \ medusa \ mii-diag \ mii-tool \ minicom \ mkinitrd \ mktemp \ mmsitepass \ _mock \ modinfo \ modprobe \ _modules \ monodevelop \ _mount \ _mount.linux \ mplayer \ mr \ msynctool \ mtx \ munindoc \ munin-node-configure \ munin-run \ munin-update \ mussh \ mutt \ mypy \ mysql \ mysqladmin \ nc \ ncftp \ nethogs \ _newgrp \ newlist \ newusers \ ngrep \ nmap \ _nmcli \ nproc \ nslookup \ nsupdate \ ntpdate \ oggdec \ op \ openssl \ opera \ optipng \ p4 \ pack200 \ passwd \ patch \ pdftotext \ perl \ perlcritic \ perltidy \ pgrep \ pidof \ pine \ ping \ pkg-config \ pkg-get \ pkg_delete \ pkgadd \ pkgrm \ pkgtool \ pkgutil \ plague-client \ pm-hibernate \ pm-is-supported \ pm-powersave \ pngfix \ portinstall \ portsnap \ portupgrade \ postcat \ postconf \ postfix \ postmap \ postsuper \ povray \ prelink \ printenv \ protoc \ psql \ puppet \ pv \ pwck \ pwd \ pwdx \ pwgen \ pycodestyle \ pydoc \ pydocstyle \ pyflakes \ pylint \ pytest \ python \ pyvenv \ qdbus \ qemu \ qrunner \ querybts \ quota \ radvdump \ rcs \ rdesktop \ remove_members \ removepkg \ _renice \ _repomanage \ reportbug \ _reptyr \ resolvconf \ _rfkill \ ri \ rmlist \ rmmod \ route \ rpcdebug \ rpm \ rpm2tgz \ rpmcheck \ rrdtool \ rsync \ _rtcwake \ _runuser \ sbcl \ sbopkg \ screen \ scrub \ secret-tool \ sh \ shellcheck \ sitecopy \ slackpkg \ slapt-get \ slapt-src \ smartctl \ smbclient \ snownews \ sqlite3 \ ss \ ssh \ ssh-add \ ssh-copy-id \ ssh-keygen \ sshfs \ sshmitm \ sshow \ strace \ strings \ _su \ sudo \ svcadm \ svk \ _svn \ _svnadmin \ _svnlook \ sync_members \ synclient \ sysbench \ sysctl \ tar \ tcpdump \ tcpkill \ tcpnice \ timeout \ tipc \ tox \ tracepath \ tshark \ tsig-keygen \ tune2fs \ _udevadm \ ulimit \ _umount \ _umount.linux \ unace \ unpack200 \ unrar \ unshunt \ update-alternatives \ update-rc.d \ upgradepkg \ urlsnarf \ useradd \ userdel \ usermod \ valgrind \ vipw \ vmstat \ vncviewer \ vpnc \ watch \ webmitm \ wget \ wine \ withlist \ wodim \ wol \ _write \ wsimport \ wtf \ wvdial \ xdg-mime \ xdg-settings \ xfreerdp \ xgamma \ xhost \ _xm \ xmllint \ xmlwf \ xmms \ xmodmap \ xrandr \ xrdb \ xsltproc \ xvfb-run \ xxd \ xz \ xzdec \ ypmatch \ _yum \ yum-arch \ zopfli \ zopflipng EXTRA_DIST = $(bashcomp_DATA) CLEANFILES = \ 7za \ aclocal-1.10 \ aclocal-1.11 \ aclocal-1.12 \ aclocal-1.13 \ aclocal-1.14 \ aclocal-1.15 \ aclocal-1.16 \ alpine \ alternatives \ animate \ apropos \ aptitude-curses \ arm-koji \ asciidoc.py \ autoheader \ automake-1.10 \ automake-1.11 \ automake-1.12 \ automake-1.13 \ automake-1.14 \ automake-1.15 \ automake-1.16 \ autossh \ autoupdate \ bmake \ bsdtar \ btdownloadcurses.py \ btdownloadgui.py \ c++ \ cc \ cdrecord \ chrome \ chromium \ ci \ ciptool \ civclient \ civserver \ clzip \ co \ colormake \ compare \ compgen \ composite \ conjure \ cowthink \ createdb \ createuser \ dcop \ declare \ dfutool \ display \ dpkg-deb \ dpkg-query \ dpkg-reconfigure \ dropdb \ dropuser \ edquota \ etherwake \ f77 \ f95 \ filebucket \ freeciv-gtk2 \ freeciv-gtk3 \ freeciv-sdl \ freeciv-xaw \ g++ \ g++-5 \ g++-6 \ g++-7 \ g++-8 \ g4 \ g77 \ g95 \ gcc-5 \ gcc-6 \ gcc-7 \ gcc-8 \ gccgo \ gccgo-5 \ gccgo-6 \ gccgo-7 \ gccgo-8 \ gcj \ geoiplookup6 \ gfortran \ gfortran-5 \ gfortran-6 \ gfortran-7 \ gfortran-8 \ gkrellm2 \ gmake \ gmplayer \ gnumake \ google-chrome \ google-chrome-stable \ gpc \ gpgv2 \ gtar \ hciattach \ hciconfig \ hd \ host \ hping \ hping3 \ iceweasel \ identify \ ifdown \ ifquery \ ifstatus \ import \ inotifywatch \ insmod.static \ iperf3 \ javac \ javadoc \ kplayer \ l2ping \ lbzip2 \ ldapadd \ ldapcompare \ ldapdelete \ ldapmodify \ ldapmodrdn \ ldappasswd \ ldapwhoami \ links2 \ lintian-info \ lusermod \ lvchange \ lvcreate \ lvdisplay \ lvextend \ lvmdiskscan \ lvreduce \ lvremove \ lvrename \ lvresize \ lvs \ lvscan \ lz4c \ mailsnarf \ mdecrypt \ mencoder \ micropython \ mkisofs \ mogrify \ montage \ mozilla-firefox \ mplayer2 \ msgsnarf \ muttng \ ncal \ pbzip2 \ pccardctl \ pdlzip \ perldoc \ phing \ pigz \ pinfo \ ping6 \ pkg_deinstall \ pkg_info \ pkill \ plzip \ pm-suspend \ pm-suspend-hybrid \ pmake \ postalias \ ppc-koji \ puppetca \ puppetd \ puppetdoc \ puppetmasterd \ puppetqd \ puppetrun \ pvchange \ pvcreate \ pvdisplay \ pvmove \ pvremove \ pvs \ pvscan \ pxz \ py.test \ py.test-2 \ py.test-3 \ pydoc3 \ pylint-2 \ pylint-3 \ pypy \ pypy3 \ pytest-2 \ pytest-3 \ python2 \ python2.7 \ python3 \ python3.3 \ python3.4 \ python3.5 \ python3.6 \ python3.7 \ python3.8 \ pyvenv-3.4 \ pyvenv-3.5 \ pyvenv-3.6 \ pyvenv-3.7 \ pyvenv-3.8 \ qemu-kvm \ qemu-system-i386 \ qemu-system-x86_64 \ quotacheck \ quotaoff \ quotaon \ ralsh \ rcsdiff \ rdict \ repquota \ rfcomm \ rlog \ rpm2targz \ rpm2txz \ rpmbuild \ rpmbuild-md5 \ s390-koji \ sbcl-mt \ scp \ sdptool \ setquota \ sftp \ sidedoor \ slogin \ smbcacls \ smbcquotas \ smbget \ smbpasswd \ smbtar \ smbtree \ sparc-koji \ spovray \ star \ stream \ sudoedit \ tightvncviewer \ tracepath6 \ typeset \ vgcfgbackup \ vgcfgrestore \ vgchange \ vgck \ vgconvert \ vgcreate \ vgdisplay \ vgexport \ vgextend \ vgimport \ vgmerge \ vgmknodes \ vgreduce \ vgremove \ vgrename \ vgs \ vgscan \ vgsplit \ vigr \ whatis \ xpovray \ xvnc4viewer \ ypcat symlinks: $(DATA) $(ss) 7z \ 7za $(ss) aclocal \ aclocal-1.10 aclocal-1.11 aclocal-1.12 aclocal-1.13 \ aclocal-1.14 aclocal-1.15 aclocal-1.16 $(ss) ant \ phing $(ss) aptitude \ aptitude-curses $(ss) asciidoc \ asciidoc.py $(ss) automake \ automake-1.10 automake-1.11 automake-1.12 automake-1.13 \ automake-1.14 automake-1.15 automake-1.16 $(ss) autoreconf \ autoheader $(ss) autoscan \ autoupdate $(ss) btdownloadheadless.py \ btdownloadcurses.py btdownloadgui.py $(ss) bzip2 \ lbzip2 pbzip2 $(ss) _cal \ ncal $(ss) cardctl \ pccardctl $(ss) chromium-browser \ chrome chromium google-chrome google-chrome-stable $(ss) complete \ compgen $(ss) convert \ animate compare composite conjure display identify import \ mogrify montage stream $(ss) cowsay \ cowthink $(ss) dict \ rdict $(ss) dpkg \ dpkg-deb dpkg-query dpkg-reconfigure $(ss) ether-wake \ etherwake $(ss) filesnarf \ mailsnarf msgsnarf $(ss) firefox \ iceweasel mozilla-firefox $(ss) freeciv \ civclient freeciv-gtk2 freeciv-gtk3 freeciv-sdl freeciv-xaw $(ss) freeciv-server \ civserver $(ss) function \ declare typeset $(ss) gcc \ c++ cc f77 f95 g++ g++-5 g++-6 g++-7 g++-8 g77 g95 gcc-5 \ gcc-6 gcc-7 gcc-8 gccgo gccgo-5 gccgo-6 gccgo-7 gccgo-8 gcj \ gfortran gfortran-5 gfortran-6 gfortran-7 gfortran-8 gpc $(ss) genisoimage \ mkisofs $(ss) geoiplookup \ geoiplookup6 $(ss) gkrellm \ gkrellm2 $(ss) gpgv \ gpgv2 $(ss) gzip \ pigz $(ss) hcitool \ ciptool dfutool hciattach hciconfig l2ping rfcomm sdptool $(ss) _hexdump \ hd $(ss) hping2 \ hping hping3 $(ss) ifup \ ifdown ifquery ifstatus $(ss) info \ pinfo $(ss) inotifywait \ inotifywatch $(ss) insmod \ insmod.static $(ss) iperf \ iperf3 $(ss) java \ javac javadoc $(ss) koji \ arm-koji ppc-koji s390-koji sparc-koji $(ss) ldapsearch \ ldapadd ldapcompare ldapdelete ldapmodify ldapmodrdn \ ldappasswd ldapwhoami $(ss) links \ links2 $(ss) lintian \ lintian-info $(ss) luseradd \ lusermod $(ss) lvm \ lvchange lvcreate lvdisplay lvextend lvmdiskscan lvreduce \ lvremove lvrename lvresize lvs lvscan pvchange pvcreate \ pvdisplay pvmove pvremove pvs pvscan vgcfgbackup vgcfgrestore \ vgchange vgck vgconvert vgcreate vgdisplay vgexport vgextend \ vgimport vgmerge vgmknodes vgreduce vgremove vgrename vgs \ vgscan vgsplit $(ss) lz4 \ lz4c $(ss) lzip \ clzip pdlzip plzip $(ss) make \ bmake colormake gmake gnumake pmake $(ss) man \ apropos whatis $(ss) mcrypt \ mdecrypt $(ss) mplayer \ gmplayer kplayer mencoder mplayer2 $(ss) mutt \ muttng $(ss) nslookup \ host $(ss) p4 \ g4 $(ss) perl \ perldoc $(ss) pine \ alpine $(ss) ping \ ping6 $(ss) pkg_delete \ pkg_deinstall pkg_info $(ss) pgrep \ pkill $(ss) pm-hibernate \ pm-suspend pm-suspend-hybrid $(ss) psql \ createdb createuser dropdb dropuser $(ss) postmap \ postalias $(ss) povray \ spovray xpovray $(ss) puppet \ filebucket puppetca puppetd puppetdoc puppetmasterd puppetqd \ puppetrun ralsh $(ss) pytest \ py.test py.test-2 py.test-3 pytest-2 pytest-3 $(ss) pydoc \ pydoc3 $(ss) pylint \ pylint-2 pylint-3 $(ss) python \ micropython pypy pypy3 python2 python2.7 python3 python3.3 python3.4 python3.5 python3.6 python3.7 python3.8 $(ss) pyvenv \ pyvenv-3.4 pyvenv-3.5 pyvenv-3.6 pyvenv-3.7 pyvenv-3.8 $(ss) qdbus \ dcop $(ss) qemu \ qemu-kvm qemu-system-i386 qemu-system-x86_64 $(ss) quota \ edquota quotacheck quotaoff quotaon repquota setquota $(ss) rcs \ ci co rcsdiff rlog $(ss) rpm \ rpmbuild rpmbuild-md5 $(ss) rpm2tgz \ rpm2targz rpm2txz $(ss) smbclient \ smbcacls smbcquotas smbget smbpasswd smbtar smbtree $(ss) sbcl \ sbcl-mt $(ss) ssh \ autossh scp sftp sidedoor slogin $(ss) sudo \ sudoedit $(ss) tar \ bsdtar gtar star $(ss) tracepath \ tracepath6 $(ss) update-alternatives \ alternatives $(ss) vipw \ vigr $(ss) vncviewer \ tightvncviewer xvnc4viewer $(ss) wine \ wine-development wine-stable $(ss) wodim \ cdrecord $(ss) xz \ pxz $(ss) ypmatch \ ypcat .PHONY: symlinks SETUP_SYMLINKS = $(srcdir)/../setup-symlinks.sh all-local: ss = $(SETUP_SYMLINKS) . all-local: symlinks install-data-hook: ss = $(SETUP_SYMLINKS) $(DESTDIR)$(bashcompdir) install-data-hook: symlinks check-local: ret=0; \ for file in $(bashcomp_DATA); do \ $${bashcomp_bash:-$${BASH:-bash}} \ -O extglob -n $(srcdir)/$$file || ret=$$?; \ done; \ exit $$ret bash-completion-2.11/completions/_adb000066400000000000000000000033661370676621500177120ustar00rootroot00000000000000# adb completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # the Android SDK, use that instead. _adb_command_usage() { COMPREPLY=($(compgen -W \ '$("$1" help 2>&1 | command grep "^ *\(adb \)\? *$2 " \ | command sed -e "s/[]|[]/\n/g" | _parse_help -)' -- "$cur")) } _adb() { local cur prev words cword _init_completion || return case $prev in -s | -p | --algo | --key | --iv) return ;; -f) _filedir return ;; esac local cmd i for ((i = 1; i < cword; i++)); do if [[ ${words[i]} != -* && ${words[i - 1]} != -[sp] ]]; then cmd="${words[i]}" break fi done if [[ ! -v cmd ]]; then local tmp=() if [[ ! $cur || $cur == -* ]]; then tmp+=($(compgen -W '$(_parse_help "$1" help)' -- "$cur")) fi if [[ ! $cur || $cur != -* ]]; then tmp+=($($1 help 2>&1 | awk '$1 == "adb" { print $2 }')) tmp+=(devices connect disconnect sideload) fi COMPREPLY=($(compgen -W '${tmp[@]}' -- "$cur")) return fi # TODO: more and better command completions _adb_command_usage "$1" $cmd case $cmd in push | restore | sideload) _filedir ;; forward) COMPREPLY=($(compgen -W \ '$("$1" help 2>&1 | command sed -ne "s/^ *adb *forward *-/-/p" | \ _parse_help -)' -- "$cur")) ;; reboot) COMPREPLY=($(compgen -W 'bootloader recovery' -- "$cur")) ;; esac } && complete -F _adb adb # ex: filetype=sh bash-completion-2.11/completions/_cal000066400000000000000000000016361370676621500177210ustar00rootroot00000000000000# cal(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _cal() { local cur prev words cword _init_completion || return case $prev in -m) if [[ $OSTYPE == *bsd* ]]; then COMPREPLY=($(compgen -W '{1..12}' -- "$cur")) return fi ;; -s) [[ $OSTYPE == *bsd* ]] && return ;; -A | -B | -d | -H) return ;; esac if [[ $cur == -* ]]; then local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) return fi local args _count_args ((args == 1)) && COMPREPLY=($(compgen -W '{1..12}' -- "$cur")) } && complete -F _cal cal ncal # ex: filetype=sh bash-completion-2.11/completions/_chfn000066400000000000000000000003561370676621500200760ustar00rootroot00000000000000# chfn(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. complete -u chfn # ex: filetype=sh bash-completion-2.11/completions/_chsh000066400000000000000000000012721370676621500201030ustar00rootroot00000000000000# chsh(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _chsh() { local cur prev words cword _init_completion || return case $prev in --list-shells | --help | -v | --version) return ;; -s | --shell) _shells return ;; esac if [[ $cur == -* ]]; then local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) else _allowed_users fi } && complete -F _chsh chsh # ex: filetype=sh bash-completion-2.11/completions/_dmesg000066400000000000000000000016411370676621500202550ustar00rootroot00000000000000# dmesg(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _dmesg() { [[ $OSTYPE == *solaris* ]] && return # no args there local cur prev words cword _init_completion || return case $prev in -h | --help | -V | --version | -s | --buffer-size | -M | -N) return ;; -f | --facility) COMPREPLY=($(compgen -W 'kern user mail daemon auth syslog lpr news' -- "$cur")) return ;; -l | --level | -n | --console-level) COMPREPLY=($(compgen -W '{1..8}' -- "$cur")) return ;; esac local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) } && complete -F _dmesg dmesg # ex: filetype=sh bash-completion-2.11/completions/_eject000066400000000000000000000014551370676621500202530ustar00rootroot00000000000000# bash completion for eject(1) -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _eject() { local cur prev words cword _init_completion || return case $prev in -h | --help | -V | --version | -c | --changerslot | -x | --cdspeed) return ;; -a | --auto | -i | --manualeject) COMPREPLY=($(compgen -W 'on off' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return elif [[ $prev == @(-d|--default) ]]; then return fi _cd_devices _dvd_devices } && complete -F _eject eject # ex: filetype=sh bash-completion-2.11/completions/_hexdump000066400000000000000000000012451370676621500206300ustar00rootroot00000000000000# hexdump(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _hexdump() { local cur prev words cword _init_completion || return case $prev in -V | -e | -n | -s) return ;; -f) _filedir return ;; esac if [[ $cur == -* ]]; then local opts="$(_parse_help "$1")" COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) return fi _filedir } && complete -F _hexdump hexdump hd # ex: filetype=sh bash-completion-2.11/completions/_hwclock000066400000000000000000000011561370676621500206110ustar00rootroot00000000000000# hwclock(8) completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # util-linux >= 2.23, use that instead. _hwclock() { local cur prev words cword _init_completion || return case $prev in -h | --help | -V | --version | --date | --epoch) return ;; -f | --rtc | --adjfile) _filedir return ;; esac COMPREPLY=( $(PATH="$PATH:/sbin" compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _hwclock hwclock # ex: filetype=sh bash-completion-2.11/completions/_ionice000066400000000000000000000023511370676621500204230ustar00rootroot00000000000000# ionice(1) completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # util-linux >= 2.23, use that instead. _ionice() { local cur prev words cword _init_completion || return local offset=0 i for ((i = 1; i <= cword; i++)); do case ${words[i]} in -h) return ;; -p) offset=0 break ;; -c | -n) ((i++)) continue ;; -*) continue ;; esac offset=$i break done if ((offset > 0)); then _command_offset $offset return fi case $prev in -c) COMPREPLY=($(compgen -W '{0..3}' -- "$cur")) return ;; -n) COMPREPLY=($(compgen -W '{0..7}' -- "$cur")) return ;; -p) _pids return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) return fi } && complete -F _ionice ionice # ex: filetype=sh bash-completion-2.11/completions/_look000066400000000000000000000006751370676621500201300ustar00rootroot00000000000000# look(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _look() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W '$(look "$cur" 2>/dev/null)' -- "$cur")) fi } && complete -F _look -o default look # ex: filetype=sh bash-completion-2.11/completions/_mock000066400000000000000000000040301370676621500201020ustar00rootroot00000000000000# bash completion for mock -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # mock > 1.1.0, use that instead. _mock() { local cur prev words cword split _init_completion -s || return local plugins='tmpfs root_cache yum_cache bind_mount ccache' local cfgdir=/etc/mock count=0 i for i in "${words[@]}"; do ((count == cword)) && break if [[ $i == --configdir ]]; then cfgdir="${words[count + 1]}" elif [[ $i == --configdir=* ]]; then cfgdir=${i/*=/} fi ((count++)) done case $prev in -h | --help | --copyin | --copyout | --arch | -D | --define | --with | --without | \ --uniqueext | --rpmbuild_timeout | --sources | --cwd) return ;; -r | --root) COMPREPLY=($(compgen -W "$(command ls $cfgdir)" -- "$cur")) COMPREPLY=(${COMPREPLY[@]/%.cfg/}) return ;; --configdir | --resultdir) _filedir -d return ;; --spec) _filedir spec return ;; --target) # Yep, compatible archs, not compatible build archs # (e.g. ix86 chroot builds in x86_64 mock host) # This would actually depend on what the target root # can be used to build for... COMPREPLY=($(compgen -W "$(command rpm --showrc | command sed -ne 's/^\s*compatible\s\s*archs\s*:\s*\(.*\)/\1/i p')" \ -- "$cur")) return ;; --enable-plugin | --disable-plugin) COMPREPLY=($(compgen -W "$plugins" -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else _filedir '@(?(no)src.r|s)pm' fi } && complete -F _mock mock # ex: filetype=sh bash-completion-2.11/completions/_modules000066400000000000000000000047521370676621500206340ustar00rootroot00000000000000# module completion by Ted Stern -*- shell-script -*- # # Use of this file is deprecated, upstream completion is available in # modules >= 3.2.7, use that instead. # # Completion for Environment Modules `module' alias. # # See https://sourceforge.net/projects/modules/ # https://modules.sourceforge.net/ # # There are several versions of modules that are commonly used. Older # Cray UNICOS systems and many other sites use 2.2.2b. The latest GPL'd # version is 3.1.6. But the module alias is somewhat self-documenting # via the `module help' command, so use that to print the options. # # Programmable completion might be more difficult under tcsh since the # module command is an alias, and the `module avail' command returns # its output as stderr. # Test for existence of /etc/profile.d/modules.sh too because we may end up # being sourced before it and thus before the `module' alias has been defined. [ -f /etc/profile.d/modules.sh ] || return 1 _module_list() { local modules="$(command sed 's/:/ /g' <<<$LOADEDMODULES | sort)" compgen -W "$modules" -- $1 } _module_path() { local modules="$(command sed 's/:/ /g' <<<$MODULEPATH | sort)" compgen -W "$modules" -- $1 } _module_avail() { local modules="$( module avail 2>&1 | command grep -E -v '^(-|$)' | xargs printf '%s\n' | command sed -e 's/(default)//g' | sort )" compgen -W "$modules" -- $1 } # A completion function for the module alias _module() { local cur prev words cword _init_completion || return if ((cword == 1)); then # First parameter on line -- we expect it to be a mode selection local options options="$(module help 2>&1 | command grep -E '^[[:space:]]*\+' | awk '{print $2}' | command sed -e 's/|/ /g' | sort)" COMPREPLY=($(compgen -W "$options" -- "$cur")) elif ((cword == 2)); then case $prev in add | display | help | load | show | whatis) COMPREPLY=($(_module_avail "$cur")) ;; rm | switch | swap | unload | update) COMPREPLY=($(_module_list "$cur")) ;; unuse) COMPREPLY=($(_module_path "$cur")) ;; esac elif ((cword == 3)); then case ${words[1]} in swap | switch) COMPREPLY=($(_module_avail "$cur")) ;; esac fi } && complete -F _module -o default module # ex: filetype=sh bash-completion-2.11/completions/_mount000066400000000000000000000040131370676621500203140ustar00rootroot00000000000000# mount(8) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.28, use that instead. if [[ $OSTYPE == *linux* ]]; then . "$BASH_SOURCE.linux" return fi # This will pull a list of possible mounts out of # /etc/{,v}fstab, unless the word being completed contains a ':', which # would indicate the specification of an NFS server. In that case, we # query the server for a list of all available exports and complete on # that instead. # _mount() { local cur prev words cword _init_completion -n : || return local sm host case $prev in -t | --types) _fstypes return ;; esac [[ $cur == \\ ]] && cur="/" if [[ $cur == *:* ]]; then for sm in "$(type -P showmount)" {,/usr}/{,s}bin/showmount; do [[ -x $sm ]] || continue COMPREPLY=($(compgen -W "$("$sm" -e ${cur%%:*} | awk 'NR>1 {print $1}')" -- "${cur#*:}")) return done fi if [[ $cur == //* ]]; then host=${cur#//} host=${host%%/*} if [[ -n $host ]]; then COMPREPLY=($(compgen -P "//$host" -W \ "$(smbclient -d 0 -NL $host 2>/dev/null | command sed -ne '/^[[:blank:]]*Sharename/,/^$/p' | command sed -ne '3,$s|^[^A-Za-z]*\([^[:blank:]]*\).*$|/\1|p')" \ -- "${cur#//$host}")) fi elif [[ -r /etc/vfstab ]]; then # Solaris COMPREPLY=($(compgen -W "$(awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' /etc/vfstab)" -- "$cur")) elif [[ ! -e /etc/fstab ]]; then # probably Cygwin COMPREPLY=($(compgen -W "$($1 | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}')" -- "$cur")) else # probably BSD COMPREPLY=($(compgen -W "$(awk '! /^[ \t]*#/ {if ($2 ~ /\//) print $2}' /etc/fstab)" -- "$cur")) fi } && complete -F _mount -o default -o dirnames mount # ex: filetype=sh bash-completion-2.11/completions/_mount.linux000066400000000000000000000254461370676621500214670ustar00rootroot00000000000000# mount(8) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.28, use that instead. _mount() { local cur prev words cword _init_completion -n =: || return local split=false case "$prev" in -t | --types) # find /lib/modules/$(uname -r)/ -type f -path '*/fs/*.ko' -printf '%f\n' | cut -d. -f1 # FIXME: no if [[ $cur == ?*,* ]]; then prev="${cur%,*}" cur="${cur##*,}" split=true fi COMPREPLY=($(compgen -W 'auto adfs affs autofs btrfs cifs coda cramfs davfs debugfs devpts efs ext2 ext3 ext4 fuse hfs hfsplus hpfs iso9660 jffs2 jfs minix msdos ncpfs nfs nfs4 ntfs ntfs-3g proc qnx4 ramfs reiserfs romfs squashfs smbfs sysv tmpfs ubifs udf ufs umsdos usbfs vfat xfs' -- "$cur")) _fstypes $split && COMPREPLY=(${COMPREPLY[@]/#/$prev,}) return ;; --bind | -B | --rbind | -R) _filedir -d return ;; -p | --pass-fd) COMPREPLY=($(compgen -W '{0..9}')) compopt -o nospace return ;; -L) COMPREPLY=($( cd "/dev/disk/by-label/" 2>/dev/null || return compgen -f -- "$cur" )) return ;; -U) COMPREPLY=($( cd "/dev/disk/by-uuid/" 2>/dev/null || return compgen -f -- "$cur" )) return ;; -O | --test-opts) # argument required but no completions available return ;; -o | --options) local fstype=auto # default fstype for ((i = ${#words[@]} - 1; i > 0; i--)); do if [[ ${words[i]} == -@(t|-types)* ]]; then if [[ ${words[i]} == *=* ]]; then [[ ${words[i]} == ?*,* ]] && break fstype="${words[i]#-*=}" else [[ ${words[i + 1]} == ?*,* ]] && break fstype="${words[i + 1]}" fi break fi done # no is not a real fstype, reset to "auto" [[ $fstype == no?* ]] && fstype=auto # split options list if [[ $cur == ?*,* ]]; then prev="${cur%,*}" cur="${cur##*,}" split=true fi # no completion if $cur is opt=smth [[ $cur == *=* ]] && return # mount options COMPREPLY=($(compgen -W 'loop {,a}sync {,no}atime {,no}auto {,fs,def,root}context= defaults {,no}dev {,no}diratime dirsync {,no}exec group {,no}iversion {,no}mand _netdev nofail {,no}relatime {,no}strictatime {,no}suid owner remount ro rw {,no}user users' -- "$cur")) case "$fstype" in adfs | auto) COMPREPLY+=($(compgen -W '{u,g}id= {own,oth}mask=' -- "$cur")) ;;& affs | auto) COMPREPLY+=($(compgen -W '{u,g}id= set{u,g}id= mode= protect usemp verbose prefix= volume= reserved= root= bs= {,no,usr,grp}quota' -- "$cur")) ;;& btrfs | auto) COMPREPLY+=($(compgen -W 'degraded subvol= subvolid= device= nodatasum nodatacow nobarrier max_inline= alloc_start= thread_pool= compress= compress-force= ssd noacl notreelog flushoncommit metadata_ratio= {,no}space_cache clear_cache user_subvol_rm_allowed autodefrag inode_cache' -- "$cur")) ;;& cifs | auto) COMPREPLY+=($(compgen -W 'user= password= credentials= {u,g}id= force{u,g}id port= servern= netbiosname= {file,dir}_mode= ip= domain= guest iocharset {,no}setuids {,no,dyn}perm directio {,no}mapchars {,no}intr hard soft noacl nocase sec= nobrl sfu {,no}serverino nounix nouser_xattr {r,w}size= rwpidforward backup{u,g}id cache=' -- "$cur")) ;;& davfs | auto) COMPREPLY+=($(compgen -W 'conf= {file,dir}_mode= {u,g}id= username=' -- "$cur")) ;;& ext[2-4] | auto) COMPREPLY+=($(compgen -W '{,no}acl bsddf minixdf check= debug errors= {,no}grpid {bsd,sysv}groups {,no,usr,grp}quota nobh nouid32 oldalloc orlov res{u,g}id= sb= {,no}user_xattr' -- "$cur")) ;;& ext[34] | auto) COMPREPLY+=($(compgen -W 'journal= journal_dev= norecovery noload data= barrier= commit=' -- "$cur")) ;;& ext4 | auto) COMPREPLY+=($(compgen -W 'journal_checksum journal_async_commit nobarrier inode_readahead= stripe= {,no}delalloc abort {max,min}_batch_time= journal_ioprio= {,no}auto_da_alloc {,no}discard nouid32 resize {,no}block_validity dioread_{,no}lock max_dir_size_kb= i_version' -- "$cur")) ;;& msdos | umsdos | vfat | auto) COMPREPLY+=($(compgen -W 'blocksize= {u,g}id= {u,d,f}mask= allow_utime= check= codepage= conv= cvf_format= cvf_option= debug fat= iocharset= tz= quiet showexec sys_immutable flush usefree {,no}dots dotsOK=' -- "$cur")) ;;& vfat | auto) COMPREPLY+=($(compgen -W 'uni_xlate posix nonumtail utf8 shortname=' -- "$cur")) ;;& iso9660 | auto) COMPREPLY+=($(compgen -W 'norock nojoliet check= {u,g}id= map= mode= unhide block= conv= cruft session= sbsector= iocharset= utf8' -- "$cur")) ;;& jffs2 | auto) COMPREPLY+=($(compgen -W 'compr= rp_size=' -- "$cur")) ;;& jfs | auto) COMPREPLY+=($(compgen -W 'iocharset= resize= {,no}integrity errors= {,no,usr,grp}quota' -- "$cur")) ;;& nfs | nfs4 | auto) COMPREPLY+=($(compgen -W 'soft hard timeo= retrans= {r,w}size= {,no}ac acreg{min,max}= acdir{min,max}= actimeo= bg fg retry= sec= {,no}sharecache {,no}resvport lookupcache= proto= port= {,no}intr {,no}cto {,nfs}vers= ' -- "$cur")) ;;& nfs | auto) COMPREPLY+=($(compgen -W 'udp tcp rdma mount{port,proto,host}= mountvers= namlen={,no}lock {,no}acl {,no}rdirplus {,no}fsc' -- "$cur")) ;;& nfs4 | auto) COMPREPLY+=($(compgen -W 'clientaddr= {,no}migration' \ -- "$cur")) ;;& ntfs-3g) COMPREPLY+=($(compgen -W '{u,g}id= {u,f,d}mask= usermapping= permissions inherit locale= force {,no}recover ignore_case remove_hiberfile show_sys_files hide_{hid,dot}_files windows_names allow_other max_read= silent no_def_opts streams_interface= user_xattr efs_raw {,no}compression debug no_detach' -- "$cur")) ;;& proc | auto) COMPREPLY+=($(compgen -W '{u,g}id=' -- "$cur")) ;;& reiserfs | auto) COMPREPLY+=($(compgen -W 'conv hash= {,no_un}hashed_relocation noborder nolog notail replayonly resize= user_xattr acl barrier=' -- "$cur")) ;;& tmpfs | auto) COMPREPLY+=($(compgen -W 'size= nr_blocks= nr_inodes= mode= {u,g}id= mpol=' -- "$cur")) ;;& udf | auto) COMPREPLY+=($(compgen -W '{u,g}id= umask= unhide undelete nostrict iocharset bs= novrs session= anchor= volume= partition= lastblock= fileset= rootdir=' -- "$cur")) ;;& usbfs | auto) COMPREPLY+=($(compgen -W 'dev{u,g}id= devmode= bus{u,g}id= busmode= list{u,g}id= listmode=' -- "$cur")) ;;& xfs | auto) COMPREPLY+=($(compgen -W 'allocsize= {,no}attr2 barrier dmapi {,no}grpid {bsd,sysv}groups ihashsize= {,no}ikeep inode{32,64} {,no}largeio logbufs= logbsize= logdev= rtdev= mtpt= noalign norecovery nouuid osyncisosync {u,g,p}qnoenforce {,u,usr,g,grp,p,prj}quota sunit= swidth= swalloc' -- "$cur")) ;;& esac # COMP_WORDBREAKS is a real pain in the ass prev="${prev##*[$COMP_WORDBREAKS]}" $split && COMPREPLY=(${COMPREPLY[@]/#/"$prev,"}) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--version --help --verbose --all --fork --fake --internal-only -l --no-mtab --no-canonicalize --pass-fd -s --read-only --rw -L -U --types --test-opts --options --bind --rbind --move' -- "$cur")) [[ ${COMPREPLY-} ]] && return fi [[ $cur == \\ ]] && cur="/" local sm host if [[ $cur == *:* ]]; then for sm in "$(type -P showmount)" {,/usr}/{,s}bin/showmount; do [[ -x $sm ]] || continue COMPREPLY=($(compgen -W "$("$sm" -e ${cur%%:*} | awk 'NR>1 {print $1}')" -- "${cur#*:}")) return done fi if [[ $cur == //* ]]; then host=${cur#//} host=${host%%/*} if [[ -n $host ]]; then COMPREPLY=($(compgen -P "//$host" -W \ "$(smbclient -d 0 -NL $host 2>/dev/null | command sed -ne '/^[[:blank:]]*Sharename/,/^$/p' | command sed -ne '3,$s|^[^A-Za-z]*\([^[:blank:]]*\).*$|/\1|p')" \ -- "${cur#//$host}")) fi fi _filedir } && complete -F _mount mount # ex: filetype=sh bash-completion-2.11/completions/_newgrp000066400000000000000000000006601370676621500204600ustar00rootroot00000000000000# newgrp(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _newgrp() { local cur prev words cword _init_completion || return if [[ $cur == "-" ]]; then COMPREPLY=(-) else _allowed_groups "$cur" fi } && complete -F _newgrp newgrp # ex: filetype=sh bash-completion-2.11/completions/_nmcli000066400000000000000000000140421370676621500202570ustar00rootroot00000000000000# nmcli completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # NetworkManager >= 0.9.8.0, use that instead. _nmcli_list() { COMPREPLY=($(compgen -W '$1' -- "$cur")) } _nmcli_con_id() { local IFS=$'\n' COMPREPLY=($(compgen -W "$(nmcli con list 2>/dev/null | tail -n +2 | awk -F ' {2,}' '{print $1 }')" -- "$cur")) } _nmcli_con_uuid() { COMPREPLY=($(compgen -W "$(nmcli con list 2>/dev/null | tail -n +2 | awk -F ' {2,}' '{print $2}')" -- "$cur")) } _nmcli_ap_ssid() { local IFS=$'\n' COMPREPLY=($(compgen -W "$(nmcli dev wifi list 2>/dev/null | tail -n +2 | awk -F ' {2,}' '{print $1}')" -- "$cur")) } _nmcli_ab_bssid() { COMPREPLY=($(compgen -W "$(nmcli dev wifi list 2>/dev/null | tail -n +2 | awk -F ' {2,}' '{print $2}')" -- "$cur")) } _nmcli() { local cur prev words cword _init_completion || return case $prev in -m | --mode) COMPREPLY=($(compgen -W 'tabular multiline' -- "$cur")) return ;; -f | --fields) COMPREPLY=($(compgen -W 'all common' -- "$cur")) return ;; -e | --escape) _nmcli_list "yes no" return ;; id) _nmcli_con_id return ;; uuid) _nmcli_con_uuid return ;; iface) _available_interfaces return ;; bssid) _nmcli_ab_bssid return ;; wep-key-type) _nmcli_list "key phrase" return ;; esac if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--terse --pretty --mode --fields --escape --version --help' -- "$cur")) else COMPREPLY=($(compgen -W "nm con dev" -- "$cur")) fi else local object=${words[1]} local command=${words[2]} case $object in nm) case $command in enable) _nmcli_list "true false" return ;; sleep) _nmcli_list "true false" return ;; wifi) _nmcli_list "on off" return ;; wwan) _nmcli_list "on off" return ;; wimax) _nmcli_list "on off" return ;; esac COMPREPLY=($(compgen -W 'status permissions enable sleep wifi wwan wimax' -- "$cur")) ;; con) case $command in list) COMPREPLY=($(compgen -W 'id uuid' -- "$cur")) return ;; up) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--nowait --timeout' \ -- "$cur")) else COMPREPLY=($(compgen -W 'id uuid iface ap nsp' \ -- "$cur")) fi return ;; down) COMPREPLY=($(compgen -W 'id uuid' -- "$cur")) return ;; delete) COMPREPLY=($(compgen -W 'id uuid' -- "$cur")) return ;; esac COMPREPLY=($(compgen -W 'list status up down delete' \ -- "$cur")) ;; dev) case $command in list) COMPREPLY=($(compgen -W 'iface' -- "$cur")) return ;; disconnect) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--nowait --timeout' \ -- "$cur")) else COMPREPLY=($(compgen -W 'iface' -- "$cur")) fi return ;; wifi) local subcommand=${words[3]} case $subcommand in list) COMPREPLY=($(compgen -W 'iface bssid' \ -- "$cur")) return ;; connect) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--private --nowait --timeout' -- "$cur")) else if [[ $prev == "connect" ]]; then _nmcli_ap_ssid else COMPREPLY=($(compgen -W 'password wep-key-type iface bssid name' \ -- "$cur")) fi fi return ;; esac COMPREPLY=($(compgen -W 'list connect' -- "$cur")) return ;; esac COMPREPLY=($(compgen -W 'status list disconnect wifi' \ -- "$cur")) ;; esac fi } && complete -F _nmcli nmcli # ex: filetype=sh bash-completion-2.11/completions/_renice000066400000000000000000000014021370676621500204160ustar00rootroot00000000000000# renice(8) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. _renice() { local cur prev words cword _init_completion || return local command=$1 curopt i=0 # walk back through command line and find last option while ((i <= cword && ${#COMPREPLY[@]} == 0)); do curopt=${words[cword - i]} case "$curopt" in -u) _allowed_users ;; -g) _pgids ;; -p | "$command") _pids ;; esac ((i++)) done } && complete -F _renice renice # ex: filetype=sh bash-completion-2.11/completions/_repomanage000066400000000000000000000011361370676621500212730ustar00rootroot00000000000000# bash completion for repomanage -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # yum-utils >= 1.1.24, use that instead. _repomanage() { local cur prev words cword split _init_completion -s || return [[ $prev == -@([hk]|-help|-keep) ]] && return $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else _filedir -d fi } && complete -F _repomanage repomanage # ex: filetype=sh bash-completion-2.11/completions/_reptyr000066400000000000000000000010451370676621500205010ustar00rootroot00000000000000# bash completion for reptyr(1) -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # reptyr > 0.6.2, use that instead. _reptyr() { local cur prev words cword _init_completion || return case $prev in -l) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi [[ $prev != +([0-9]) ]] && _pids } && complete -F _reptyr reptyr # ex: filetype=sh bash-completion-2.11/completions/_rfkill000066400000000000000000000016371370676621500204460ustar00rootroot00000000000000# bash completion for rfkill -*- shell-script -*- # Use of this file is deprecated on systems with util-linux >= 2.31, which # ships completion for the rfkill included with it. _rfkill() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--version' -- "$cur")) else case $cword in 1) COMPREPLY=($(compgen -W "help event list block unblock" \ -- "$cur")) ;; 2) if [[ $prev == block || $prev == unblock ]]; then COMPREPLY=($(compgen -W "$($1 list | awk -F: \ '/^[0-9]/ {print $1}') all wifi bluetooth uwb wimax \ wwan gps" -- "$cur")) fi ;; esac fi } && complete -F _rfkill rfkill # ex: filetype=sh bash-completion-2.11/completions/_rtcwake000066400000000000000000000015551370676621500206220ustar00rootroot00000000000000# bash completion for rtcwake -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # util-linux >= 2.23, use that instead. _rtcwake() { local cur prev words cword split _init_completion -s || return case "$prev" in --help | -h | --version | -V | --seconds | -s | --time | -t) return ;; --mode | -m) COMPREPLY=($(compgen -W 'standby mem disk on no off' -- "$cur")) return ;; --device | -d) COMPREPLY=($(command ls -d /dev/rtc?* 2>/dev/null)) COMPREPLY=($(compgen -W '${COMPREPLY[@]#/dev/}' -- "$cur")) return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _rtcwake rtcwake # ex: filetype=sh bash-completion-2.11/completions/_runuser000066400000000000000000000003611370676621500206570ustar00rootroot00000000000000# runuser(1) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. complete -u runuser # ex: filetype=sh bash-completion-2.11/completions/_su000066400000000000000000000017321370676621500176060ustar00rootroot00000000000000# bash completion for su(1) -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.23, use that instead. if [[ $OSTYPE != *linux* ]]; then complete -u su # default completion return fi _su() { # linux-specific completion local cur prev words cword split _init_completion -s || return case "$prev" in -s | --shell) _shells return ;; -c | --command | --session-command) local IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -d -c -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi COMPREPLY=($(compgen -u -- "$cur")) } && complete -F _su su # ex: filetype=sh bash-completion-2.11/completions/_svn000066400000000000000000000212621370676621500177650ustar00rootroot00000000000000# svn completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # subversion >= 0.12.0, use that instead. _svn() { local cur prev words cword _init_completion || return local commands commands='add blame praise annotate ann cat checkout co cleanup commit \ ci copy cp delete del remove rm diff di export help ? h import \ info list ls lock log merge mkdir move mv rename ren \ propdel pdel pd propedit pedit pe propget pget pg \ proplist plist pl propset pset ps resolved revert \ status stat st switch sw unlock update up' if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--version' -- "$cur")) else COMPREPLY=($(compgen -W "$commands" -- "$cur")) fi else case $prev in --config-dir) _filedir -d return ;; -F | --file | --targets) _filedir return ;; --encoding) _xfunc iconv _iconv_charsets return ;; --editor-cmd | --diff-cmd | --diff3-cmd) compopt -o filenames COMPREPLY=($(compgen -c -- "$cur")) return ;; esac local command=${words[1]} if [[ $cur == -* ]]; then # possible options for the command local options case $command in add) options='--auto-props --no-auto-props --force --targets --no-ignore --non-recursive --quiet' ;; blame | annotate | ann | praise) options='--revision --username --password --no-auth-cache --non-interactive --verbose --incremental --xml' ;; cat) options='--revision --username --password --no-auth-cache --non-interactive' ;; checkout | co) options='--revision --quiet --non-recursive --username --password --no-auth-cache --non-interactive --ignore-externals' ;; cleanup) options='--diff3-cmd' ;; commit | ci) options='--message --file --encoding --force-log --quiet --non-recursive --targets --editor-cmd --username --password --no-auth-cache --non-interactive --no-unlock' ;; copy | cp) options='--message --file --encoding --force-log --revision --quiet --editor-cmd -username --password --no-auth-cache --non-interactive' ;; delete | del | remove | rm) options='--force --message --file --encoding --force-log --quiet --targets --editor-cmd --username --password --no-auth-cache --non-interactive' ;; diff | di) options='--revision --extensions --diff-cmd --no-diff-deleted --non-recursive --username --password --no-auth-cache --non-interactive --force --old --new --notice-ancestry' ;; export) options='--revision --quiet --username --password --no-auth-cache --non-interactive --non-recursive --force --native-eol --ignore-externals' ;; import) options='--auto-props --no-auto-props --message --file --encoding --force-log --quiet --non-recursive --no-ignore --editor-cmd --username --password --no-auth-cache --non-interactive' ;; info) options='--username --password --no-auth-cache --non-interactive --revision --xml --targets --recursive --incremental' ;; list | ls) options='--revision --verbose --recursive --username --password --no-auth-cache --non-interactive --incremental --xml' ;; lock) options='--message --file --encoding --force-log --targets --force --username --password --no-auth-cache --non-interactive' ;; log) options='--revision --verbose --targets --username --password --no-auth-cache --non-interactive --stop-on-copy --incremental --xml --quiet --limit' ;; merge) options='--revision --non-recursive --quiet --force --dry-run --diff3-cmd --username --password --no-auth-cache --non-interactive --ignore-ancestry' ;; mkdir) options='--message --file --encoding --force-log --quiet --editor-cmd --username --password --no-auth-cache --non-interactive' ;; move | mv | rename | ren) options='--message --file --encoding --force-log --revision --quiet --force --editor-cmd --username --password --no-auth-cache --non-interactive' ;; propdel | pdel | pd) options='--quiet --recursive --revision --revprop --username --password --no-auth-cache --non-interactive' ;; propedit | pedit | pe) options='--revision --revprop --encoding --editor-cmd --username --password --no-auth-cache --non-interactive --force' ;; propget | pget | pg) options='--recursive --revision --revprop --strict --username --password --no-auth-cache --non-interactive' ;; proplist | plist | pl) options='--verbose --recursive --revision --revprop --quiet --username --password --no-auth-cache --non-interactive' ;; propset | pset | ps) options='--file --quiet --targets --recursive --revprop --encoding --username --password --no-auth-cache --non-interactive --revision --force' ;; resolved) options='--targets --recursive --quiet' ;; revert) options='--targets --recursive --quiet' ;; status | stat | st) options='--show-updates --verbose --non-recursive --quiet --username --password --no-auth-cache --non-interactive --no-ignore --ignore-externals --incremental --xml' ;; switch | sw) options='--relocate --revision --non-recursive --quiet --username --password --no-auth-cache --non-interactive --diff3-cmd' ;; unlock) options='--targets --force --username --password --no-auth-cache --non-interactive' ;; update | up) options='--revision --non-recursive --quiet --username --password --no-auth-cache --non-interactive --diff3-cmd --ignore-externals' ;; esac options+=" --help --config-dir" COMPREPLY=($(compgen -W "$options" -- "$cur")) else if [[ $command == @(help|[h?]) ]]; then COMPREPLY=($(compgen -W "$commands" -- "$cur")) else _filedir fi fi fi } && complete -F _svn svn # ex: filetype=sh bash-completion-2.11/completions/_svnadmin000066400000000000000000000044041370676621500207750ustar00rootroot00000000000000# svnadmin completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # subversion >= 0.12.0, use that instead. _svnadmin() { local cur prev words cword _init_completion || return local commands commands='create deltify dump help ? hotcopy list-dblogs list-unused-dblogs load lslocks lstxns recover rmlocks rmtxns setlog verify' if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--version' -- "$cur")) else COMPREPLY=($(compgen -W "$commands" -- "$cur")) fi else case $prev in --config-dir) _filedir -d return ;; --fs-type) COMPREPLY=($(compgen -W 'fsfs bdb' -- "$cur")) return ;; esac local command=${words[1]} if [[ $cur == -* ]]; then # possible options for the command local options case $command in create) options='--bdb-txn-nosync --bdb-log-keep --config-dir --fs-type' ;; deltify) options='--revision --quiet' ;; dump) options='--revision --incremental --quiet --deltas' ;; hotcopy) options='--clean-logs' ;; load) options='--ignore-uuid --force-uuid --parent-dir --quiet --use-pre-commit-hook --use-post-commit-hook' ;; rmtxns) options='--quiet' ;; setlog) options='--revision --bypass-hooks' ;; esac options+=" --help" COMPREPLY=($(compgen -W "$options" -- "$cur")) else if [[ $command == @(help|[h?]) ]]; then COMPREPLY=($(compgen -W "$commands" -- "$cur")) else _filedir fi fi fi } && complete -F _svnadmin -o default svnadmin # ex: filetype=sh bash-completion-2.11/completions/_svnlook000066400000000000000000000037041370676621500206530ustar00rootroot00000000000000# svnlook completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # subversion >= 0.12.0, use that instead. _svnlook() { local cur prev words cword _init_completion || return local commands commands='author cat changed date diff dirs-changed help ? h history info lock log propget pget pg proplist plist pl tree uuid youngest' if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--version' -- "$cur")) else COMPREPLY=($(compgen -W "$commands" -- "$cur")) fi else local command=${words[1]} if [[ $cur == -* ]]; then # possible options for the command local options case $command in author | cat | date | dirs-changed | info | log) options='--revision --transaction' ;; changed) options='--revision --transaction --copy-info' ;; diff) options='--revision --transaction --no-diff-deleted --no-diff-added --diff-copy-from' ;; history) options='--revision --show-ids' ;; propget | proplist) options='--revision --transaction --revprop' ;; tree) options='--revision --transaction --show-ids --full-paths' ;; esac options+=" --help" COMPREPLY=($(compgen -W "$options" -- "$cur")) else if [[ $command == @(help|[h?]) ]]; then COMPREPLY=($(compgen -W "$commands" -- "$cur")) else _filedir fi fi fi } && complete -F _svnlook -o default svnlook # ex: filetype=sh bash-completion-2.11/completions/_udevadm000066400000000000000000000041751370676621500206100ustar00rootroot00000000000000# udevadm(8) completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # systemd >= 196, use that instead. _udevadm() { local cur prev words cword split _init_completion -s || return local i udevcmd for ((i = 1; i < cword; i++)); do if [[ ${words[i]} != -* ]]; then udevcmd=${words[i]} break fi done case $prev in --help | --version | --property | --children-max | --timeout | --seq-start | \ --seq-end | --attr-match | --attr-nomatch | --parent-match | --property-match | \ --tag-match | --subsystem-match | --subsystem-nomatch | --sysname-match | \ --path) return ;; --log-priority) COMPREPLY=($(compgen -W 'err info debug' -- "$cur")) return ;; --query) COMPREPLY=($(compgen -W 'name symlink path property all' \ -- "$cur")) return ;; --name) cur=${cur:=/dev/} _filedir return ;; --device-id-of-file | --exit-if-exists) _filedir return ;; --action) COMPREPLY=($(compgen -W 'add change remove' -- "$cur")) return ;; --type) COMPREPLY=($(compgen -W 'devices subsystems failed' -- "$cur")) return ;; esac $split && return if [[ ! -v udevcmd ]]; then case $cur in -*) COMPREPLY=($(compgen -W '--help --version --debug' -- "$cur")) ;; *) COMPREPLY=($(compgen -W "$("$1" --help 2>/dev/null | awk '/^[ \t]/ { print $1 }')" -- "$cur")) ;; esac return fi if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W \ '$("$1" ${udevcmd-} --help 2>/dev/null | _parse_help -)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _udevadm udevadm # ex: filetype=sh bash-completion-2.11/completions/_umount000066400000000000000000000011671370676621500205100ustar00rootroot00000000000000# umount(8) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.28, use that instead. if [[ $OSTYPE == *linux* ]]; then . "$BASH_SOURCE.linux" return fi # umount(8) completion. This relies on the mount point being the third # space-delimited field in the output of mount(8) # _umount() { local cur prev words cword _init_completion || return local IFS=$'\n' COMPREPLY=($(compgen -W '$(mount | cut -d" " -f 3)' -- "$cur")) } && complete -F _umount -o dirnames umount # ex: filetype=sh bash-completion-2.11/completions/_umount.linux000066400000000000000000000110061370676621500216370ustar00rootroot00000000000000# umount(8) completion -*- shell-script -*- # Use of this file is deprecated on Linux. Upstream completion is # available in util-linux >= 2.28, use that instead. # Just like COMPREPLY=(`compgen -W "${COMPREPLY[*]}" -- "$cur"`), only better! # # This will correctly escape special characters in COMPREPLY. _reply_compgen_array() { # Create the argument for compgen -W by escaping twice. # # One round of escape is because we want to reply with escaped arguments. A # second round is required because compgen -W will helpfully expand it's # argument. local i wlist for i in ${!COMPREPLY[*]}; do local q=$(quote "$(printf %q "${COMPREPLY[i]}")") wlist+=$q$'\n' done # We also have to add another round of escaping to $cur. local ecur="$cur" ecur=${ecur//\\/\\\\} ecur=${ecur//\'/\\\'} # Actually generate completions. local ifs=$IFS IFS=$'\n' eval 'COMPREPLY=(`compgen -W "$wlist" -- "${ecur}"`)' IFS=$ifs } # Unescape strings in the linux fstab(5) format (with octal escapes). __linux_fstab_unescape() { eval $1="'${!1//\'/\\047}'" eval $1="'${!1/%\\/\\\\}'" eval "$1=$'${!1}'" } # Complete linux fstab entries. # # Reads a file from stdin in the linux fstab(5) format; as used by /etc/fstab # and /proc/mounts. With 1st arg -L, look for entries by label. # shellcheck disable=SC2120 _linux_fstab() { COMPREPLY=() # Read and unescape values into COMPREPLY local fs_spec fs_file fs_other local ifs="$IFS" while read -r fs_spec fs_file fs_other; do if [[ $fs_spec == [#]* ]]; then continue; fi if [[ ${1-} == -L ]]; then local fs_label=${fs_spec/#LABEL=/} if [[ $fs_label != "$fs_spec" ]]; then __linux_fstab_unescape fs_label IFS=$'\0' COMPREPLY+=("$fs_label") IFS=$ifs fi else __linux_fstab_unescape fs_spec __linux_fstab_unescape fs_file IFS=$'\0' [[ $fs_spec == */* ]] && COMPREPLY+=("$fs_spec") [[ $fs_file == */* ]] && COMPREPLY+=("$fs_file") IFS=$ifs fi done # Add relative paths to COMPREPLY if [[ $cur && $cur != /* ]]; then local realcur [[ $cur == */ ]] && # don't let readlink drop last / from path realcur="$(readlink -f "$cur." 2>/dev/null)/" || realcur=$(readlink -f "$cur" 2>/dev/null) if [[ $realcur ]]; then local dirrealcur="" dircur="" basecur if [[ $cur == */* ]]; then dirrealcur="${realcur%/*}/" dircur="${cur%/*}/" fi basecur=${cur#"$dircur"} local i for i in ${!COMPREPLY[*]}; do [[ ${COMPREPLY[i]} == "$realcur"* ]] && COMPREPLY+=($(cd "$dircur" 2>/dev/null && compgen -f -d -P "$dircur" \ -X "!${COMPREPLY[i]##"$dirrealcur"}" -- "$basecur")) done fi fi _reply_compgen_array } _umount() { local cur prev words cword _init_completion || return case "$prev" in -t) # FIXME: no local split=false if [[ $cur == ?*,* ]]; then prev="${cur%,*}" cur="${cur##*,}" split=true fi COMPREPLY=($(compgen -W 'adfs affs autofs btrfs cifs coda cramfs debugfs devpts efs ext2 ext3 ext4 fuse hfs hfsplus hpfs iso9660 jfs minix msdos ncpfs nfs nfs4 ntfs ntfs-3g proc qnx4 ramfs reiserfs romfs squashfs smbfs sysv tmpfs ubifs udf ufs umsdos usbfs vfat xfs' -- "$cur")) _fstypes $split && COMPREPLY=(${COMPREPLY[@]/#/$prev,}) return ;; -O) # argument required but no completions available return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-V -h -v -n -r -d -i -a -t -O -f -l --no-canonicalize --fake' -- "$cur")) [[ ${COMPREPLY-} ]] && return fi if [[ -r /proc/mounts ]]; then # Linux /proc/mounts is properly quoted. This is important when # unmounting usb devices with pretty names. _linux_fstab = 2.23, use that instead. complete -u write # ex: filetype=sh bash-completion-2.11/completions/_xm000066400000000000000000000170621370676621500176060ustar00rootroot00000000000000# bash completion for xm -*- shell-script -*- # Use of this file is deprecated. The 'xm' command itself is no longer # provided by upstream. It has been replaced with the 'xl' command, for # which upstream provides completion, use that instead. _xen_domain_names() { COMPREPLY=($(compgen -W "$(xm list 2>/dev/null | awk '!/Name|Domain-0/ { print $1 }')" -- "$cur")) } _xen_domain_ids() { COMPREPLY=($(compgen -W "$(xm list 2>/dev/null | awk '!/Name|Domain-0/ { print $2 }')" -- "$cur")) } _xm() { local cur prev words cword _init_completion || return # TODO: _split_longopt local args command commands options commands='console vncviewer create new delete destroy domid domname dump-core list mem-max mem-set migrate pause reboot rename reset restore resume save shutdown start suspend sysrq trigger top unpause uptime usb-add usb-del vcpu-list vcpu-pin vcpu-set debug-keys dmesg info log serve sched-credit sched-sedf block-attach block-detach block-list block-configure network-attach network-detach network-list vtpm-list pci-attach pci-detach pci-list pci-list-assignable-devices scsi-attach scsi-detach scsi-list vnet-list vnet-create vnet-delete labels addlabel rmlabel getlabel dry-run resources dumppolicy setpolicy resetpolicy getpolicy shell help' if ((cword == 1)); then COMPREPLY=($(compgen -W "$commands" -- "$cur")) else if [[ $cur == *=* ]]; then prev=${cur/=*/} cur=${cur/*=/} fi command=${words[1]} if [[ $cur == -* ]]; then # possible options for the command case $command in create) options='-c' ;; dmesg) options='--clear' ;; list) options='--long' ;; reboot) options='-w -a' ;; shutdown) options='-w -a -R -H' ;; sched-credit) options='-d -w -c' ;; block-list | network-list | vtpm-list | vnet-list) options='-l --long' ;; getpolicy) options='--dumpxml' ;; new) options='-h --help --help_config -q --quiet --path= -f= --defconfig= -F= --config= -b --dryrun -x --xmldryrun -s --skipdtd -p --paused -c --console_autoconnect' ;; esac COMPREPLY=($(compgen -W "$options" -- "$cur")) else case $command in console | destroy | domname | domid | list | mem-set | mem-max | \ pause | reboot | rename | shutdown | unpause | vcpu-list | vcpu-pin | \ vcpu-set | block-list | network-list | vtpm-list) _count_args case $args in 2) _xen_domain_names ;; esac ;; migrate) _count_args case $args in 2) _xen_domain_names ;; 3) _known_hosts_real -- "$cur" ;; esac ;; restore | dry-run | vnet-create) _filedir ;; save) _count_args case $args in 2) _xen_domain_names ;; 3) _filedir ;; esac ;; sysrq) _count_args case $args in 2) _xen_domain_names ;; 3) COMPREPLY=($(compgen -W "r s e i u b" -- "$cur")) ;; esac ;; block-attach) _count_args case $args in 2) _xen_domain_names ;; 3) COMPREPLY=($(compgen -W "phy: file:" -- "$cur")) ;; 5) COMPREPLY=($(compgen -W "w r" -- "$cur")) ;; 6) _xen_domain_names ;; esac ;; block-detach) _count_args case $args in 2) _xen_domain_names ;; 3) COMPREPLY=($(compgen -W "$(xm block-list $prev \ 2>/dev/null | awk '!/Vdev/ { print $1 }')" \ -- "$cur")) ;; esac ;; network-attach) _count_args case $args in 2) _xen_domain_names ;; *) COMPREPLY=($(compgen -W "script= ip= mac= bridge= backend=" -- "$cur")) ;; esac ;; network-detach) _count_args case $args in 2) _xen_domain_names ;; 3) COMPREPLY=($(compgen -W "$(xm network-list $prev \ 2>/dev/null | awk '!/Idx/ { print $1 }')" \ -- "$cur")) ;; esac ;; sched-credit) case $prev in -d) _xen_domain_names return ;; esac ;; create) _filedir COMPREPLY+=( $(compgen -W '$(command ls /etc/xen 2>/dev/null)' \ -- "$cur")) ;; new) case $prev in -f | -F | --defconfig | --config) _filedir return ;; --path) _filedir -d return ;; esac _count_args case $args in 2) _xen_domain_names ;; esac ;; esac fi fi } && complete -F _xm xm # ex: filetype=sh bash-completion-2.11/completions/_yum000066400000000000000000000105771370676621500200000ustar00rootroot00000000000000# yum(8) completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # yum > 3.2.25, use that instead. _yum_list() { if [[ $1 == all ]]; then # Try to strip in between headings like "Available Packages" # This will obviously only work for English :P COMPREPLY=($(yum -d 0 -C list $1 "$cur*" 2>/dev/null | command sed -ne '/^Available /d' -e '/^Installed /d' -e '/^Updated /d' \ -e 's/[[:space:]].*//p')) else # Drop first line (e.g. "Updated Packages") COMPREPLY=($(yum -d 0 -C list $1 "$cur*" 2>/dev/null | command sed -ne 1d -e 's/[[:space:]].*//p')) fi } _yum_repolist() { # -d 0 causes repolist to output nothing as of yum 3.2.22: # http://yum.baseurl.org/ticket/83 # Drop first ("repo id repo name") and last ("repolist: ...") rows yum --noplugins -C repolist $1 2>/dev/null | command sed -ne '/^repo\s\s*id/d' -e '/^repolist:/d' -e 's/[[:space:]].*//p' } _yum_plugins() { command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null | command sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u } _yum() { local cur prev words cword split _init_completion -s || return local special i for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then special=${words[i]} break fi done if [[ -v special ]]; then # TODO: install|update|upgrade should not match *src.rpm if [[ $cur == @(*/|[.~])* && \ $special == @(deplist|install|update|upgrade) ]]; then _filedir rpm return fi case $special in install) _yum_list available return ;; deplist | info) _yum_list all return ;; upgrade | update) _yum_list updates return ;; remove | erase) # _rpm_installed_packages is not arch-qualified _yum_list installed return ;; esac fi case $prev in list) COMPREPLY=($(compgen -W 'all available updates installed extras obsoletes recent' -- "$cur")) ;; clean) COMPREPLY=($(compgen -W 'packages headers metadata cache dbcache all' -- "$cur")) ;; repolist) COMPREPLY=($(compgen -W 'all enabled disabled' -- "$cur")) ;; localinstall | localupdate) # TODO: should not match *src.rpm _filedir rpm ;; -d | -e) COMPREPLY=($(compgen -W '{0..10}' -- "$cur")) ;; -c) _filedir ;; --installroot) _filedir -d ;; --enablerepo) COMPREPLY=($(compgen -W '$(_yum_repolist disabled)' -- "$cur")) ;; --disablerepo) COMPREPLY=($(compgen -W '$(_yum_repolist enabled)' -- "$cur")) ;; --disableexcludes) COMPREPLY=($(compgen -W '$(_yum_repolist all) all main' \ -- "$cur")) ;; --enableplugin | --disableplugin) COMPREPLY=($(compgen -W '$(_yum_plugins)' -- "$cur")) ;; --color) COMPREPLY=($(compgen -W 'always auto never' -- "$cur")) ;; -R | -x | --exclude) # argument required but no completions available return ;; -h | --help | --version) # no other options useful with these return ;; *) COMPREPLY=($(compgen -W 'install update check-update upgrade remove erase list info provides whatprovides clean makecache groupinstall groupupdate grouplist groupremove groupinfo search shell resolvedep localinstall localupdate deplist repolist help' -- "$cur")) ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _yum yum # ex: filetype=sh bash-completion-2.11/completions/a2x000066400000000000000000000016341370676621500175130ustar00rootroot00000000000000# a2x(1) completion -*- shell-script -*- _a2x() { local cur prev words cword split _init_completion -s || return case $prev in --attribute | --asciidoc-opts | --dblatex-opts | --fop-opts | --help | \ --version | --xsltproc-opts | -!(-*)[ah]) return ;; --destination-dir | --icons-dir | -!(-*)D) _filedir -d return ;; --doctype | -!(-*)d) _xfunc asciidoc _asciidoc_doctype return ;; --stylesheet) _filedir css return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _a2x a2x # ex: filetype=sh bash-completion-2.11/completions/abook000066400000000000000000000023051370676621500201100ustar00rootroot00000000000000# abook(1) completion -*- shell-script -*- _abook() { local cur prev words cword _init_completion || return # abook only takes options, tabbing after command name adds a single dash [[ $cword -eq 1 && -z $cur ]] && { compopt -o nospace COMPREPLY=("-") return } case $cur in -*) _longopt "$1" return ;; esac case $prev in --informat) COMPREPLY=($(compgen -W "$($1 --formats | command sed -n -e 's/^'$'\t''\([a-z]*\).*/\1/p' -e '/^$/q')" \ -- "$cur")) ;; --outformat) COMPREPLY=($(compgen -W "$($1 --formats | command sed -n -e '/^$/,$s/^'$'\t''\([a-z]*\).*/\1/p')" \ -- "$cur")) ;; --infile) COMPREPLY=($(compgen -W stdin -- "$cur")) _filedir ;; --outfile) COMPREPLY=($(compgen -W stdout -- "$cur")) _filedir ;; --config | --datafile) _filedir ;; esac } && complete -F _abook abook # ex: filetype=sh bash-completion-2.11/completions/aclocal000066400000000000000000000015251370676621500204160ustar00rootroot00000000000000# aclocal(1) completion -*- shell-script -*- _aclocal() { local cur prev words cword split _init_completion -s || return case "$prev" in --help | --print-ac-dir | --version) return ;; --acdir | -I) _filedir -d return ;; --output) _filedir return ;; --warnings | -W) local cats=(syntax unsupported) COMPREPLY=($(compgen -W \ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur")) return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _aclocal aclocal aclocal-1.1{0..6} # ex: filetype=sh bash-completion-2.11/completions/acpi000066400000000000000000000007141370676621500177330ustar00rootroot00000000000000# acpi(1) completion -*- shell-script -*- _acpi() { local cur prev words cword _init_completion || return case $prev in --help | --version | -!(-*)[hv]) return ;; --directory | -!(-*)d) _filedir -d return ;; esac COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _acpi acpi # ex: filetype=sh bash-completion-2.11/completions/add_members000066400000000000000000000014031370676621500212550ustar00rootroot00000000000000# mailman add_members completion -*- shell-script -*- _add_members() { local cur prev words cword split _init_completion -s || return case $prev in -r | -d | --regular-members-file | --digest-members-file) _filedir return ;; -w | -a | --welcome-msg | --admin-notify) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--regular-members-file --digest-members-file --welcome-msg --admin-notify --help' -- "$cur")) else _xfunc list_lists _mailman_lists fi } && complete -F _add_members add_members # ex: filetype=sh bash-completion-2.11/completions/alias000066400000000000000000000007521370676621500201120ustar00rootroot00000000000000# bash alias completion -*- shell-script -*- _alias() { local cur prev words cword _init_completion -n = || return case ${words[@]} in *[^=]) COMPREPLY=($(compgen -A alias -- "$cur")) ;; *=) COMPREPLY=("$(alias ${cur%=} 2>/dev/null | command sed \ -e 's|^alias '"$cur"'\(.*\)$|\1|')") ;; esac } && complete -F _alias -o nospace alias # ex: filetype=sh bash-completion-2.11/completions/ant000066400000000000000000000053601370676621500176030ustar00rootroot00000000000000# bash completion for ant and phing -*- shell-script -*- _ant_parse_targets() { local line basedir [[ $1 == */* ]] && basedir=${1%/*} || basedir=. # parse buildfile for targets while read -rd '>' line; do if [[ $line =~ \<(target|extension-point)[[:space:]].*name=[\"\']([^\"\']+) ]]; then targets+=" ${BASH_REMATCH[2]}" fi done <$1 # parse imports while read -rd '>' line; do if [[ $line =~ \/dev/null && complete -C complete-ant-cmd.pl -F _ant ant || : # ex: filetype=sh bash-completion-2.11/completions/apache2ctl000066400000000000000000000005741370676621500210310ustar00rootroot00000000000000# apache2ctl(1) completion -*- shell-script -*- _apache2ctl() { local cur prev words cword _init_completion || return local APWORDS APWORDS=$($1 2>&1 >/dev/null | awk 'NR<2 { print $3; exit }' | tr "|" " ") COMPREPLY=($(compgen -W "$APWORDS" -- "$cur")) } && complete -F _apache2ctl apache2ctl # ex: filetype=sh bash-completion-2.11/completions/appdata-validate000066400000000000000000000014271370676621500222220ustar00rootroot00000000000000# appdata-validate(1) completion -*- shell-script -*- _appdata_validate() { local cur prev words cword split _init_completion -s || return case $prev in -h | --help | --version) return ;; --output-format) COMPREPLY=($(compgen -W "$($1 --help | command sed -ne 's/--output-format.*\[\(.*\)\]/\1/' -e 's/|/ /gp')" \ -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir appdata.xml } && complete -F _appdata_validate appdata-validate # ex: filetype=sh bash-completion-2.11/completions/apt-build000066400000000000000000000027101370676621500206760ustar00rootroot00000000000000# Debian apt-build(1) completion -*- shell-script -*- _apt_build() { local cur prev words cword _init_completion || return local special i for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(install|remove|source|info|clean) ]]; then special=${words[i]} break fi done if [[ -v special ]]; then case $special in install | source | info) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) ;; remove) COMPREPLY=( $(_xfunc dpkg _comp_dpkg_installed_packages "$cur")) ;; esac return fi case $prev in --patch | --build-dir | --repository-dir) _filedir return ;; -h | --help) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --show-upgraded -u --build-dir --repository-dir --build-only --build-command --reinstall --rebuild --remove-builddep --no-wrapper --purge --patch --patch-strip -p --yes -y --version -v --no-source' -- "$cur")) else COMPREPLY=($(compgen -W 'update upgrade install remove source dist-upgrade world clean info clean-build update-repository' \ -- "$cur")) fi } && complete -F _apt_build apt-build # ex: filetype=sh bash-completion-2.11/completions/apt-cache000066400000000000000000000042111370676621500206400ustar00rootroot00000000000000# Debian apt-cache(8) completion -*- shell-script -*- # List APT binary packages _apt_cache_packages() { apt-cache --no-generate pkgnames "$cur" 2>/dev/null || : } # List APT source packages _apt_cache_sources() { compgen -W "$(apt-cache dumpavail | awk '$1 == "Source:" { print $2 }' | sort -u)" -- "$1" } # List APT source packages _apt_cache_src_packages() { compgen -W '$(_apt_cache_sources "$cur")' -- "$cur" } _apt_cache() { local cur prev words cword _init_completion || return local special ispecial if [[ $cur != show ]]; then for ((ispecial = 1; ispecial < ${#words[@]} - 1; ispecial++)); do if [[ ${words[ispecial]} == @(add|depends|dotty|madison|policy|rdepends|show?(pkg|src|)) ]]; then special=${words[ispecial]} break fi done fi if [[ -v special && $ispecial -lt $cword ]]; then case $special in add) _filedir ;; showsrc) COMPREPLY=($(_apt_cache_sources "$cur")) ;; *) COMPREPLY=($(_apt_cache_packages)) ;; esac return fi case $prev in --config-file | --pkg-cache | --src-cache | -!(-*)[cps]) _filedir return ;; search) if [[ $cur != -* ]]; then return fi ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-h -v -p -s -q -i -f -a -g -c -o --help --version --pkg-cache --src-cache --quiet --important --full --all-versions --no-all-versions --generate --no-generate --names-only --all-names --recurse --config-file --option --installed' -- "$cur")) elif [[ ! -v special ]]; then COMPREPLY=($(compgen -W 'add gencaches show showpkg showsrc stats dump dumpavail unmet search search depends rdepends pkgnames dotty xvcg policy madison' -- "$cur")) fi } && complete -F _apt_cache apt-cache # ex: filetype=sh bash-completion-2.11/completions/apt-get000066400000000000000000000075121370676621500203630ustar00rootroot00000000000000# Debian apt-get(8) completion -*- shell-script -*- _apt_get() { local cur prev words cword package _init_completion -n ':=' || return local special i for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(install|remove|autoremove|purge|source|build-dep|download|changelog) ]]; then special=${words[i]} break fi done if [[ -v special ]]; then case $special in remove | autoremove | purge) if [[ -f /etc/debian_version ]]; then # Debian system COMPREPLY=($( _xfunc dpkg _comp_dpkg_installed_packages $cur )) else # assume RPM based _xfunc rpm _rpm_installed_packages fi ;; source) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages) $(compgen -W "$(apt-cache dumpavail | awk '$1 == "Source:" { print $2 }' | sort -u)" -- "$cur")) ;; install) if [[ $cur == */* ]]; then _filedir deb return elif [[ $cur == *=* ]]; then package="${cur%%=*}" cur="${cur#*=}" COMPREPLY=($(IFS=$'\n' compgen -W "$( apt-cache --no-generate madison "$package" 2>/dev/null | while IFS=' |' read -r _ version _; do echo "$version" done )" \ -- "$cur")) __ltrim_colon_completions "$cur" return fi ;;& build-dep) _filedir -d [[ $cur != */* ]] || return ;;& *) COMPREPLY+=($(_xfunc apt-cache _apt_cache_packages)) ;; esac return fi case $prev in --help | --version | --option | -!(-*)[hvo]) return ;; --config-file | -!(-*)c) _filedir return ;; --target-release | --default-release | -!(-*)t) COMPREPLY=($(compgen -W "$(apt-cache policy | command sed -ne \ 's/^ *release.*[ ,]o=\(Debian\|Ubuntu\),a=\(\w*\).*/\2/p')" \ -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--no-install-recommends --install-suggests --download-only --fix-broken --ignore-missing --fix-missing --no-download --quiet --simulate --just-print --dry-run --recon --no-act --yes --assume-yes --assume-no --no-show-upgraded --verbose-versions --host-architecture --build-profiles --compile --build --ignore-hold --with-new-pkgs --no-upgrade --only-upgrade --allow-downgrades --allow-remove-essential --allow-change-held-packages --force-yes --print-uris --purge --reinstall --list-cleanup --target-release --default-release --trivial-only --no-remove --auto-remove --autoremove --only-source --diff-only --dsc-only --tar-only --arch-only --indep-only --allow-unauthenticated --no-allow-insecure-repositories --allow-releaseinfo-change --show-progress --with-source --help --version --config-file --option' -- "$cur")) else COMPREPLY=($(compgen -W 'update upgrade dist-upgrade dselect-upgrade install remove purge source build-dep check download clean autoclean autoremove changelog indextargets' \ -- "$cur")) fi } && complete -F _apt_get apt-get # ex: filetype=sh bash-completion-2.11/completions/aptitude000066400000000000000000000101721370676621500206350ustar00rootroot00000000000000# Debian aptitude(1) completion -*- shell-script -*- _have grep-status && { _comp_dpkg_hold_packages() { grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package } } || { _comp_dpkg_hold_packages() { command grep -B 2 'hold' /var/lib/dpkg/status | awk "/Package: $1/ { print \$2 }" } } _aptitude() { local cur prev words cword _init_completion || return local special i for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full|safe)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag|versions) ]]; then special=${words[i]} break fi done if [[ -v special ]]; then case $special in install | hold | markauto | unmarkauto | dist-upgrade | full-upgrade | \ safe-upgrade | download | show | changelog | why | why-not | build-dep | \ add-user-tag | remove-user-tag | versions) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) return ;; purge | remove | reinstall | forbid-version) COMPREPLY=( $(_xfunc dpkg _comp_dpkg_installed_packages "$cur")) return ;; unhold) COMPREPLY=($(_comp_dpkg_hold_packages "$cur")) return ;; esac fi case $prev in # don't complete anything if these options are found autoclean | clean | forget-new | search | upgrade | update | keep-all) return ;; -!(-*)S) _filedir return ;; --display-format | --width | -!(-*)[wFo]) return ;; --sort | -!(-*)O) COMPREPLY=($(compgen -W 'installsize installsizechange debsize name priority version' -- "$cur")) return ;; --target-release | --default-release | -!(-*)t) COMPREPLY=($(apt-cache policy | command grep "release.o=Debian,a=$cur" | command sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2>/dev/null)) return ;; esac if [[ $cur == -* ]]; then local opts=" $($1 --help 2>&1 | command sed -e \ 's/--with(out)-recommends/--without-recommends\n--with-recommends/' | _parse_help - | tr '\n' ' ') " # Exclude some mutually exclusive options for i in "${words[@]}"; do [[ $i == -u ]] && opts=${opts/ -i / } [[ $i == -i ]] && opts=${opts/ -u / } done # Do known short -> long replacements; at least up to 0.8.12, --help # outputs mostly only short ones. COMPREPLY=($opts) for i in "${!COMPREPLY[@]}"; do case ${COMPREPLY[i]} in -h) COMPREPLY[i]=--help ;; -s) COMPREPLY[i]=--simulate ;; -d) COMPREPLY[i]=--download-only ;; -P) COMPREPLY[i]=--prompt ;; -y) COMPREPLY[i]=--assume-yes ;; -F) COMPREPLY[i]=--display-format ;; -O) COMPREPLY[i]=--sort ;; -W) COMPREPLY[i]=--show-why ;; -w) COMPREPLY[i]=--width ;; -V) COMPREPLY[i]=--show-versions ;; -D) COMPREPLY[i]=--show-deps ;; -v) COMPREPLY[i]=--verbose ;; -t) COMPREPLY[i]=--target-release ;; -q) COMPREPLY[i]=--quiet ;; esac done COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) else COMPREPLY=($(compgen -W 'update upgrade safe-upgrade forget-new clean autoclean install reinstall remove hold unhold purge markauto unmarkauto why why-not dist-upgrade full-upgrade download search show forbid-version changelog keep keep-all build-dep add-user-tag remove-user-tag versions' -- "$cur")) fi } && complete -F _aptitude -o default aptitude aptitude-curses # ex: filetype=sh bash-completion-2.11/completions/arch000066400000000000000000000023031370676621500177300ustar00rootroot00000000000000# mailman arch completion -*- shell-script -*- # Try to detect whether this is the mailman "arch" to avoid installing # it for the coreutils/util-linux-ng one. _have mailmanctl && _arch() { local cur prev words cword split _init_completion -s || return case $prev in -w | -g | -d | --welcome-msg | --goodbye-msg | --digest) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --file) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else local args=$cword for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == -* ]]; then ((args--)) fi done case $args in 1) _xfunc list_lists _mailman_lists ;; 2) _filedir ;; esac fi } && complete -F _arch arch # ex: filetype=sh bash-completion-2.11/completions/arp000066400000000000000000000030731370676621500176020ustar00rootroot00000000000000# arp(8) completion -*- shell-script -*- _arp() { local cur prev words cword _init_completion || return case $prev in --device | -!(-*)i) _available_interfaces -a return ;; --protocol | -!(-*)[Ap]) # TODO protocol/address family return ;; --file | -!(-*)f) _filedir return ;; --hw-type | -!(-*)[Ht]) # TODO: parse from --help output? COMPREPLY=($(compgen -W 'ash ether ax25 netrom rose arcnet \ dlci fddi hippi irda x25 eui64' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi local args _count_args "" "@(--device|--protocol|--file|--hw-type|-!(-*)[iApfHt])" case $args in 1) local ips=$("$1" -an | command sed -ne \ 's/.*(\([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}\)).*/\1/p') COMPREPLY=($(compgen -W '$ips' -- "$cur")) ;; 2) # TODO if -d mode: "pub"; if not -f mode: hw_addr # TODO hw_addr is a configured interface with --use-device/-*D* ;; 3) # TODO netmask|pub|temp if -s mode ;; 4) # TODO netmask value if previous was "netmask" ;; 5) # TODO "pub" if 3rd was "netmask" ;; esac } && complete -F _arp arp # ex: filetype=sh bash-completion-2.11/completions/arping000066400000000000000000000011331370676621500202730ustar00rootroot00000000000000# arping(8) completion -*- shell-script -*- _arping() { local cur prev words cword _init_completion || return case $prev in -*c | -*w) return ;; -*I) _available_interfaces -a return ;; -*s) _ip_addresses return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) return fi _known_hosts_real -- "$cur" } && complete -F _arping arping # ex: filetype=sh bash-completion-2.11/completions/arpspoof000066400000000000000000000010641370676621500206470ustar00rootroot00000000000000# arpspoof completion -*- shell-script -*- _arpspoof() { local cur prev words cword _init_completion || return case $prev in -i) _available_interfaces -a return ;; -t) _known_hosts_real -- "$cur" return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) else _known_hosts_real -- "$cur" fi } && complete -F _arpspoof arpspoof # ex: filetype=sh bash-completion-2.11/completions/asciidoc000066400000000000000000000022551370676621500205770ustar00rootroot00000000000000# asciidoc(1) completion -*- shell-script -*- _asciidoc_doctype() { COMPREPLY+=($(compgen -W 'article book manpage' -- "$cur")) } _asciidoc() { local cur prev words cword split _init_completion -s || return case $prev in --attribute | -!(-*)a) return ;; --backend | -!(-*)b) COMPREPLY=($(compgen -W 'docbook html4 xhtml11' -- "$cur")) return ;; --conf-file | -!(-*)f) _filedir conf return ;; --doctype | -!(-*)d) _asciidoc_doctype return ;; --help | -!(-*)h) COMPREPLY=($(compgen -W 'manpage syntax topics' -- "$cur")) return ;; --out-file | -!(-*)o) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" "--help manpage")' \ -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _asciidoc asciidoc asciidoc.py # ex: filetype=sh bash-completion-2.11/completions/aspell000066400000000000000000000064531370676621500203050ustar00rootroot00000000000000# bash completion for aspell -*- shell-script -*- _aspell_dictionary() { local datadir aspell=${1:-aspell} datadir=$($aspell config data-dir 2>/dev/null || echo /usr/lib/aspell) # First, get aliases (dicts dump does not list them) COMPREPLY=($(printf '%s\n' $datadir/*.alias)) COMPREPLY=("${COMPREPLY[@]%.alias}") COMPREPLY=("${COMPREPLY[@]#$datadir/}") # Then, add the canonical dicts COMPREPLY+=($($aspell dicts 2>/dev/null)) COMPREPLY=($(compgen -X '\*' -W '${COMPREPLY[@]}' -- "$cur")) } _aspell() { local cur prev words cword split _init_completion -s || return case $prev in -c | -p | check | --conf | --personal | --repl | --per-conf) _filedir return ;; --conf-dir | --data-dir | --dict-dir | --home-dir | --local-data-dir | --prefix) _filedir -d return ;; dump | create | merge) COMPREPLY=($(compgen -W 'master personal repl' -- "$cur")) return ;; --mode) COMPREPLY=($(compgen -W "$($1 modes 2>/dev/null | awk '{ print $1 }')" -- "$cur")) return ;; --sug-mode) COMPREPLY=($(compgen -W 'ultra fast normal bad-speller' \ -- "$cur")) return ;; --keymapping) COMPREPLY=($(compgen -W 'aspell ispell' -- "$cur")) return ;; -d | --master) _aspell_dictionary "$1" return ;; --add-filter | --rem-filter) COMPREPLY=($(compgen -W "$($1 filters 2>/dev/null | awk '{ print $1 }')" -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--conf= --conf-dir= --data-dir= --dict-dir= --encoding= --add-filter= --rem-filter= --mode= --add-extra-dicts= --rem-extra-dicts= --home-dir= --ignore= --ignore-accents --dont-ignore-accents --ignore-case --dont-ignore-case --ignore-repl --dont-ignore-repl --jargon --keyboard= --lang= --language-tag --local-data-dir= --master= --module --add-module-search-order --rem-module-search-order --per-conf= --personal= --prefix= --repl= --run-together --dont-run-together --run-together-limit= --run-together-min= --save-repl --dont-save-repl --set-prefix --dont-set-prefix --size= --spelling --strip-accents --dont-strip-accents --sug-mode= --add-word-list-path --rem-word-list-path --backup --dont-backup --reverse --dont-reverse --time --dont-time --keymapping= --add-email-quote= --rem-email-quote= --email-margin= --add-tex-command= --rem-tex-command= --tex-check-comments --dont-tex-check-comments --add-tex-extension --rem-tex-extension --add-sgml-check= --rem-sgml-check= --add-sgml-extension --rem-sgml-extension' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else COMPREPLY=($(compgen -W 'usage help check pipe list config soundslike filter version dump create merge' -- "$cur")) fi } && complete -F _aspell aspell # ex: filetype=sh bash-completion-2.11/completions/autoconf000066400000000000000000000017061370676621500206370ustar00rootroot00000000000000# autoconf(1) completion -*- shell-script -*- _autoconf() { local cur prev words cword split _init_completion -s || return case "$prev" in --help | -h | --version | -V | --trace | -t) return ;; --output | -o) _filedir return ;; --warnings | -W) local cats=(cross obsolete syntax) COMPREPLY=($(compgen -W \ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur")) return ;; --prepend-include | -B | --include | -I) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir '@(ac|in)' } && complete -F _autoconf autoconf # ex: filetype=sh bash-completion-2.11/completions/automake000066400000000000000000000015471370676621500206320ustar00rootroot00000000000000# automake(1) completion -*- shell-script -*- _automake() { local cur prev words cword split _init_completion -s || return case "$prev" in --help | --version) return ;; --warnings | -W) local cats=(gnu obsolete override portability syntax unsupported) COMPREPLY=($(compgen -W \ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur")) return ;; --libdir) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _automake automake automake-1.1{0..6} # ex: filetype=sh bash-completion-2.11/completions/autoreconf000066400000000000000000000017741370676621500211730ustar00rootroot00000000000000# autoreconf(1) completion -*- shell-script -*- _autoreconf() { local cur prev words cword split _init_completion -s || return case "$prev" in --help | -h | --version | -V) return ;; --warnings | -W) local cats=(cross gnu obsolete override portability syntax unsupported) COMPREPLY=($(compgen -W \ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur")) return ;; --prepend-include | -B | --include | -I) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi if [[ $1 == *autoheader ]]; then _filedir '@(ac|in)' else _filedir -d fi } && complete -F _autoreconf autoreconf autoheader # ex: filetype=sh bash-completion-2.11/completions/autorpm000066400000000000000000000005361370676621500205100ustar00rootroot00000000000000# autorpm(8) completion -*- shell-script -*- _autorpm() { local cur prev words cword _init_completion || return COMPREPLY=($(compgen -W '--notty --debug --help --version auto add fullinfo info help install list remove set' -- "$cur")) } && complete -F _autorpm autorpm # ex: filetype=sh bash-completion-2.11/completions/autoscan000066400000000000000000000013561370676621500206370ustar00rootroot00000000000000# autoscan(1) completion -*- shell-script -*- _autoscan() { local cur prev words cword split _init_completion -s || return case "$prev" in --help | --version | -!(-*)[hV]) return ;; --prepend-include | --include | -!(-*)[BI]) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi if [[ $1 == *autoupdate ]]; then _filedir '@(ac|in)' else _filedir -d fi } && complete -F _autoscan autoscan autoupdate # ex: filetype=sh bash-completion-2.11/completions/avctrl000066400000000000000000000007211370676621500203100ustar00rootroot00000000000000# avctrl completion -*- shell-script -*- _avctrl() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --quiet' -- "$cur")) else local args _count_args if ((args == 1)); then COMPREPLY=($(compgen -W 'discover switch' -- "$cur")) fi fi } && complete -F _avctrl avctrl # ex: filetype=sh bash-completion-2.11/completions/badblocks000066400000000000000000000011231370676621500207360ustar00rootroot00000000000000# badblocks(8) completion -*- shell-script -*- _badblocks() { local cur prev words cword _init_completion || return case $prev in -*[bcedpt]) return ;; -*[io]) _filedir return ;; esac if [[ $cur == -* ]]; then # Filter out -w (dangerous) and -X (internal use) COMPREPLY=($(compgen -X -[wX] -W '$(_parse_usage "$1")' -- "$cur")) return fi cur=${cur:=/dev/} _filedir } && complete -F _badblocks badblocks # ex: filetype=sh bash-completion-2.11/completions/bind000066400000000000000000000014721370676621500177350ustar00rootroot00000000000000# bash bind completion -*- shell-script -*- _bind() { local cur prev words cword _init_completion || return case $prev in -*[lpPsSvVrxX]) return ;; -*m) COMPREPLY=($(compgen -W "emacs emacs-standard emacs-meta emacs-ctlx vi vi-move vi-command vi-insert" -- "$cur")) return ;; -*f) _filedir return ;; -*[qu]) COMPREPLY=($(compgen -W '$("$1" -l)' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) return fi COMPREPLY=($(compgen -A binding -- "$cur")) } && complete -F _bind bind # ex: filetype=sh bash-completion-2.11/completions/bk000066400000000000000000000006551370676621500174170ustar00rootroot00000000000000# BitKeeper completion -*- shell-script -*- # adapted from code by Bart Trojanowski _bk() { local cur prev words cword _init_completion || return local BKCMDS="$(bk help topics 2>/dev/null | awk '/^ bk/ { print $2 }' | xargs printf '%s ')" COMPREPLY=($(compgen -W "$BKCMDS" -- "$cur")) _filedir } && complete -F _bk bk # ex: filetype=sh bash-completion-2.11/completions/brctl000066400000000000000000000020241370676621500201210ustar00rootroot00000000000000# bash completion for brctl -*- shell-script -*- _brctl() { local cur prev words cword _init_completion || return local command=${words[1]} case $cword in 1) COMPREPLY=($(compgen -W "addbr delbr addif delif setageing setbridgeprio setfd sethello setmaxage setpathcost setportprio show showmacs showstp stp" -- "$cur")) ;; 2) case $command in show) ;; *) COMPREPLY=($(compgen -W "$($1 show | awk 'NR>1 {print $1}')" -- "$cur")) ;; esac ;; 3) case $command in addif | delif) _configured_interfaces ;; stp) COMPREPLY=($(compgen -W 'on off' -- "$cur")) ;; esac ;; esac } && complete -F _brctl -o default brctl # ex: filetype=sh bash-completion-2.11/completions/btdownloadheadless.py000066400000000000000000000020501370676621500233070ustar00rootroot00000000000000# btdownloadheadless(1) completion -*- shell-script -*- _btdownload() { local cur prev words cword _init_completion || return case $prev in --responsefile | --saveas) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--max_uploads --keepalive_interval --download_slice_size --request_backlog --max_message_length --ip --minport --maxport --responsefile --url --saveas --timeout --timeout_check_interval --max_slice_length --max_rate_period --bind --upload_rate_fudge --display_interval --rerequest_interval --min_peers --http_timeout --max_initiate --max_allow_in --check_hashes --max_upload_rate --snub_time --spew --rarest_first_cutoff --min_uploads --report_hash_failures' \ -- "$cur")) else _filedir fi } && complete -F _btdownload btdownloadheadless.py btdownloadcurses.py \ btdownloadgui.py # ex: filetype=sh bash-completion-2.11/completions/bts000066400000000000000000000101671370676621500176120ustar00rootroot00000000000000# bts completion -*- shell-script -*- # List bug numbers from bugs cache in ~/.devscripts_cache/bts _cached_bugs() { [[ -d $HOME/.devscripts_cache/bts ]] && find $HOME/.devscripts_cache/bts -maxdepth 1 -name "${cur}[0-9]*.html" \ -printf "%f\n" | cut -d'.' -f1 } # List APT source packages prefixed with "src:" _src_packages_with_prefix() { ppn=${cur:4} # partial package name, after stripping "src:" compgen -P "src:" -W '$(_xfunc apt-cache _apt_cache_sources "$ppn")' \ -- "$ppn" } _bts() { local cur prev words cword split _init_completion -s || return case $prev in show | bugs) COMPREPLY=($(compgen -W 'release-critical RC from: tag: usertag:' -- "$cur") $(_cached_bugs) $(_src_packages_with_prefix)) return ;; select) COMPREPLY=($(compgen -W 'package: source: maintainer: submitter: severity: status: tag: owner: correspondent: affects: bugs: users: archive:' -- "$cur")) return ;; status) COMPREPLY=($(compgen -W 'file: fields: verbose' -- "$cur") $(_cached_bugs)) return ;; block | unblock) COMPREPLY=($(compgen -W 'by with' -- "$cur")) return ;; severity) COMPREPLY=($(compgen -W 'wishlist minor normal important serious grave critical' -- "$cur")) return ;; limit) COMPREPLY=($(compgen -W 'submitter date subject msgid package source tag severity owner affects archive' -- "$cur")) return ;; clone | "done" | reopen | archive | unarchive | retitle | summary | submitter | found | notfound | fixed | notfixed | merge | forcemerge | unmerge | claim | unclaim | forwarded | notforwarded | owner | noowner | subscribe | unsubscribe | reportspam | spamreport | affects | usertag | usertags | reassign | tag | tags) COMPREPLY=($(_cached_bugs)) return ;; package) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) return ;; cache) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages) $(_src_packages_with_prefix) $(compgen -W 'from: release-critical RC' -- "$cur")) return ;; cleancache) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages) $(_src_packages_with_prefix) $(compgen -W 'from: tag: usertag: ALL' -- "$cur")) return ;; user) # non-predicible arguments COMPREPLY=() return ;; :) # Chances are that "src:" is being completed # COMP_WORDS would be: "bts cleancache src : " pos=$((COMP_CWORD - 2)) if [[ $pos -gt 0 && ${COMP_WORDS[pos]} == "src" ]]; then COMPREPLY=($(_xfunc apt-cache _apt_cache_src_packages)) return fi ;; esac $split && return COMPREPLY=($(compgen -W '--offline --online --no-offline --no-action --cache --no-cache --cache-mode --cache-delay --mbox --mailreader --cc-addr --use-default-cc --no-use-default-cc --sendmail --mutt --no-mutt --smtp-host --smtp-username --smtp-helo --bts-server --force-refresh --no-force-refresh --only-new --include-resolved --no-include-resolved --no-ack --ack --interactive --force-interactive --no-interactive --quiet --no-conf --noconf show bugs select status clone done reopen archive unarchive retitle summary submitter reassign found notfound fixed notfixed block unblock merge forcemerge unmerge tag tags affects user usertag usertags claim unclaim severity forwarded notforwarded package limit owner noowner subscribe unsubscribe reportspam spamreport cache cleancache version help' -- "$cur")) } && complete -F _bts bts # ex: filetype=sh bash-completion-2.11/completions/bzip2000066400000000000000000000020541370676621500200440ustar00rootroot00000000000000# bash completion for bzip2 -*- shell-script -*- _bzip2() { local cur prev words cword _init_completion || return case $prev in --help | -!(-*)[bhp]) return ;; -!(-*)n) COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur")) return ;; esac if [[ $cur == -* ]]; then local helpopts=$(_parse_help "$1") COMPREPLY=($(compgen -W "${helpopts//#/} -2 -3 -4 -5 -6 -7 -8 -9" \ -- "$cur")) return fi local IFS=$'\n' xspec="*.?(t)bz2" if [[ $prev == --* ]]; then [[ $prev == --@(decompress|list|test) ]] && xspec="!"$xspec [[ $prev == --compress ]] && xspec= elif [[ $prev == -* ]]; then [[ $prev == -*[dt]* ]] && xspec="!"$xspec [[ $prev == -*z* ]] && xspec= fi _tilde "$cur" || return compopt -o filenames COMPREPLY=($(compgen -f -X "$xspec" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _bzip2 bzip2 pbzip2 lbzip2 # ex: filetype=sh bash-completion-2.11/completions/cancel000066400000000000000000000010531370676621500202410ustar00rootroot00000000000000# cancel(1) completion -*- shell-script -*- _cancel() { local cur prev words cword _init_completion || return case $prev in -h) _known_hosts_real -- "$cur" return ;; -U) return ;; -u) COMPREPLY=($(compgen -u -- "$cur")) return ;; esac COMPREPLY=($(compgen -W \ "$(lpstat 2>/dev/null | cut -d' ' -f1)" -- "$cur")) } && complete -F _cancel cancel # ex: filetype=sh bash-completion-2.11/completions/cardctl000066400000000000000000000005721370676621500204350ustar00rootroot00000000000000# Linux cardctl(8) completion -*- shell-script -*- _cardctl() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W 'status config ident suspend resume reset eject insert scheme' -- "$cur")) fi } && complete -F _cardctl cardctl pccardctl # ex: filetype=sh bash-completion-2.11/completions/carton000066400000000000000000000035241370676621500203070ustar00rootroot00000000000000# carton(3pm) completion -*- shell-script -*- _carton_commands() { local cmds=$("${1:-carton}" usage 2>&1 | command sed -ne '/.*command.* is one of/{n;p;q;}') COMPREPLY+=($(IFS="$IFS," compgen -W "$cmds" -- "$cur")) } _carton_command_help() { local help=$(PERLDOC_PAGER=cat PERLDOC=-otext "${1:-carton}" -h $2 2>&1) COMPREPLY+=($(compgen -W '$help' -- "$cur")) } _carton() { local cur prev words cword split _init_completion -s || return local i command for ((i = 1; i < cword; i++)); do case ${words[i]} in -*) ;; *) command=${words[i]} break ;; esac done if [[ ! -v command ]]; then _carton_commands "$1" return fi case $prev in --version | -v) return ;; --help | -h) [[ -n $command ]] || _carton_commands "$1" return ;; --cpanfile) if [[ $command == install ]]; then _filedir return fi ;; --path) if [[ $command == install ]]; then _filedir -d return fi ;; --without) if [[ $command == install ]]; then local phases="configure build test runtime develop" COMPREPLY+=($(compgen -W '$phases' -- "$cur")) return fi ;; esac $split && return if [[ $cur == -* ]]; then [[ $command == @(help|usage) ]] || COMPREPLY=(--help) _carton_command_help "$1" $command fi case $command in show | update) : # TODO modules completion ;; esac } && complete -F _carton carton # ex: filetype=sh bash-completion-2.11/completions/ccache000066400000000000000000000020041370676621500202170ustar00rootroot00000000000000# ccache(1) completion -*- shell-script -*- _ccache() { local cur prev words cword split _init_completion -s || return local i for ((i = 1; i <= COMP_CWORD; i++)); do if [[ ${COMP_WORDS[i]} != -* ]]; then _command_offset $i return fi [[ ${COMP_WORDS[i]} == -*[oFM] ]] && ((i++)) done case $prev in --help | --version | --max-files | --max-size | -!(-*)[hVFM]) return ;; --set-config | -!(-*)o) if [[ $cur != *=* ]]; then COMPREPLY=($(compgen -S = -W "$($1 -p 2>/dev/null | awk '$3 = "=" { print $2 }')" -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _ccache ccache # ex: filetype=sh bash-completion-2.11/completions/ccze000066400000000000000000000023031370676621500177370ustar00rootroot00000000000000# ccze(1) completion -*- shell-script -*- _ccze() { local cur prev words cword split _init_completion -s || return case $prev in -'?' | --help | --usage | -V | --version) return ;; --argument | --color | -!(-*)[ac]) # TODO? return ;; --rcfile | -!(-*)F) _filedir return ;; --mode | -!(-*)m) COMPREPLY=($(compgen -W "curses ansi html" -- "$cur")) return ;; --option | -!(-*)o) local -a opts=(scroll wordcolor lookups transparent cssfile) COMPREPLY=($(compgen -W '${opts[@]} ${opts[@]/#/no}' -- "$cur")) return ;; --plugin | -!(-*)p) COMPREPLY=($(compgen -W '$("$1" --list-plugins | command \ sed -ne "s/^\([a-z0-9]\{1,\}\)[[:space:]]\{1,\}|.*/\1/p")' \ -- "$cur")) return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _ccze ccze # ex: filetype=sh bash-completion-2.11/completions/cfagent000066400000000000000000000006451370676621500204310ustar00rootroot00000000000000# cfagent completion -*- shell-script -*- _cfagent() { local cur prev words cword _init_completion || return case $prev in -f | --file) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _cfagent cfagent # ex: filetype=sh bash-completion-2.11/completions/cfrun000066400000000000000000000023671370676621500201420ustar00rootroot00000000000000# cfrun completion -*- shell-script -*- _cfrun() { local cur prev words cword _init_completion || return local i section=1 for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == -- ]]; then ((section++)) fi done case $section in 1) case $prev in -f) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-f -h -d -S -T -v' -- "$cur")) else local hostfile=${CFINPUTS:-/var/lib/cfengine/inputs}/cfrun.hosts for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == -f ]]; then hostfile=${words[i + 1]} break fi done [[ ! -f $hostfile ]] && return COMPREPLY=($(compgen -W "$(command grep -v \ -E '(=|^$|^#)' $hostfile)" -- "$cur")) fi ;; 2) COMPREPLY=($(compgen -W '$(_parse_help cfagent)' -- "$cur")) ;; esac } && complete -F _cfrun cfrun # ex: filetype=sh bash-completion-2.11/completions/chage000066400000000000000000000012351370676621500200650ustar00rootroot00000000000000# chage(1) completion -*- shell-script -*- _chage() { local cur prev words cword split _init_completion -s || return case $prev in --lastday | --expiredate | --help | --inactive | --mindays | --maxdays | \ --warndays | -!(-*)[dEhImMW]) return ;; --root | -!(-*)R) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi COMPREPLY=($(compgen -u -- "$cur")) } && complete -F _chage chage # ex: filetype=sh bash-completion-2.11/completions/change_pw000066400000000000000000000010231370676621500207440ustar00rootroot00000000000000# mailman change_pw completion -*- shell-script -*- _change_pw() { local cur prev words cword split _init_completion -s || return case $prev in -l | --listname) _xfunc list_lists _mailman_lists return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--all --domain --listname --password --quiet --help' -- "$cur")) fi } && complete -F _change_pw change_pw # ex: filetype=sh bash-completion-2.11/completions/check_db000066400000000000000000000005661370676621500205460ustar00rootroot00000000000000# mailman check_db completion -*- shell-script -*- _check_db() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--all --verbose --help' -- "$cur")) else _xfunc list_lists _mailman_lists fi } && complete -F _check_db check_db # ex: filetype=sh bash-completion-2.11/completions/check_perms000066400000000000000000000004771370676621500213100ustar00rootroot00000000000000# mailman check_perms completion -*- shell-script -*- _check_perms() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-f -v -h' -- "$cur")) fi } && complete -F _check_perms check_perms # ex: filetype=sh bash-completion-2.11/completions/checksec000066400000000000000000000013521370676621500205660ustar00rootroot00000000000000# bash completion for checksec -*- shell-script -*- _checksec() { local cur prev words cword _init_completion || return case $prev in --version | --help) return ;; --file | --fortify-file) _filedir return ;; --dir) _filedir -d return ;; --proc) _pnames return ;; --proc-libs | --fortify-proc) _pids return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi } && complete -F _checksec checksec # ex: filetype=sh bash-completion-2.11/completions/chgrp000066400000000000000000000016541370676621500201260ustar00rootroot00000000000000# chgrp(1) completion -*- shell-script -*- _chgrp() { local cur prev words cword split _init_completion -s || return cur=${cur//\\\\/} if [[ $prev == --reference ]]; then _filedir return fi $split && return # options completion if [[ $cur == -* ]]; then local w opts for w in "${words[@]}"; do [[ $w == -@(R|-recursive) ]] && opts="-H -L -P" && break done COMPREPLY=($(compgen -W '-c -h -f -R -v --changes --dereference --no-dereference --silent --quiet --reference --recursive --verbose --help --version $opts' -- "$cur")) return fi # first parameter on line or first since an option? if [[ $cword -eq 1 && $cur != -* || $prev == -* ]]; then _allowed_groups "$cur" else _filedir fi } && complete -F _chgrp chgrp # ex: filetype=sh bash-completion-2.11/completions/chkconfig000066400000000000000000000016071370676621500207540ustar00rootroot00000000000000# chkconfig(8) completion -*- shell-script -*- _chkconfig() { local cur prev words cword split _init_completion -s || return case $prev in --level=[1-6] | [1-6] | --list | --add | --del | --override) _services _xinetd_services return ;; --level) COMPREPLY=($(compgen -W '{1..6}' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--list --add --del --override --level' \ -- "$cur")) else if ((cword == 2 || cword == 4)); then COMPREPLY=($(compgen -W 'on off reset resetpriorities' \ -- "$cur")) else _services _xinetd_services fi fi } && complete -F _chkconfig chkconfig # ex: filetype=sh bash-completion-2.11/completions/chmod000066400000000000000000000016111370676621500201060ustar00rootroot00000000000000# chmod(1) completion -*- shell-script -*- _chmod() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version) return ;; --reference) _filedir return ;; esac $split && return # Adapted from coreutils 8.28 chmod man page local modearg="-@(@(+([rwxXst])|[ugo])|+([0-7]))" # shellcheck disable=SC2053 if [[ $cur == -* && $cur != $modearg ]]; then local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi local args _count_args "" "" "$modearg" case $args in 1) ;; # mode *) _filedir ;; esac } && complete -F _chmod chmod # ex: filetype=sh bash-completion-2.11/completions/chown000066400000000000000000000021171370676621500201340ustar00rootroot00000000000000# chown(1) completion -*- shell-script -*- _chown() { local cur prev words cword split # Don't treat user:group as separate words. _init_completion -s -n : || return case "$prev" in --from) _usergroup return ;; --reference) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then # Complete -options local w opts for w in "${words[@]}"; do [[ $w == -@(R|-recursive) ]] && opts="-H -L -P" && break done COMPREPLY=($(compgen -W '-c -h -f -R -v --changes --dereference --no-dereference --from --silent --quiet --reference --recursive --verbose --help --version $opts' -- "$cur")) else local args # The first argument is an usergroup; the rest are filedir. _count_args : if ((args == 1)); then _usergroup -u else _filedir fi fi } && complete -F _chown chown # ex: filetype=sh bash-completion-2.11/completions/chpasswd000066400000000000000000000012701370676621500206310ustar00rootroot00000000000000# chpasswd(8) completion -*- shell-script -*- _chpasswd() { local cur prev words cword split _init_completion -s || return case $prev in --crypt | -!(-*)c) COMPREPLY=($(compgen -W 'DES MD5 NONE SHA256 SHA512' \ -- "$cur")) return ;; --sha-rounds | -!(-*)s) return ;; --root | -!(-*)R) _filedir -d return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _chpasswd chpasswd # ex: filetype=sh bash-completion-2.11/completions/chromium-browser000066400000000000000000000026051370676621500223240ustar00rootroot00000000000000# chromium-browser completion -*- shell-script -*- _chromium_browser() { local cur prev words cword split _init_completion -s -n : || return case $prev in --help | --app | --proxy-pac-url | -h) return ;; --user-data-dir) _filedir -d return ;; --proxy-server) case $cur in *://*) local prefix="${cur%%://*}://" _known_hosts_real -- "${cur#*://}" COMPREPLY=("${COMPREPLY[@]/#/$prefix}") __ltrim_colon_completions "$cur" ;; *) compopt -o nospace COMPREPLY=($(compgen -S :// -W 'http socks socks4 socks5' -- "$cur")) ;; esac return ;; --password-store) COMPREPLY=($(compgen -W 'basic gnome kwallet' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir "@(?([mxs])htm?(l)|pdf|txt)" } && complete -F _chromium_browser chromium-browser google-chrome \ google-chrome-stable chromium chrome # ex: filetype=sh bash-completion-2.11/completions/chronyc000066400000000000000000000030431370676621500204620ustar00rootroot00000000000000# chronyc(1) completion -*- shell-script -*- _chronyc_command_args() { local -a args args=($(compgen -W "$($1 help 2>/dev/null | awk '/^'$prev'\s[^ []/ { gsub("\\|", " ", $2); print $2 }')")) case $args in \) _known_hosts_real -- "$cur" ;; \<*) ;; *) COMPREPLY+=($(compgen -W '${args[@]}' -- "$cur")) ;; esac } _chronyc() { local cur prev words cword _init_completion || return case $prev in --help | -*p) return ;; -*h) _known_hosts_real -- "$cur" return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1") -6' -- "$cur")) return fi local i args args=0 for ((i = 1; i < cword; i++)); do [[ ${words[i]} != -* && ${words[i - 1]} != @(-p|-h) ]] && ((args++)) done case $args in 0) COMPREPLY=($(compgen -W "$($1 help 2>/dev/null | awk '!/(^ |: *$)/ { sub("\\|", " ", $1); print $1 }')" \ -- "$cur")) ;; 1) _chronyc_command_args "$1" if [[ ! ${COMPREPLY-} && $prev == sources?(tats) ]]; then # [-v] not handled by _chronyc_command_args yet COMPREPLY=($(compgen -W '-v' -- "$cur")) fi ;; 2) [[ $prev == @(peer|server) ]] && _known_hosts_real -- "$cur" ;; esac } && complete -F _chronyc chronyc # ex: filetype=sh bash-completion-2.11/completions/chrpath000066400000000000000000000010301370676621500204400ustar00rootroot00000000000000# chrpath(1) completion -*- shell-script -*- _chrpath() { local cur prev words cword _init_completion || return case $prev in --version | --help | -!(-*)[vh]) return ;; --replace | -!(-*)r) _filedir -d return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _filedir } && complete -F _chrpath chrpath # ex: filetype=sh bash-completion-2.11/completions/cksfv000066400000000000000000000010101370676621500201210ustar00rootroot00000000000000# cksfv completion by Chris -*- shell-script -*- _cksfv() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi case "$prev" in -*C | -*g) _filedir -d return ;; -*f) _filedir 'sfv' return ;; esac _filedir } && complete -F _cksfv cksfv # ex: filetype=sh bash-completion-2.11/completions/cleanarch000066400000000000000000000005401370676621500207340ustar00rootroot00000000000000# mailman cleanarch completion -*- shell-script -*- _cleanarch() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--status --dry-run --quiet --help' \ -- "$cur")) fi } && complete -F _cleanarch cleanarch # ex: filetype=sh bash-completion-2.11/completions/clisp000066400000000000000000000012341370676621500201270ustar00rootroot00000000000000# -*- shell-script -*- # bash brogrammable completion for various Common Lisp implementations by # Nikodemus Siivola _clisp() { local cur prev words cword _init_completion || return # completing an option (may or may not be separated by a space) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-h --help --version --license -B -K -M -m -L -N -E -q --quiet --silent -w -I -ansi -traditional -p -C -norc -i -c -l -o -x ' -- "$cur")) else _filedir fi } && complete -F _clisp -o default clisp # ex: filetype=sh bash-completion-2.11/completions/clone_member000066400000000000000000000010361370676621500214440ustar00rootroot00000000000000# mailman clone_member completion -*- shell-script -*- _clone_member() { local cur prev words cword split _init_completion -s || return case $prev in -l | --listname) _xfunc list_lists _mailman_lists return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--listname --remove --admin --quiet --nomodify --help' -- "$cur")) fi } && complete -F _clone_member clone_member # ex: filetype=sh bash-completion-2.11/completions/complete000066400000000000000000000026571370676621500206370ustar00rootroot00000000000000# bash complete completion -*- shell-script -*- _complete() { local cur prev words cword _init_completion || return case $prev in -*o) COMPREPLY=($(compgen -W 'bashdefault default dirnames filenames nospace plusdirs' -- "$cur")) return ;; -*A) COMPREPLY=($(compgen -W 'alias arrayvar binding builtin command directory disabled enabled export file function group helptopic hostname job keyword running service setopt shopt signal stopped user variable' -- "$cur")) return ;; -*C) COMPREPLY=($(compgen -A command -- "$cur")) return ;; -*F) COMPREPLY=($(compgen -A function -- "$cur")) return ;; -*p | -*r) COMPREPLY=($(complete -p | command sed -e 's|.* ||')) COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then # relevant options completion local opts="-a -b -c -d -e -f -g -j -k -o -s -u -v -A -G -W -P -S -X" [[ $1 != compgen ]] && opts+=" -F -C" COMPREPLY=($(compgen -W "$opts" -- "$cur")) else COMPREPLY=($(compgen -A command -- "$cur")) fi } && complete -F _complete compgen complete # ex: filetype=sh bash-completion-2.11/completions/config_list000066400000000000000000000011121370676621500213100ustar00rootroot00000000000000# mailman config_list completion -*- shell-script -*- _config_list() { local cur prev words cword split _init_completion -s || return case $prev in -i | -o | --inputfile | --outputfile) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--inputfile --outputfile --checkonly --verbose --help' -- "$cur")) else _xfunc list_lists _mailman_lists fi } && complete -F _config_list config_list # ex: filetype=sh bash-completion-2.11/completions/configure000066400000000000000000000022641370676621500210020ustar00rootroot00000000000000# bash completion for configure -*- shell-script -*- _configure() { local cur prev words cword split _init_completion -s || return case $prev in -h | --help | -V | --version | --program-prefix | --program-suffix | \ --program-transform-name) return ;; --*file) _filedir return ;; --*prefix | --*dir) _filedir -d return ;; esac $split && return # if $COMP_CONFIGURE_HINTS is not null, then completions of the form # --option=SETTING will include 'SETTING' as a contextual hint [[ $cur != -* ]] && return if [[ ${COMP_CONFIGURE_HINTS-} ]]; then COMPREPLY=($(compgen -W "$($1 --help 2>&1 | awk '/^ --[A-Za-z]/ { print $1; \ if ($2 ~ /--[A-Za-z]/) print $2 }' | command sed -e 's/[[,].*//g')" \ -- "$cur")) [[ ${COMPREPLY-} == *=* ]] && compopt -o nospace else COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _configure configure # ex: filetype=sh bash-completion-2.11/completions/convert000066400000000000000000000213211370676621500204740ustar00rootroot00000000000000# bash completion for ImageMagick -*- shell-script -*- _ImageMagick() { case $prev in -channel) COMPREPLY=($(compgen -W 'Red Green Blue Opacity Matte Cyan Magenta Yellow Black' -- "$cur")) return ;; -colormap) COMPREPLY=($(compgen -W 'shared private' -- "$cur")) return ;; -colorspace) COMPREPLY=($(compgen -W 'GRAY OHTA RGB Transparent XYZ YCbCr YIQ YPbPr YUV CMYK' -- "$cur")) return ;; -compose) COMPREPLY=($(compgen -W 'Over In Out Atop Xor Plus Minus Add Subtract Difference Multiply Bumpmap Copy CopyRed CopyGreen CopyBlue CopyOpacity' -- "$cur")) return ;; -compress) COMPREPLY=($(compgen -W 'None BZip Fax Group4 JPEG Lossless LZW RLE Zip' -- "$cur")) return ;; -dispose) COMPREPLY=($(compgen -W 'Undefined None Background Previous' \ -- "$cur")) return ;; -encoding) COMPREPLY=($(compgen -W 'AdobeCustom AdobeExpert AdobeStandard AppleRoman BIG5 GB2312 Latin2 None SJIScode Symbol Unicode Wansung' -- "$cur")) return ;; -endian) COMPREPLY=($(compgen -W 'MSB LSB' -- "$cur")) return ;; -filter) COMPREPLY=($(compgen -W 'Point Box Triangle Hermite Hanning Hamming Blackman Gaussian Quadratic Cubic Catrom Mitchell Lanczos Bessel Sinc' -- "$cur")) return ;; -format) COMPREPLY=($(compgen -W "$(convert -list format | awk \ '/ [r-][w-][+-] / { sub("[*]$","",$1); print tolower($1) }')" \ -- "$cur")) return ;; -gravity) COMPREPLY=($(compgen -W 'Northwest North NorthEast West Center East SouthWest South SouthEast' -- "$cur")) return ;; -intent) COMPREPLY=($(compgen -W 'Absolute Perceptual Relative Saturation' -- "$cur")) return ;; -interlace) COMPREPLY=($(compgen -W 'None Line Plane Partition' -- "$cur")) return ;; -limit) COMPREPLY=($(compgen -W 'Disk File Map Memory' -- "$cur")) return ;; -list) COMPREPLY=($(compgen -W 'Delegate Format Magic Module Resource Type' -- "$cur")) return ;; -map) COMPREPLY=($(compgen -W 'best default gray red green blue' \ -- "$cur")) _filedir return ;; -noise) COMPREPLY=($(compgen -W 'Uniform Gaussian Multiplicative Impulse Laplacian Poisson' -- "$cur")) return ;; -preview) COMPREPLY=($(compgen -W 'Rotate Shear Roll Hue Saturation Brightness Gamma Spiff Dull Grayscale Quantize Despeckle ReduceNoise AddNoise Sharpen Blur Treshold EdgeDetect Spread Shade Raise Segment Solarize Swirl Implode Wave OilPaint CharcoalDrawing JPEG' -- "$cur")) return ;; -mask | -profile | -texture | -tile | -write) _filedir return ;; -type) COMPREPLY=($(compgen -W 'Bilevel Grayscale Palette PaletteMatte TrueColor TrueColorMatte ColorSeparation ColorSeparationlMatte Optimize' -- "$cur")) return ;; -units) COMPREPLY=($(compgen -W 'Undefined PixelsPerInch PixelsPerCentimeter' -- "$cur")) return ;; -virtual-pixel) COMPREPLY=($(compgen -W 'Constant Edge mirror tile' -- "$cur")) return ;; -visual) COMPREPLY=($(compgen -W 'StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor defaut visualid' \ -- "$cur")) return ;; esac return 1 } _convert() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+adjoin +append +compress +contrast +debug +dither +endian +gamma +label +map +mask +matte +negate +noise +page +raise +render +write' -- "$cur")) else _filedir fi } && complete -F _convert convert _mogrify() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+compress +contrast +debug +dither +endian +gamma +label +map +mask +matte +negate +page +raise' -- "$cur")) else _filedir fi } && complete -F _mogrify mogrify _display() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+compress +contrast +debug +dither +endian +gamma +label +map +matte +negate +page +raise +write' -- "$cur")) else _filedir fi } && complete -F _display display _animate() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+debug +dither +gamma +map +matte' \ -- "$cur")) else _filedir fi } && complete -F _animate animate _identify() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+debug' -- "$cur")) else _filedir fi } && complete -F _identify identify _montage() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+adjoin +compress +debug +dither +endian +gamma +label +matte +page' -- "$cur")) else _filedir fi } && complete -F _montage montage _composite() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+compress +debug +dither +endian +label +matte +negate +page +write' -- "$cur")) else _filedir fi } && complete -F _composite composite _compare() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+debug' -- "$cur")) else _filedir fi } && complete -F _compare compare _conjure() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+debug' -- "$cur")) else _filedir fi } && complete -F _conjure conjure _import() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+debug' -- "$cur")) else _filedir fi } && complete -F _import import _stream() { local cur prev words cword _init_completion || return _ImageMagick && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) elif [[ $cur == +* ]]; then COMPREPLY=($(compgen -W '+debug' -- "$cur")) else _filedir fi } && complete -F _stream stream # ex: filetype=sh bash-completion-2.11/completions/cowsay000066400000000000000000000010371370676621500203230ustar00rootroot00000000000000# bash completion for cowsay -*- shell-script -*- _cowsay() { local cur prev words cword _init_completion || return case $prev in -f) COMPREPLY=($(compgen -W \ '$(cowsay -l 2>/dev/null | tail -n +2)' -- "$cur")) return ;; esac # relevant options completion COMPREPLY=($(compgen -W '-b -d -g -p -s -t -w -y -e -f -h -l -n -T -W' \ -- "$cur")) } && complete -F _cowsay -o default cowsay cowthink # ex: filetype=sh bash-completion-2.11/completions/cpan2dist000066400000000000000000000023021370676621500207010ustar00rootroot00000000000000# bash completion for cpan2dist -*- shell-script -*- _cpan2dist() { local cur prev words cword _init_completion || return case $prev in --format) # should remove ":" from COMP_WORDBREAKS, but doesn't work (?) COMPREPLY=($(compgen -W '$(perl -MCPANPLUS::Dist -e \ "print map { \"\$_\n\" } CPANPLUS::Dist->dist_types")' \ -- "$cur")) return ;; --banlist | --ignorelist | --modulelist | --logfile) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else local cpandirs=("$HOME/.cpanplus/" "$HOME/.cpan/source/modules/") local packagelist for dir in "${cpandirs[@]}"; do [[ -d $dir && -r "$dir/02packages.details.txt.gz" ]] && packagelist="$dir/02packages.details.txt.gz" done [[ -v packagelist ]] && COMPREPLY=($(zgrep "^${cur//-/::}" \ $packagelist 2>/dev/null | awk '{print $1}' | command sed -e 's/::/-/g')) fi } && complete -F _cpan2dist -o default cpan2dist # ex: filetype=sh bash-completion-2.11/completions/cpio000066400000000000000000000055231370676621500177540ustar00rootroot00000000000000# bash completion for cpio -*- shell-script -*- _cpio() { local cur prev words cword split _init_completion -s -n : || return # --name value style option case $prev in --format | -!(-*)H) COMPREPLY=($(compgen -W \ 'bin odc newc crc tar ustar hpbin hpodc' -- "$cur")) return ;; --file | --pattern-file | -!(-*)[EFI]) _filedir return ;; --owner | -!(-*)R) _usergroup return ;; --rsh-command) compopt -o filenames COMPREPLY=($(compgen -c -- "$cur")) return ;; esac $split && return if ((cword == 1)); then COMPREPLY=($(compgen -W '-o --create -i --extract -p --pass-through -? --help --license --usage --version' -- "$cur")) else case ${words[1]} in -o | --create) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-0 -a -c -v -A -B -L -V -C -H -M -O -F --file --format --message --null --reset-access-time --verbose --dot --append --block-size --dereference --io-size --quiet --force-local --rsh-command --help --version' \ -- "$cur")) fi ;; -i | --extract) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-b -c -d -f -m -n -r -t -s -u -v -B -S -V -C -E -H -M -R -I -F --file --make-directories --nonmatching --preserve-modification-time --numeric-uid-gid --rename --list --swap-bytes --swap --dot --unconditional --verbose --block-size --swap-halfwords --io-size --pattern-file --format --owner --no-preserve-owner --message --force-local --no-absolute-filenames --sparse --only-verify-crc --quiet --rsh-command --help --to-stdout --version' \ -- "$cur")) fi ;; -p* | --pass-through) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-0 -a -d -l -m -u -v -L -V -R --null --reset-access-time --make-directories --link --quiet --preserve-modification-time --unconditional --verbose --dot --dereference --owner --no-preserve-owner --sparse --help --version' \ -- "$cur")) else _filedir -d fi ;; esac fi } && complete -F _cpio cpio # ex: filetype=sh bash-completion-2.11/completions/cppcheck000066400000000000000000000051101370676621500205720ustar00rootroot00000000000000# bash completion for cppcheck(1) -*- shell-script -*- _cppcheck() { local cur prev words cword split _init_completion -s || return case $prev in --append | --exitcode-suppressions | --rule-file | --config-excludes-file | \ --suppressions-list | --includes-file | --include | -i) _filedir return ;; -D | -U | --rule | --suppress | --template | --max-configs | -h | --help | --version | \ --errorlist | --config-exclude | -l) return ;; --enable) # split comma-separated list split=false if [[ $cur == ?*,* ]]; then prev="${cur%,*}" cur="${cur##*,}" split=true fi COMPREPLY=($(compgen -W 'all warning style performance portability information unusedFunction missingInclude' \ -- "$cur")) $split && COMPREPLY=(${COMPREPLY[@]/#/"$prev,"}) return ;; --error-exitcode) COMPREPLY=($(compgen -W '{0..255}' -- "$cur")) return ;; --file-list) _filedir [[ -z $cur || $cur == - ]] && COMPREPLY+=(-) return ;; -I) _filedir -d return ;; -j) COMPREPLY=($(compgen -W "{2..$(_ncpus)}" -- "$cur")) return ;; --language | -x) COMPREPLY=($(compgen -W 'c c++' -- "$cur")) return ;; --std) COMPREPLY=($(compgen -W 'c89 c99 c11 c++03 c++11 c++14 c++17 c++20' -- "$cur")) return ;; --platform) _filedir COMPREPLY+=($(compgen -W 'unix32 unix64 win32A win32W win64 native' -- "$cur")) return ;; -rp | --relative-paths) if $split; then # -rp without argument is allowed _filedir -d return fi ;; --library) _filedir cfg return ;; --xml-version) COMPREPLY=($(compgen -W '1 2' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else _filedir '@([cht]pp|[cht]xx|cc|[ch]++|[ch])' fi } && complete -F _cppcheck cppcheck # ex: filetype=sh bash-completion-2.11/completions/crontab000066400000000000000000000022471370676621500204520ustar00rootroot00000000000000# crontab(1) completion -*- shell-script -*- _crontab() { local cur prev words cword _init_completion || return case $prev in -*u) _allowed_users return ;; esac local -A opts=([-u]="" [-l]="" [-r]="" [-e]="") [[ $OSTYPE == *linux* ]] && opts[-i]= [[ -d /sys/fs/selinux || -d /selinux ]] && opts[-s]= local i for i in "${!words[@]}"; do [[ ${words[i]} && $i -ne $cword ]] && unset "opts[${words[i]}]" case "${words[i]}" in -l) unset 'opts[-r]' 'opts[-e]' 'opts[-i]' 'opts[-s]' ;; -e) unset 'opts[-l]' 'opts[-r]' 'opts[-i]' ;; -r) unset 'opts[-l]' 'opts[-e]' ;; -u) unset 'opts[-i]' ;; esac done if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '${!opts[@]}' -- "$cur")) return fi # do filenames only if we did not have -l, -r, or -e [[ ${words[*]} == *\ -[lre]* ]] || _filedir } && complete -F _crontab crontab # ex: filetype=sh bash-completion-2.11/completions/cryptsetup000066400000000000000000000057731370676621500212530ustar00rootroot00000000000000# bash completion for cryptsetup -*- shell-script -*- _cryptsetup_name() { COMPREPLY=($(compgen -X control -W '$(command ls /dev/mapper)' -- "$cur")) } _cryptsetup_device() { cur=${cur:=/dev/} _filedir } _cryptsetup() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | --cipher | --hash | --*-size | --key-slot | --size | --offset | \ --skip | --iter-time | --timeout | --tries | -!(-*)[chslSbopitT]) return ;; --key-file | --master-key-file | --header-backup-file | -!(-*)d) _filedir return ;; --type | -!(-*)M) COMPREPLY=($(compgen -W "luks plain loopaes tcrypt" -- "$cur")) return ;; esac $split && return local arg _get_first_arg if [[ -z $arg ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else COMPREPLY=($(compgen -W 'open close resize status benchmark repair erase luksFormat luksAddKey luksRemoveKey luksChangeKey luksKillSlot luksUUID isLuks luksDump tcryptDump luksSuspend luksResume luksHeaderBackup luksHeaderRestore' -- "$cur")) fi else local args _count_args "" "-!(-*)[chslSbopitTdM]" case $arg in open | create | luksOpen | loopaesOpen | tcryptOpen) case $args in 2) _cryptsetup_device ;; 3) _cryptsetup_name ;; esac ;; close | remove | luksClose | loopaesClose | tcryptClose | status | resize | \ luksSuspend | luksResume) case $args in 2) _cryptsetup_name ;; esac ;; luksFormat | luksAddKey | luksRemoveKey | luksChangeKey) case $args in 2) _cryptsetup_device ;; 3) _filedir ;; esac ;; luksKillSlot | luksDelKey | luksUUID | isLuks | luksDump) case $args in 2) _cryptsetup_device ;; esac ;; luksHeaderBackup | luksHeaderRestore) case $args in 2) _cryptsetup_device ;; 3) COMPREPLY=('--header-backup-file') ;; esac ;; esac fi } && complete -F _cryptsetup cryptsetup # ex: filetype=sh bash-completion-2.11/completions/curl000066400000000000000000000063551370676621500177730ustar00rootroot00000000000000# curl(1) completion -*- shell-script -*- _curl() { local cur prev words cword _init_completion || return case $prev in --ciphers | --connect-timeout | --continue-at | --form | --form-string | \ --ftp-account | --ftp-alternative-to-user | --ftp-port | --header | --help | \ --hostpubmd5 | --keepalive-time | --krb | --limit-rate | --local-port | \ --mail-from | --mail-rcpt | --max-filesize | --max-redirs | --max-time | --pass | \ --proto | --proto-redir | --proxy-user | --proxy1.0 | --quote | --range | \ --request | --retry | --retry-delay | --retry-max-time | \ --socks5-gssapi-service | --telnet-option | --tftp-blksize | --time-cond | \ --url | --user | --user-agent | --version | --write-out | --resolve | --tlsuser | \ --tlspassword | -!(-*)[CFPHhmQrXtzuAVw]) return ;; --config | --cookie | --cookie-jar | --dump-header | --egd-file | \ --key | --libcurl | --output | --random-file | --upload-file | --trace | \ --trace-ascii | --netrc-file | -!(-*)[KbcDoT]) _filedir return ;; --cacert | --cert | -!(-*)E) _filedir '@(c?(e)rt|cer|pem|der)' return ;; --capath) _filedir -d return ;; --cert-type | --key-type) COMPREPLY=($(compgen -W 'DER PEM ENG' -- "$cur")) return ;; --crlfile) _filedir crl return ;; --data | --data-ascii | --data-binary | --data-urlencode | -!(-*)d) if [[ $cur == \@* ]]; then cur=${cur:1} _filedir if [[ ${#COMPREPLY[@]} -eq 1 && -d ${COMPREPLY[0]} ]]; then COMPREPLY[0]+=/ compopt -o nospace fi COMPREPLY=("${COMPREPLY[@]/#/@}") fi return ;; --delegation) COMPREPLY=($(compgen -W 'none policy always' -- "$cur")) return ;; --engine) COMPREPLY=($(compgen -W 'list' -- "$cur")) return ;; --ftp-method) COMPREPLY=($(compgen -W 'multicwd nocwd singlecwd' -- "$cur")) return ;; --ftp-ssl-ccc-mode) COMPREPLY=($(compgen -W 'active passive' -- "$cur")) return ;; --interface) _available_interfaces -a return ;; --proxy | --socks4 | --socks4a | --socks5 | --socks5-hostname | -!(-*)x) _known_hosts_real -- "$cur" return ;; --pubkey) _xfunc ssh _ssh_identityfile pub return ;; --stderr) COMPREPLY=($(compgen -W '-' -- "$cur")) _filedir return ;; --tlsauthtype) COMPREPLY=($(compgen -W 'SRP' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _curl curl # ex: filetype=sh bash-completion-2.11/completions/cvs000066400000000000000000000273771370676621500176300ustar00rootroot00000000000000# cvs(1) completion -*- shell-script -*- _cvs_entries() { local prefix=${cur%/*}/ IFS=$'\n' [[ -e ${prefix:-}CVS/Entries ]] || prefix="" entries=($(cut -d/ -f2 -s ${prefix:-}CVS/Entries 2>/dev/null)) if [[ $entries ]]; then entries=("${entries[@]/#/${prefix:-}}") compopt -o filenames fi } _cvs_modules() { if [[ -n $prefix ]]; then COMPREPLY=($(command ls -d ${cvsroot}/${prefix}/!(CVSROOT))) else COMPREPLY=($(command ls -d ${cvsroot}/!(CVSROOT))) fi } _cvs_commands() { cvs --help-commands 2>&1 | awk '/^( *|\t)/ { print $1 }' } _cvs_command_options() { COMPREPLY=($(compgen -W '$(_parse_help "$1" "--help $2")' -- "$cur")) } _cvs_kflags() { COMPREPLY=($(compgen -W 'kv kvl k o b v' -- "$cur")) } _cvs_roots() { local -a cvsroots [[ -v CVSROOT ]] && cvsroots=("$CVSROOT") [[ -r ~/.cvspass ]] && cvsroots+=($(awk '{ print $2 }' ~/.cvspass)) [[ -r CVS/Root ]] && mapfile -tO ${#cvsroots[@]} cvsroots /dev/null)) local f for i in "${!files[@]}"; do if [[ ${files[i]} == ?(*/)CVS ]]; then unset 'files[i]' else for f in "${entries[@]}"; do if [[ ${files[i]} == "$f" && ! -d $f ]]; then unset 'files[i]' break fi done fi done COMPREPLY=($(compgen -X "$_backup_glob" -W '${files[@]}' \ -- "$cur")) else _cvs_command_options "$1" $mode fi ;; admin) case $prev in --*) ;; -*@([aAbcelmnNosu]|t-)) return ;; -*t) _filedir return ;; -*k) _cvs_kflags return ;; esac if [[ $cur == -* ]]; then _cvs_command_options "$1" $mode else _cvs_entries COMPREPLY=($(compgen -W '${entries[@]}' -- "$cur")) fi ;; annotate) [[ $prev == -[rD] ]] && return if [[ $cur == -* ]]; then _cvs_command_options "$1" $mode else _cvs_entries COMPREPLY=($(compgen -W '${entries[@]}' -- "$cur")) fi ;; checkout) case $prev in --*) ;; -*[rDj]) return ;; -*d) _filedir -d return ;; -*k) _cvs_kflags return ;; esac if [[ $cur != -* ]]; then [[ ! -v cvsroot ]] && cvsroot=${CVSROOT-} COMPREPLY=($(cvs -d "$cvsroot" co -c 2>/dev/null | awk '{print $1}')) COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) else _cvs_command_options "$1" $mode fi ;; commit) case $prev in --*) ;; -*[mr]) return ;; -*F) _filedir return ;; esac if [[ $cur != -* ]]; then # if $COMP_CVS_REMOTE is not null, 'cvs commit' will # complete on remotely checked-out files (requires # passwordless access to the remote repository if [[ -n ${COMP_CVS_REMOTE:-} ]]; then # this is the least computationally intensive way found so # far, but other changes (something other than # changed/removed/new) may be missing changed=($(cvs -q diff --brief 2>&1 | command sed -ne 's/^Files [^ ]* and \([^ ]*\) differ$/\1/p')) newremoved=($(cvs -q diff --brief 2>&1 | command sed -ne 's/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p')) COMPREPLY=($(compgen -W '${changed[@]:-} \ ${newremoved[@]:-}' -- "$cur")) else _cvs_entries COMPREPLY=($(compgen -W '${entries[@]}' -- "$cur")) fi else _cvs_command_options "$1" $mode fi ;; cvsroot) _cvs_roots ;; diff | log) if [[ $cur == -* ]]; then _cvs_command_options "$1" $mode [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else _cvs_entries COMPREPLY=($(compgen -W '${entries[@]:-}' -- "$cur")) fi ;; editors | watchers) if [[ $cur == -* ]]; then _cvs_command_options "$1" $mode else _cvs_entries COMPREPLY=($(compgen -W '${entries[@]}' -- "$cur")) fi ;; export) case $prev in --*) ;; -*[rD]) return ;; -*d) _filedir -d return ;; -*k) _cvs_kflags return ;; esac if [[ $cur != -* ]]; then [[ ! -v cvsroot ]] && cvsroot=${CVSROOT-} COMPREPLY=($(cvs -d "$cvsroot" co -c | awk '{print $1}')) COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) else _cvs_command_options "$1" $mode fi ;; import) case $prev in --*) ;; -*[IbmW]) return ;; -*k) _cvs_kflags return ;; esac if [[ $cur != -* ]]; then # starts with same algorithm as checkout [[ ! -v cvsroot ]] && cvsroot=${CVSROOT-} local prefix=${cur%/*} if [[ -r ${cvsroot}/${prefix} ]]; then _cvs_modules COMPREPLY=(${COMPREPLY[@]#$cvsroot}) COMPREPLY=(${COMPREPLY[@]#\/}) fi pwd=$(pwd) pwd=${pwd##*/} COMPREPLY=($(compgen -W '${COMPREPLY[@]} $pwd' -- "$cur")) else _cvs_command_options "$1" $mode fi ;; remove) if [[ $cur != -* ]]; then _cvs_entries if [[ $prev != -f ]]; then # find out what files are missing for i in "${!entries[@]}"; do [[ -r ${entries[i]} ]] && unset 'entries[i]' done fi COMPREPLY=($(compgen -W '${entries[@]:-}' -- "$cur")) else _cvs_command_options "$1" $mode fi ;; update) case $prev in --*) ;; -*[rDjIW]) return ;; -*k) _cvs_kflags return ;; esac if [[ $cur == -* ]]; then _cvs_command_options "$1" $mode else _cvs_entries COMPREPLY=($(compgen -W '${entries[@]}' -- "$cur")) fi ;; "") case $prev in --*) ;; -*T) _filedir -d return ;; -*[es]) return ;; -*z) COMPREPLY=($(compgen -W '{1..9}' -- "$cur")) return ;; esac COMPREPLY=($(compgen -W '$(_cvs_commands) $(_parse_help "$1" --help-options) --help --help-commands --help-options --version' -- "$cur")) ;; esac } && complete -F _cvs cvs # ex: filetype=sh bash-completion-2.11/completions/cvsps000066400000000000000000000027141370676621500201570ustar00rootroot00000000000000# bash completion for cvsps -*- shell-script -*- _cvsps() { local cur prev words cword _init_completion -n : || return case $prev in -h | -z | -f | -d | -l | --diff-opts | --debuglvl) return ;; -s) COMPREPLY=($(compgen -W "$($1 2>/dev/null | awk '/^PatchSet:?[ \t]/ { print $2 }')" -- "$cur")) return ;; -a) COMPREPLY=($(compgen -W "$($1 2>/dev/null | awk '/^Author:[ \t]/ { print $2 }')" -- "$cur")) return ;; -b) COMPREPLY=($(compgen -W "$($1 2>/dev/null | awk '/^Branch:[ \t]/ { print $2 }')" -- "$cur")) return ;; -r) COMPREPLY=($(compgen -W "$($1 2>/dev/null | awk '/^Tag:[ \t]+[^(]/ { print $2 }')" -- "$cur")) return ;; -p) _filedir -d return ;; --test-log) _filedir return ;; -Z) COMPREPLY=($(compgen -W '{1..9}' -- "$cur")) return ;; --root) _xfunc cvs _cvs_roots return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) else _xfunc cvs _cvs_roots fi } && complete -F _cvsps cvsps # ex: filetype=sh bash-completion-2.11/completions/dd000066400000000000000000000023741370676621500174120ustar00rootroot00000000000000# bash completion for dd -*- shell-script -*- _dd() { local cur prev words cword _init_completion -n = || return case $cur in if=* | of=*) cur=${cur#*=} _filedir return ;; conv=*) cur=${cur#*=} COMPREPLY=($(compgen -W 'ascii ebcdic ibm block unblock lcase ucase sparse swab sync excl nocreat notrunc noerror fdatasync fsync' -- "$cur")) return ;; iflag=* | oflag=*) cur=${cur#*=} COMPREPLY=($(compgen -W 'append direct directory dsync sync fullblock nonblock noatime nocache noctty nofollow count_bytes skip_bytes seek_bytes' -- "$cur")) return ;; status=*) cur=${cur#*=} COMPREPLY=($(compgen -W 'none noxfer progress' -- "$cur")) return ;; esac COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur") $(compgen -W 'bs cbs conv count ibs if iflag obs of oflag seek skip status' -S '=' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _dd dd # ex: filetype=sh bash-completion-2.11/completions/deja-dup000066400000000000000000000012601370676621500205050ustar00rootroot00000000000000# bash completion for deja-dup(1) -*- shell-script -*- _deja_dup() { local cur prev words cword split _init_completion -s || return case $prev in -'?' | --help | --help-*) return ;; --restore) _filedir return ;; --restore-missing) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help-all)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi } && complete -F _deja_dup deja-dup # ex: filetype=sh bash-completion-2.11/completions/desktop-file-validate000066400000000000000000000007321370676621500231740ustar00rootroot00000000000000# desktop-file-validate completion -*- shell-script -*- _desktop_file_validate() { local cur prev words cword _init_completion || return case $prev in --help) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _filedir desktop } && complete -F _desktop_file_validate desktop-file-validate # ex: filetype=sh bash-completion-2.11/completions/dhclient000066400000000000000000000012701370676621500206070ustar00rootroot00000000000000# bash completion for dhclient -*- shell-script -*- _dhclient() { local cur prev words cword _init_completion || return case $prev in -p | -e) return ;; -D) COMPREPLY=($(compgen -W 'LL LLT' -- "$cur")) return ;; -*f) _filedir return ;; -s) _known_hosts_real -- "$cur" return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) else _available_interfaces fi } && complete -F _dhclient dhclient # ex: filetype=sh bash-completion-2.11/completions/dict000066400000000000000000000034131370676621500177410ustar00rootroot00000000000000# dict(1) completion -*- shell-script -*- _dictdata() { dict $host $port $1 2>/dev/null | command sed -ne \ 's/^[[:blank:]]\{1,\}\([^[:blank:]]*\).*$/\1/p' } _dict() { local cur prev words cword _init_completion || return local host port db i for ((i = 1; i < cword; i++)); do case ${words[i]} in --host | -!(-*)h) host=${words[++i]} [[ -n $host ]] && host="-h $host" ;; --port | -!(-*)p) port=${words[++i]} [[ -n $port ]] && port="-p $port" ;; --database | -!(-*)d) db=${words[++i]} [[ -n $db ]] && host="-d $db" ;; esac done if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi case $prev in --database | -info | -!(-*)[di]) COMPREPLY=($(compgen -W '$(_dictdata -D)' -- "$cur")) return ;; --strategy | -!(-*)s) COMPREPLY=($(compgen -W '$(_dictdata -S)' -- "$cur")) return ;; esac local dictfile=/usr/share/dict/words if [[ -r $dictfile ]]; then # Dictfile may be too large for practical compgen -W usage, so narrow # it down with grep if $cur looks like something that's safe to embed # in a pattern instead. if [[ $cur == +([-A-Za-z0-9/.]) ]]; then COMPREPLY=($(compgen -W \ '$(command grep "^${cur//./\\.}" $dictfile)' -- "$cur")) else COMPREPLY=($(compgen -W '$(cat $dictfile)' -- "$cur")) fi fi } && complete -F _dict -o default dict rdict # ex: filetype=sh bash-completion-2.11/completions/dmypy000066400000000000000000000020661370676621500201630ustar00rootroot00000000000000# dmypy completion -*- shell-script -*- _dmypy() { local cur prev words cword _init_completion || return case $prev in --help | --version | -[hV]) return ;; --status-file) _filedir return ;; esac local cmd i for ((i = 1; i < cword; i++)); do if [[ ${words[i]} != -* && ${words[i - 1]} != --status-file ]]; then cmd=${words[i]} break fi done case ${cmd-} in check | run) _filedir '@(py|pyi)' return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi if [[ ! -v cmd ]]; then local cmds=$($1 --help 2>&1 | command sed -ne '/positional arguments/{p;n;p;q}' | command sed -ne 's/{\(.*\)}/\1/p') COMPREPLY=($(IFS="," compgen -W '$cmds' -- "$cur")) return fi } && complete -F _dmypy dmypy # ex: filetype=sh bash-completion-2.11/completions/dnssec-keygen000066400000000000000000000021701370676621500215540ustar00rootroot00000000000000# bash completion for dnssec-keygen(8) -*- shell-script -*- _dnssec_keygen_optarg() { local args=$("$1" -h 2>&1 | command sed -e 's/|/ /g' -e 's/(.*//' \ -ne '/^[[:space:]]*'$2'/,/^[[:space:]]*[(-]/p' | command sed -e 's/^[[:space:]]*'$2'.*://' -e '/^[[:space:]]*-/d') COMPREPLY+=($(compgen -W '$args' -- "$cur")) } _dnssec_keygen() { local cur prev words cword _init_completion || return case $prev in -[hbEgLpsPARIDSi]) return ;; -K) _filedir -d return ;; -[ancdfTtm]) _dnssec_keygen_optarg "$1" $prev return ;; -r) cur=${cur:=/dev/} _filedir return ;; -v) COMPREPLY=($(compgen -W '{0..10}' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" | \ command sed -e "s/:\$//")' -- "$cur")) return fi } && complete -F _dnssec_keygen dnssec-keygen # ex: filetype=sh bash-completion-2.11/completions/dnsspoof000066400000000000000000000007641370676621500206570ustar00rootroot00000000000000# dnsspoof completion -*- shell-script -*- _dnsspoof() { local cur prev words cword _init_completion || return case $prev in -i) _available_interfaces -a return ;; -f) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) fi } && complete -F _dnsspoof dnsspoof # ex: filetype=sh bash-completion-2.11/completions/dot000066400000000000000000000024121370676621500176020ustar00rootroot00000000000000# dot(1) completion -*- shell-script -*- _dot() { local cur prev words cword _init_completion -n := || return [[ $prev == -[V?] ]] && return case $cur in -G* | -N* | -E* | -l?* | -q?* | -s?* | -Ln* | -LU* | -LC* | -LT*) return ;; -T*) local langs=($("$1" -TNON_EXISTENT 2>&1 | command sed -ne 's/.*one of://p')) COMPREPLY=($(compgen -P -T -W '${langs[@]}' -- "${cur#-T}")) return ;; -K*) local layouts=($("$1" -KNON_EXISTENT 2>&1 | command sed -ne 's/.*one of://p')) COMPREPLY=($(compgen -P -K -W '${layouts[@]}' -- "${cur#-K}")) return ;; -o*) cur=${cur#-o} _filedir COMPREPLY=($(compgen -P -o -W '${COMPREPLY[@]}' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-V -v -G -N -E -T -K -l -o -O -P -q -s -y -n -n1 -n2 -x -Lg -LO -Ln -LU -LC -LT -m -c -?' -- "$cur")) [[ ${COMPREPLY-} == -@([GNETKo]|L[nUCT]) ]] && compopt -o nospace return fi _filedir dot } && complete -F _dot dot # ex: filetype=sh bash-completion-2.11/completions/dpkg000066400000000000000000000070121370676621500177420ustar00rootroot00000000000000# This function is required by _dpkg and _dpkg-reconfigure -*- shell-script -*- _have grep-status && { _comp_dpkg_installed_packages() { grep-status -P -e "^$1" -a -FStatus 'ok installed' -n -s Package } } || { _comp_dpkg_installed_packages() { command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null | command grep -B 1 -Ee "ok installed|half-installed|unpacked| \ half-configured" \ -Ee "^Essential: yes" | awk "/Package: $1/ { print \$2 }" 2>/dev/null } } _have grep-status && { _comp_dpkg_purgeable_packages() { grep-status -P -e "^$1" -a -FStatus 'ok installed' -o -FStatus 'ok config-files' -n -s Package } } || { _comp_dpkg_purgeable_packages() { command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null | command grep -B 1 -Ee "ok installed|half-installed|unpacked| \ half-configured|config-files" \ -Ee "^Essential: yes" | awk "/Package: $1/ { print \$2 }" 2>/dev/null } } # Debian dpkg(1) completion # _dpkg() { local cur prev words cword split _init_completion -s || return local i=$cword # find the last option flag if [[ $cur != -* ]]; then while [[ $prev != -* && $i -ne 1 ]]; do prev=${words[--i - 1]} done fi case $prev in --install | --unpack | --record-avail | --contents | --info | --fsys-tarfile | \ --field | --control | --extract | --vextract | --raw-extract | -!(-*)[ciAIfexX]) _filedir '?(u|d)deb' return ;; --build | -!(-*)b) _filedir -d return ;; --status | --print-avail | --list | -!(-*)[spl]) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) return ;; --show | -!(-*)W) if [[ $1 == *dpkg-query ]]; then COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) else _filedir '?(u|d)deb' fi return ;; --search | -!(-*)S) _filedir return ;; --remove | --verify | -!(-*)[rV]) COMPREPLY=($(_comp_dpkg_installed_packages "$cur")) return ;; --listfiles | --purge | -!(-*)[LP]) COMPREPLY=($(_comp_dpkg_purgeable_packages "$cur")) return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _dpkg dpkg dpkg-deb dpkg-query # Debian GNU dpkg-reconfigure(8) completion # _dpkg_reconfigure() { local cur prev words cword _init_completion || return local opt case $prev in --frontend | -!(-*)f) opt=($(printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/*)) opt=(${opt[@]##*/}) opt=(${opt[@]%.pm}) COMPREPLY=($(compgen -W '${opt[@]}' -- "$cur")) return ;; --priority | -!(-*)p) COMPREPLY=($(compgen -W 'low medium high critical' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--frontend --priority --all --unseen-only --help --showold --force --terse' -- "$cur")) else COMPREPLY=($(_comp_dpkg_installed_packages "$cur")) fi } && complete -F _dpkg_reconfigure -o default dpkg-reconfigure # ex: filetype=sh bash-completion-2.11/completions/dpkg-source000066400000000000000000000063241370676621500212450ustar00rootroot00000000000000# Debian dpkg-source completion -*- shell-script -*- _dpkg_source() { local cur prev words cword _init_completion || return local options word action packopts unpackopts fields packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sr -ss -sA -sK -sP \ -sU -sR" unpackopts="-sp -sn -su" options="-x -b --print-format --before-build --after-build --commit $packopts $unpackopts" fields="Format Source Version Binary Maintainer Uploader Architecture \ Standards-Version Build-Depends Files" action=options for word in "${words[@]:1}"; do if [[ $word == -x ]]; then action=unpack elif [[ $word == -b ]]; then action=pack elif [[ $word == -h ]]; then action=help fi done case $action in unpack) case $prev in -x) _filedir -d _filedir 'dsc' ;; *) COMPREPLY=($(compgen -W "$unpackopts" -- "$cur")) _filedir -d _filedir ;; esac return ;; pack) case $prev in -b) _filedir -d ;; -c | -l | -T | -i | -I) # -c: get controlfile # -l: get per-version info from this file # -T: read variables here, not debian/substvars # -i: filter out files to ignore diffs of. # -I: filter out files when building tarballs. # return directory names and file names _filedir -d _filedir ;; -F) # -F: force change log format COMPREPLY=($(command ls /usr/lib/dpkg/parsechangelog)) ;; -V) # -V: set a substitution variable # we don't know anything about possible variables or values # so we don't try to suggest any completion. COMPREPLY=() ;; -D) # -D: override or add a .dsc field and value # if $cur doesn't contain a = yet, suggest variable names if [[ $cur == *=* ]]; then # $cur contains a "=" COMPREPLY=() else COMPREPLY=($(compgen -W "$fields" -- "$cur")) fi ;; -U) # -U: remove a field # Suggest possible fieldnames COMPREPLY=($(compgen -W "$fields" -- "$cur")) ;; *) COMPREPLY=($(compgen -W "$packopts $unpackopts" \ -- "$cur")) ;; esac return ;; *) COMPREPLY=($(compgen -W "$options" -- "$cur")) return ;; esac } && complete -F _dpkg_source dpkg-source # ex: filetype=sh bash-completion-2.11/completions/dselect000066400000000000000000000011471370676621500204430ustar00rootroot00000000000000# Debian Linux dselect(8) completion -*- shell-script -*- _dselect() { local cur prev words cword _init_completion || return case $prev in --admindir) _filedir -d return ;; -D | -debug) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else COMPREPLY=($(compgen -W 'access update select install config remove quit' -- "$cur")) fi } && complete -F _dselect dselect # ex: filetype=sh bash-completion-2.11/completions/dsniff000066400000000000000000000010061370676621500202630ustar00rootroot00000000000000# dsniff completion -*- shell-script -*- _dsniff() { local cur prev words cword _init_completion || return case $prev in -r | -w | -f | -p) _filedir return ;; -i) _available_interfaces -a return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1") -r -w -p' -- "$cur")) fi } && complete -F _dsniff dsniff # ex: filetype=sh bash-completion-2.11/completions/dumpdb000066400000000000000000000005631370676621500202740ustar00rootroot00000000000000# mailman dumpdb completion -*- shell-script -*- _dumpdb() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--marshal --pickle --noprint --help' \ -- "$cur")) else _filedir fi } && complete -F _dumpdb dumpdb # ex: filetype=sh bash-completion-2.11/completions/dumpe2fs000066400000000000000000000010061370676621500205370ustar00rootroot00000000000000# dumpe2fs(8) completion -*- shell-script -*- _dumpe2fs() { local cur prev words cword _init_completion || return case $prev in -*[oV]) return ;; -*i) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) return fi cur=${cur:=/dev/} _filedir } && complete -F _dumpe2fs dumpe2fs # ex: filetype=sh bash-completion-2.11/completions/e2freefrag000066400000000000000000000007141370676621500210270ustar00rootroot00000000000000# e2freefrag(8) completion -*- shell-script -*- _e2freefrag() { local cur prev words cword _init_completion || return case $prev in -c | -h) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" -h)' -- "$cur")) return fi cur=${cur:=/dev/} _filedir } && complete -F _e2freefrag e2freefrag # ex: filetype=sh bash-completion-2.11/completions/e2label000066400000000000000000000004441370676621500203250ustar00rootroot00000000000000# e2label(8) completion -*- shell-script -*- _e2label() { local cur prev words cword _init_completion || return if ((cword == 1)); then cur=${cur:=/dev/} _filedir fi } && complete -F _e2label e2label # ex: filetype=sh bash-completion-2.11/completions/ebtables000066400000000000000000000071541370676621500206050ustar00rootroot00000000000000# bash completion for ebtables -*- shell-script -*- _ebtables() { local cur prev words cword split _init_completion -s || return local table chain='s/^Bridge chain: \([^ ,]\{1,\}\).*$/\1/p' \ targets='ACCEPT DROP CONTINUE RETURN' [[ ${words[*]} =~ [[:space:]]-(t|-table=?)[[:space:]]*([^[:space:]]+) ]] && table="-t ${BASH_REMATCH[2]}" case $prev in -!(-*)[AIDPFXLZ]) COMPREPLY=($(compgen -W '`"$1" $table -L 2>/dev/null | \ command sed -ne "$chain"`' -- "$cur")) ;; -!(-*)t) COMPREPLY=($(compgen -W 'nat filter broute' -- "$cur")) ;; -!(-*)j) if [[ $table == "-t filter" || -z $table ]]; then COMPREPLY=($(compgen -W '$targets $("$1" $table -L 2>/dev/null | \ command sed -n -e "s/INPUT\|OUTPUT\|FORWARD//" \ -e "$chain")' \ -- "$cur")) elif [[ $table == "-t nat" ]]; then COMPREPLY=($(compgen -W '$targets $("$1" $table -L 2>/dev/null | \ command sed -n -e "s/OUTPUT|PREROUTING|POSTROUTING//" \ -e "$chain")' \ -- "$cur")) elif [[ $table == "-t broute" ]]; then COMPREPLY=($(compgen -W 'ACCEPT DROP $("$1" $table -L 2>/dev/null | \ command sed -n -e "s/BROUTING//" -e "$chain")' \ -- "$cur")) fi ;; *) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--802_3-sap --802_3-type --among-dst --among-dst-file --among-src --among-src-file --append --arp-gratuitous --arp-htype --arp-ip-dst --arp-ip-src --arp-mac-dst --arp-mac-src --arp-opcode --arp-ptype --arpreply-mac --arpreply-target --atomic-commit --atomic-file --atomic-init --atomic-save --change-counters --concurrent --delete --delete-chain --destination --dnat-target --dst --flush --help --in-if --in-interface --init-table --insert --ip6-destination --ip6-destination-port --ip6-dport --ip6-dst --ip6-icmp-type --ip6-prococol --ip6-proto --ip6-protocol --ip6-source --ip6-source-port --ip6-sport --ip6-src --ip6-tclass --ip-destination --ip-destination-port --ip-dport --ip-dst --ip-proto --ip-protocol --ip-source --ip-source-port --ip-sport --ip-src --ip-tos --jump --Lc --limit --limit-burst --list --Lmac2 --Ln --log --log-arp --logical-in --logical-out --log-ip --log-ip6 --log-level --log-prefix --Lx --mark --mark-and --mark-or --mark-set --mark-target --mark-xor --modprobe --new-chain --nflog --nflog-group --nflog-prefix --nflog-range --nflog-threshold --out-if --out-interface --pkttype-type --policy --proto --protocol --redirect-target --rename-chain --set-counter --snat-arp --snat-target --source --src --stp-flags --stp-forward-delay --stp-hello-time --stp-max-age --stp-msg-age --stp-port --stp-root-addr --stp-root-cost --stp-root-prio --stp-sender-addr --stp-sender-prio --stp-type --table --to-destination --to-dst --to-source --to-src --ulog --ulog-cprange --ulog-nlgroup --ulog-prefix --ulog-qthreshold --version --vlan-encap --vlan-id --vlan-prio --zero' -- "$cur")) fi ;; esac } && complete -F _ebtables ebtables # ex: filetype=sh bash-completion-2.11/completions/ecryptfs-migrate-home000066400000000000000000000007631370676621500232360ustar00rootroot00000000000000# ecryptfs-migrate-home(8) completion -*- shell-script -*- _ecryptfs_migrate_home() { local cur prev words cword _init_completion || return case $prev in --help) return ;; --user | -u) COMPREPLY=($(compgen -u -- "$cur")) return ;; esac COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _ecryptfs_migrate_home ecryptfs-migrate-home # ex: filetype=sh bash-completion-2.11/completions/eog000066400000000000000000000012051370676621500175650ustar00rootroot00000000000000# eog(1) completion -*- shell-script -*- _eog() { local cur prev words cword split _init_completion -s || return case $prev in -'?' | --help | --help-all | --help-gtk) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help-all)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir '@(ani|?(w)bmp|gif|ico|j2[ck]|jp[cefgx2]|jpeg|jpg2|pcx|p[gp]m|pn[gm]|ras|svg?(z)|tga|tif?(f)|x[bp]m)' } && complete -F _eog eog # ex: filetype=sh bash-completion-2.11/completions/ether-wake000066400000000000000000000010331370676621500210460ustar00rootroot00000000000000# ether-wake(8) completion -*- shell-script -*- _ether_wake() { local cur prev words cword _init_completion -n : || return case $prev in -i) _available_interfaces -a return ;; -p) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -u) -V' -- "$cur")) return fi _mac_addresses } && complete -F _ether_wake ether-wake etherwake # ex: filetype=sh bash-completion-2.11/completions/evince000066400000000000000000000017201370676621500202660ustar00rootroot00000000000000# evince(1) completion -*- shell-script -*- _evince() { local cur prev words cword split _init_completion -s || return case $prev in --help* | --sm-client-id | --class | --name | --screen | --gdk-debug | \ --gdk-no-debug | --gtk-module | --gtk-debug | --gtk-no-debug | --page-label | \ --page-index | --find | --display | -!(-*)[hpil]) return ;; --sm-client-state-file) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help-all)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir '@(@(?(e)ps|?(E)PS|[pf]df|[PF]DF|dvi|DVI)?(.gz|.GZ|.bz2|.BZ2|.xz|.XZ)|cb[rz]|djv?(u)|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)' } && complete -F _evince evince # ex: filetype=sh bash-completion-2.11/completions/explodepkg000066400000000000000000000002301370676621500211520ustar00rootroot00000000000000# Slackware Linux explodepkg completion -*- shell-script -*- complete -o plusdirs -f -X '!*.t[bglx]z' explodepkg # ex: filetype=sh bash-completion-2.11/completions/export000066400000000000000000000031071370676621500203370ustar00rootroot00000000000000# bash export completion -*- shell-script -*- _export() { local cur prev words cword _init_completion -n = || return local i action=variable remove=false for ((i = 1; i < cword; i++)); do case ${words[i]} in -p) return ;; -*f*) action=function ;;& -*n*) remove=true ;; -*) continue ;; esac break done if [[ $cur == *=* ]]; then local ocur=$cur oprev=$prev prev=${cur%%=*} cur=${cur#*=} _variables && return cur=$ocur prev=$oprev fi case $cur in *=) local pval=$(quote "$(eval printf %s \"\$\{${cur%=}-\}\")") # Complete previous value if it's not empty. if [[ $pval != \'\' ]]; then COMPREPLY=("$pval") else cur=${cur#*=} _filedir fi ;; *=*) cur=${cur#*=} _filedir ;; *) if [[ $cword -eq 1 && $cur == -* ]]; then COMPREPLY=($(compgen -W '-p $(_parse_usage "$1")' -- "$cur")) return fi local suffix="" if ! $remove; then suffix="=" compopt -o nospace fi COMPREPLY=($(compgen -A $action -S "$suffix" -- "$cur")) ;; esac } && complete -F _export export # ex: filetype=sh bash-completion-2.11/completions/faillog000066400000000000000000000012001370676621500204230ustar00rootroot00000000000000# faillog(8) completion -*- shell-script -*- _faillog() { local cur prev words cword split _init_completion -s || return case $prev in --help | --lock-time | --maximum | --time | -!(-*)[hlmt]) return ;; --user | -!(-*)u) COMPREPLY=($(compgen -u -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _faillog faillog # ex: filetype=sh bash-completion-2.11/completions/fbgs000066400000000000000000000030671370676621500177440ustar00rootroot00000000000000# bash completion for fbgs(1) -*- shell-script -*- _fbgs() { local cur prev words cword _init_completion || return case "$prev" in -f | --font) local IFS=$'\n' COMPREPLY=($(compgen -W '$(fc-list 2>/dev/null)' -- "$cur")) return ;; -m | --mode) COMPREPLY=($(compgen -W '$(command sed \ -n "/^mode/{s/^mode \{1,\}\"\([^\"]\{1,\}\)\"/\1/g;p}" \ /etc/fb.modes 2>/dev/null)' -- "$cur")) return ;; -d | --device) COMPREPLY=($(compgen -f -d -- "${cur:-/dev/}")) return ;; -fp | --firstpage | -lp | --lastpage | -r | --resolution | -s | --scroll | -t | \ --timeout) # expect integer value COMPREPLY+=($(compgen -W '{0..9}')) compopt -o nospace return ;; -T | --vt | -p | --password | -g | --gamma) # argument required but no completions available return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--bell --help --password -fp --firstpage -lp --lastpage --color -l -xl -xxl --resolution --autozoom --{,no}autoup --{,no}autodown --{,no}fitwidth --{,no}verbose --{,no}random --vt --scroll --timeout --{,no}once --gamma --font --device --mode' -- "$cur")) [[ ${COMPREPLY-} ]] && return fi _filedir '?(e)ps|pdf' } && complete -F _fbgs fbgs # ex: filetype=sh bash-completion-2.11/completions/fbi000066400000000000000000000034541370676621500175630ustar00rootroot00000000000000# bash completion for fbi(1) -*- shell-script -*- _fbi() { local cur prev words cword _init_completion || return case "$prev" in -l | --list) _filedir return ;; -r | --resolution) COMPREPLY+=($(compgen -W '{1..5}')) return ;; -f | --font) local IFS=$'\n' COMPREPLY=($(compgen -W '$(fc-list 2>/dev/null)' -- "$cur")) return ;; -m | --mode) COMPREPLY=($(compgen -W '$(command sed \ -n "/^mode/{s/^mode \{1,\}\"\([^\"]\{1,\}\)\"/\1/g;p}" \ /etc/fb.modes 2>/dev/null)' -- "$cur")) return ;; -d | --device) COMPREPLY=($(compgen -f -d -- "${cur:-/dev/}")) return ;; --cachemem | --blend | -T | --vt | -s | --scroll | -t | --timeout | -g | --gamma) # argument required but no completions available return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --version --store --list --text --autozoom --{,no}autoup --{,no}autodown --{,no}fitwidth --{,no}verbose --{,no}random --{,no}comments --{,no}edit --{,no}backup --{,no}preserve --{,no}readahead --cachemem --blend --vt --scroll --timeout --{,no}once --resolution --gamma --font --device --mode' -- "$cur")) [[ ${COMPREPLY-} ]] && return fi # FIXME: It is hard to determine correct supported extensions. # fbi can handle any format that imagemagick can plus some others _filedir 'bmp|gif|jp?(e)g|pcd|png|p[pgb]m|tif?(f)|webp|xpm|xwd|?(e)ps|pdf|dvi|txt|svg?(z)|cdr|[ot]tf' } && complete -F _fbi fbi # ex: filetype=sh bash-completion-2.11/completions/feh000066400000000000000000000103121370676621500175540ustar00rootroot00000000000000# bash completion for feh(1) -*- shell-script -*- _feh() { local cur prev words cword split _init_completion -s || return case "$prev" in --image-bg | -B) COMPREPLY=($(compgen -W 'checks white black' -- "$cur")) return ;; --filelist | --output | --output-only | --start-at | -!(-*)[foO\|]) _filedir return ;; --caption-path | --fontpath | --output-dir | -!(-*)[KCj]) _filedir -d return ;; --font | --menu-font | --title-font | -!(-*)[eM@]) # expect string like "dejavu.ttf/12" if [[ $cur == */* ]]; then # expect integer value COMPREPLY=($(compgen -P "$cur" -W '{0..9}')) compopt -o nospace return fi local font_path # font_path="$(imlib2-config --prefix 2>/dev/null)/share/imlib2/data/fonts" # COMPREPLY=( $(cd "$font_path" 2>/dev/null; compgen -f \ # -X "!*.@([tT][tT][fF])" -S / -- "$cur") ) for ((i = ${#words[@]} - 1; i > 0; i--)); do if [[ ${words[i]} == -@(C|-fontpath) ]]; then font_path="${words[i + 1]}" COMPREPLY+=($( cd "$font_path" 2>/dev/null compgen -f \ -X "!*.@([tT][tT][fF])" -S / -- "$cur" )) fi done compopt -o nospace return ;; --theme | -!(-*)T) local conf_path=~/.config/feh/themes local theme_name theme_opts [[ -r $conf_path ]] || return while read theme_name theme_opts; do if [[ $theme_name == '#'* || $theme_name == "" ]]; then continue fi COMPREPLY+=($(compgen -W "$theme_name" -- "$cur")) done <"$conf_path" return ;; --sort | -!(-*)S) COMPREPLY=($(compgen -W 'name filename mtime width height pixels size format' -- "$cur")) return ;; --reload | --limit-height | --limit-width | --thumb-height | --thumb-width | \ --thumb-redraw | --magick-timeout | -!(-*)[RHWEyJ]) # expect integer value COMPREPLY+=($(compgen -W '{0..9}')) compopt -o nospace return ;; --zoom) # expect integer value or "max", "fill" COMPREPLY=($(compgen -W 'max fill' -- "$cur")) if [[ ! $cur || ! ${COMPREPLY-} ]]; then COMPREPLY+=($(compgen -W '{0..9}')) compopt -o nospace fi return ;; --alpha | -!(-*)a) COMPREPLY=($(compgen -W '{0..255}' -- "$cur")) return ;; --bg | -!(-*)b) _filedir COMPREPLY+=($(compgen -W 'trans' -- "$cur")) return ;; --geometry | --max-dimension | --min-dimension | -!(-*)g) # expect string like 640x480 if [[ $cur && $cur != *x* ]]; then COMPREPLY=(x) fi COMPREPLY+=($(compgen -W "{0..9}")) compopt -o nospace return ;; --customlist | --index-info | --info | --slideshow-delay | --thumb-title | \ --title | -!(-*)[LD~^]) # argument required but no completions available return ;; esac $split && return if [[ $cur == -* ]]; then # Some versions of feh just output "See 'man feh'" for --help :( COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) if [[ ${COMPREPLY-} ]]; then [[ $COMPREPLY == *= ]] && compopt -o nospace return fi fi # FIXME: It is hard to determine correct supported extensions. # feh can handle any format that imagemagick can plus some others _filedir 'xpm|tif?(f)|png|p[npgba]m|iff|?(i)lbm|jp?(e)g|jfi?(f)|gif|bmp|arg?(b)|tga|xcf|ani|ico|?(e)ps|pdf|dvi|txt|svg?(z)|cdr|[ot]tf' } && complete -F _feh feh # ex: filetype=sh bash-completion-2.11/completions/file000066400000000000000000000013631370676621500177370ustar00rootroot00000000000000# file(1) completion -*- shell-script -*- _file() { local cur prev words cword _init_completion || return case $prev in --help | --version | --separator | -!(-*)[vF]) return ;; --magic-file | --files-from | -!(-*)[mf]) _filedir return ;; --exclude | -!(-*)e) COMPREPLY=($(compgen -W 'apptype ascii cdf compress elf encoding soft tar text tokens troff' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _filedir } && complete -F _file file # ex: filetype=sh bash-completion-2.11/completions/file-roller000066400000000000000000000021261370676621500212320ustar00rootroot00000000000000# file-roller(1) completion -*- shell-script -*- _file_roller() { local cur prev words cword split _init_completion -s || return local exts='@(7z|ace|alz|ar|arj|[bglx]z|bz2|tb?(z)2|cab|cb[rz]|iso?(9660)|Z|t[abglx]z|cpio|deb|rar|?(g)tar|gem|lh[az]|lz[4h]|?(t)lrz|lzma|lzo|wim|swm|rpm|sit|zoo)' case $prev in --help | --help-all | --help-gtk | --help-sm-client | -!(-*)'?') return ;; --sm-client-state-file) _filedir return ;; --add-to | -!(-*)a) _filedir_xspec unzip _filedir "$exts" return ;; --extract-to | --default-dir | -!(-*)e) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help-all)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir_xspec unzip _filedir "$exts" } && complete -F _file_roller file-roller # ex: filetype=sh bash-completion-2.11/completions/filefrag000066400000000000000000000005361370676621500206000ustar00rootroot00000000000000# filefrag(8) completion -*- shell-script -*- _filefrag() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) return fi _filedir } && complete -F _filefrag filefrag # ex: filetype=sh bash-completion-2.11/completions/filesnarf000066400000000000000000000006771370676621500210000ustar00rootroot00000000000000# filesnarf etc completion -*- shell-script -*- _snarf() { local cur prev words cword _init_completion || return case $prev in -i) _available_interfaces -a return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) fi } && complete -F _snarf filesnarf mailsnarf msgsnarf # ex: filetype=sh bash-completion-2.11/completions/find000066400000000000000000000074721370676621500177470ustar00rootroot00000000000000# bash completion for GNU find -*- shell-script -*- # This makes heavy use of ksh style extended globs and contains Linux specific # code for completing the parameter to the -fstype option. _find() { local cur prev words cword _init_completion || return local i for i in ${!words[*]}; do if [[ ${words[i]} == -@(exec|ok)?(dir) ]]; then _command_offset $((i + 1)) return fi done case $prev in -maxdepth | -mindepth) COMPREPLY=($(compgen -W '{0..9}' -- "$cur")) return ;; -newer | -anewer | -cnewer | -fls | -fprint | -fprint0 | -fprintf | -name | -[il]name | \ -ilname | -wholename | -[il]wholename | -samefile) _filedir return ;; -fstype) _fstypes [[ $OSTYPE == *bsd* ]] && COMPREPLY+=($(compgen -W 'local rdonly' -- "$cur")) return ;; -gid) _gids return ;; -group) COMPREPLY=($(compgen -g -- "$cur" 2>/dev/null)) return ;; -xtype | -type) COMPREPLY=($(compgen -W 'b c d p f l s' -- "$cur")) return ;; -uid) _uids return ;; -user) COMPREPLY=($(compgen -u -- "$cur")) return ;; -[acm]min | -[acm]time | -inum | -path | -ipath | -regex | -iregex | -links | -perm | \ -size | -used | -printf | -context) # do nothing, just wait for a parameter to be given return ;; -regextype) COMPREPLY=($(compgen -W 'emacs posix-awk posix-basic posix-egrep posix-extended' -- "$cur")) return ;; esac local i exprfound=false # set exprfound to true if there is already an expression present for i in "${words[@]}"; do [[ $i == [-\(\),\!]* ]] && exprfound=true && break done # handle case where first parameter is not a dash option if ! $exprfound && [[ $cur != [-\(\),\!]* ]]; then _filedir -d return fi # complete using basic options COMPREPLY=($(compgen -W '-daystart -depth -follow -help -ignore_readdir_race -maxdepth -mindepth -mindepth -mount -noignore_readdir_race -noleaf -regextype -version -warn -nowarn -xdev -amin -anewer -atime -cmin -cnewer -ctime -empty -executable -false -fstype -gid -group -ilname -iname -inum -ipath -iregex -iwholename -links -lname -mmin -mtime -name -newer -nogroup -nouser -path -perm -readable -regex -samefile -size -true -type -uid -used -user -wholename -writable -xtype -context -delete -exec -execdir -fls -fprint -fprint0 -fprintf -ls -ok -okdir -print -print0 -printf -prune -quit' -- "$cur")) if ((${#COMPREPLY[@]} != 0)); then # this removes any options from the list of completions that have # already been specified somewhere on the command line, as long as # these options can only be used once (in a word, "options", in # opposition to "tests" and "actions", as in the find(1) manpage). local -A onlyonce=([-daystart]=1 [-depth]=1 [-follow]=1 [-help]=1 [-ignore_readdir_race]=1 [-maxdepth]=1 [-mindepth]=1 [-mount]=1 [-noignore_readdir_race]=1 [-noleaf]=1 [-nowarn]=1 [-regextype]=1 [-version]=1 [-warn]=1 [-xdev]=1) local j for i in "${words[@]}"; do [[ $i && -v onlyonce["$i"] ]] || continue for j in "${!COMPREPLY[@]}"; do [[ ${COMPREPLY[j]} == "$i" ]] && unset 'COMPREPLY[j]' done done fi _filedir } && complete -F _find find # ex: filetype=sh bash-completion-2.11/completions/find_member000066400000000000000000000010351370676621500212630ustar00rootroot00000000000000# mailman find_member completion -*- shell-script -*- _find_member() { local cur prev words cword split _init_completion -s || return case $prev in -l | -x | --listname | --exclude) _xfunc list_lists _mailman_lists return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--listname --exclude --owners --help' \ -- "$cur")) fi } && complete -F _find_member find_member # ex: filetype=sh bash-completion-2.11/completions/fio000066400000000000000000000045021370676621500175730ustar00rootroot00000000000000# fio(1) completion -*- shell-script -*- _fio() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version) return ;; --debug) local prefix= [[ $cur == *,* ]] && prefix="${cur%,*}," COMPREPLY=($(compgen -W "process file io mem blktrace verify random parse diskutil job mutex profile time net rate compress steadystate helperthread" -- "${cur##*,}")) ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix}) return ;; --output-format) COMPREPLY=($(compgen -W "terse json json+ normal" -- "$cur")) return ;; --terse-version) COMPREPLY=($(compgen -W "2 3" -- "$cur")) return ;; --cmdhelp) # TODO more commands? COMPREPLY=($(compgen -W "all" -- "$cur")) return ;; --enghelp) # TODO print ioengine help, or list available ioengines # TODO engine,help arg return ;; --eta) COMPREPLY=($(compgen -W "always never auto" -- "$cur")) return ;; --daemonize) _filedir pid return ;; --client) _known_hosts_real -- "$cur" return ;; --remote-config) _filedir job return ;; --idle-prof) COMPREPLY=($(compgen -W "system percpu calibrate" -- "$cur")) return ;; --inflate-log) _filedir log return ;; --trigger-file) _filedir return ;; --trigger | --trigger-remote) compopt -o filenames COMPREPLY=($(compgen -c -- "$cur")) return ;; --aux-path) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir job } && complete -F _fio fio # ex: filetype=sh bash-completion-2.11/completions/firefox000066400000000000000000000022701370676621500204600ustar00rootroot00000000000000# firefox completion -*- shell-script -*- _firefox() { local cur prev words cword split _init_completion -s || return [[ $cur == -MOZ_LOG*=* ]] && prev=${cur%%=*} cur=${cur#*=} case $prev in --help | --version | --display | --UILocale | -MOZ_LOG | --new-window | --new-tab | \ --private-window | --window-size | --search | --start-debugger-server | \ --recording | --debugger-args | -[hvPa]) return ;; --profile | --screenshot) _filedir -d return ;; -MOZ_LOG_FILE) _filedir log return ;; --recording-file) _filedir return ;; --debugger | -d) COMPREPLY=($(compgen -c -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir "@(?([xs])htm?(l)|pdf|txt)" } && complete -F _firefox firefox mozilla-firefox iceweasel # ex: filetype=sh bash-completion-2.11/completions/flake8000066400000000000000000000017501370676621500201720ustar00rootroot00000000000000# flake8 completion -*- shell-script -*- _flake8() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | -!(-*)h) return ;; --format) COMPREPLY=($(compgen -W 'default pylint' -- "$cur")) return ;; --jobs | -!(-*)j) COMPREPLY=($(compgen -W "auto {1..$(_ncpus)}" -- "$cur")) return ;; --output-file | --append-config | --config) _filedir return ;; --include-in-doctest | --exclude-from-doctest) _filedir py return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir py } && complete -F _flake8 flake8 # ex: filetype=sh bash-completion-2.11/completions/freebsd-update000066400000000000000000000011241370676621500217050ustar00rootroot00000000000000# bash completion for FreeBSD update tool - freebsd-update -*- shell-script -*- [[ $OSTYPE == *freebsd* ]] || return 1 _freebsd_update() { local cur prev words cword _init_completion || return case $prev in -b | -d) _filedir -d return ;; -f) _filedir return ;; -k | -r | -s | -t) return ;; esac COMPREPLY=($(compgen -W "fetch cron upgrade install rollback IDS" -- \ $cur)) } && complete -F _freebsd_update freebsd-update # ex: filetype=sh bash-completion-2.11/completions/freeciv000066400000000000000000000020501370676621500204350ustar00rootroot00000000000000# freeciv client completions -*- shell-script -*- _freeciv() { local cur prev words cword _init_completion || return case $prev in --help | --version | --name | --port | -[hvnp]) return ;; --file | --log | --music | --read | --Sound | --tiles | -[flmrSt]) _filedir return ;; --Announce | -A) COMPREPLY=($(compgen -W 'IPv4 IPv6 none' -- "$cur")) return ;; --debug | -d) COMPREPLY=($(compgen -W '{0..3}' -- "$cur")) return ;; --Meta | --server | -[Ms]) _known_hosts_real -- "$cur" return ;; --Plugin | -P) COMPREPLY=($(compgen -W 'none esd sdl' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _freeciv freeciv{,-{gtk{2,3},sdl,xaw}} civclient # ex: filetype=sh bash-completion-2.11/completions/freeciv-server000066400000000000000000000007471370676621500217540ustar00rootroot00000000000000# freeciv-server completion -*- shell-script -*- _civserver() { local cur prev words cword _init_completion || return case $prev in -f | -g | -l | -r | --file | --log | --gamelog | --read) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _civserver civserver freeciv-server # ex: filetype=sh bash-completion-2.11/completions/function000066400000000000000000000023611370676621500206440ustar00rootroot00000000000000# bash shell function completion -*- shell-script -*- _function() { local cur prev words cword _init_completion || return if [[ $1 == @(declare|typeset) ]]; then if [[ $cur == [-+]* ]]; then local opts opts=($(_parse_usage "$1")) # Most options also have a '+' form. We'll exclude the ones that don't with compgen. opts+=(${opts[*]/-/+}) COMPREPLY=($(compgen -W "${opts[*]}" -X '+[Ffgp]' -- "$cur")) else local i=1 while [[ ${words[i]} == [-+]* ]]; do if [[ ${words[i]} == -*[fF]* ]]; then COMPREPLY=($(compgen -A function -- "$cur")) return fi ((i++)) done if ((i > 1)); then # There was at least one option and it was not one that limited operations to functions COMPREPLY=($(compgen -A variable -- "$cur")) fi fi elif ((cword == 1)); then COMPREPLY=($(compgen -A function -- "$cur")) else COMPREPLY=("() $(type -- ${words[1]} | command sed -e 1,2d)") fi } && complete -F _function function declare typeset # ex: filetype=sh bash-completion-2.11/completions/fusermount000066400000000000000000000011761370676621500212310ustar00rootroot00000000000000# fusermount completion -*- shell-script -*- _fusermount() { local cur prev words cword _init_completion || return case $prev in -*[hVo]) return ;; -*u) COMPREPLY=($(compgen -W "$(awk \ '{ if ($3 ~ /^fuse(\.|$)/) print $2 }' /etc/mtab \ 2>/dev/null)" -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) else _filedir -d fi } && complete -F _fusermount fusermount # ex: filetype=sh bash-completion-2.11/completions/gcc000066400000000000000000000051631370676621500175560ustar00rootroot00000000000000# gcc(1) completion -*- shell-script -*- _gcc() { local cur prev prev2 words cword argument prefix prefix_length _init_completion || return # Test that GCC is recent enough and if not fallback to # parsing of --completion option. if ! $1 --completion=" " 2>/dev/null; then if [[ $cur == -* ]]; then local cc=$($1 -print-prog-name=cc1 2>/dev/null) [[ $cc ]] || return COMPREPLY=($(compgen -W "$($cc --help 2>/dev/null | tr '\t' ' ' | command sed -e '/^ *-/!d' -e 's/ *-\([^][ <>]*\).*/-\1/')" \ -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else _filedir fi return fi # extract also for situations like: -fsanitize=add if ((cword > 2)); then prev2="${COMP_WORDS[cword - 2]}" fi # sample: -fsan if [[ $cur == -* ]]; then argument=$cur prefix="" # sample: -fsanitize= elif [[ $cur == "=" && $prev == -* ]]; then argument=$prev$cur prefix=$prev$cur # sample: -fsanitize=add elif [[ $prev == "=" && $prev2 == -* ]]; then argument=$prev2$prev$cur prefix=$prev2$prev # sample: --param lto- elif [[ $prev == --param ]]; then argument="$prev $cur" prefix="$prev " fi if [[ ! -v argument ]]; then _filedir else # In situation like '-fsanitize=add' $cur is equal to last token. # Thus we need to strip the beginning of suggested option. prefix_length=$((${#prefix} + 1)) local flags=$($1 --completion="$argument" | cut -c $prefix_length-) [[ ${flags} == "=*" ]] && compopt -o nospace 2>/dev/null COMPREPLY=($(compgen -W "$flags" -- "")) fi } && complete -F _gcc gcc{,-5,-6,-7,-8} g++{,-5,-6,-7,-8} g77 g95 \ gccgo{,-5,-6,-7,-8} gcj gfortran{,-5,-6,-7,-8} gpc && { cc --version 2>/dev/null | command grep -q GCC || [[ $(_realcommand cc) == *gcc* ]] && complete -F _gcc cc || complete -F _minimal cc c++ --version 2>/dev/null | command grep -q GCC || [[ $(_realcommand c++) == *g++* ]] && complete -F _gcc c++ || complete -F _minimal c++ f77 --version 2>/dev/null | command grep -q GCC || [[ $(_realcommand f77) == *gfortran* ]] && complete -F _gcc f77 || complete -F _minimal f77 f95 --version 2>/dev/null | command grep -q GCC || [[ $(_realcommand f95) == *gfortran* ]] && complete -F _gcc f95 || complete -F _minimal f95 } # ex: filetype=sh bash-completion-2.11/completions/gcl000066400000000000000000000011471370676621500175650ustar00rootroot00000000000000# -*- shell-script -*- # bash programmable completion for various Common Lisp implementations by # Nikodemus Siivola _gcl() { local cur prev words cword _init_completion || return # completing an option (may or may not be separated by a space) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-eval -load -f -batch -dir -libdir -compile -o-file -c-file -h-file -data-file -system-p' -- "$cur")) else _filedir fi } && complete -F _gcl -o default gcl # ex: filetype=sh bash-completion-2.11/completions/gdb000066400000000000000000000031351370676621500175530ustar00rootroot00000000000000# bash completion for gdb -*- shell-script -*- _gdb() { local cur prev words cword i _init_completion || return # gdb [options] --args executable-file [inferior-arguments ...] for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == --args ]]; then _command_offset $((i + 1)) return $? fi done # gdb [options] [executable-file [core-file or process-id]] if ((cword == 1)); then local IFS compopt -o filenames if [[ $cur == */* ]]; then # compgen -c works as expected if $cur contains any slashes. IFS=$'\n' COMPREPLY=($(PATH="$PATH:." compgen -d -c -- "$cur")) else # otherwise compgen -c contains Bash's built-in commands, # functions and aliases. Thus we need to retrieve the program # names manually. IFS=":" local path_array=($( command sed -e 's/:\{2,\}/:/g' -e 's/^://' -e 's/:$//' <<<"$PATH" )) IFS=$'\n' COMPREPLY=($(compgen -d -W '$(find "${path_array[@]}" . \ -mindepth 1 -maxdepth 1 -not -type d -executable \ -printf "%f\\n" 2>/dev/null)' -- "$cur")) fi elif ((cword == 2)); then COMPREPLY=($(compgen -W "$(command ps axo comm,pid | awk '{if ($1 ~ /^'"${prev##*/}"'/) print $2}')" -- "$cur")) compopt -o filenames COMPREPLY+=($(compgen -f -X '!?(*/)core?(.?*)' -o plusdirs \ -- "$cur")) fi } && complete -F _gdb gdb # ex: filetype=sh bash-completion-2.11/completions/genaliases000066400000000000000000000005021370676621500211250ustar00rootroot00000000000000# mailman genaliases completion -*- shell-script -*- _genaliases() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--quiet --help' -- "$cur")) fi } && complete -F _genaliases genaliases # ex: filetype=sh bash-completion-2.11/completions/gendiff000066400000000000000000000004131370676621500204150ustar00rootroot00000000000000# gendiff(1) completion -*- shell-script -*- _gendiff() { local cur prev words cword _init_completion -o '@(diff|patch)' || return ((cword == 1)) && _filedir -d } && complete -F _gendiff gendiff # ex: filetype=sh bash-completion-2.11/completions/genisoimage000066400000000000000000000015561370676621500213130ustar00rootroot00000000000000# bash completion for mkisofs/genisoimage -*- shell-script -*- _mkisofs() { local cur prev words cword _init_completion || return case $prev in -o | -abstract | -biblio | -check-session | -copyright | -log-file | \ -root-info | -prep-boot | -*-list) _filedir return ;; -*-charset) COMPREPLY=($(compgen -W '$(mkisofs -input-charset \ help 2>&1 | tail -n +3)' -- "$cur")) return ;; -uid) _uids return ;; -gid) _gids return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) else _filedir fi } && complete -F _mkisofs mkisofs genisoimage # ex: filetype=sh bash-completion-2.11/completions/geoiplookup000066400000000000000000000012531370676621500213530ustar00rootroot00000000000000# geoiplookup(1) completion -*- shell-script -*- _geoiplookup() { local cur prev words cword _init_completion || return case $prev in -h | -'?' | -v) return ;; -d) _filedir -d return ;; -f) _filedir dat return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" -h)' -- "$cur")) return fi local ipvx [[ $1 == *6 ]] && ipvx=-6 || ipvx=-4 _known_hosts_real $ipvx -- "$cur" } && complete -F _geoiplookup geoiplookup geoiplookup6 # ex: filetype=sh bash-completion-2.11/completions/getconf000066400000000000000000000014331370676621500204430ustar00rootroot00000000000000# getconf(1) completion -*- shell-script -*- _getconf() { local cur prev words cword _init_completion || return case $prev in -a) _filedir return ;; -v) COMPREPLY=($(compgen -W \ '$("$1" -a 2>/dev/null | awk "{ print \$1 }")' -- \ "${cur:-POSIX_V}")) return ;; esac if [[ $prev == PATH_MAX ]]; then # TODO more path vars, better handling _filedir elif [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-a -v' -- "$cur")) else COMPREPLY=($(compgen -W \ '$("$1" -a 2>/dev/null | awk "{ print \$1 }")' -- "$cur")) fi } && complete -F _getconf getconf # ex: filetype=sh bash-completion-2.11/completions/getent000066400000000000000000000036611370676621500203110ustar00rootroot00000000000000# bash completion for getent -*- shell-script -*- _getent() { local cur prev words cword split _init_completion -s || return local i db for ((i = 1; i < cword; i++)); do case ${words[i]} in --version | --usage | --help | -!(-*)[V?]) return ;; --service | -!(-*)s) ((i++)) ;; -*) ;; *) # First non-option value is the db db=${words[i]} break ;; esac done case ${db-} in passwd) COMPREPLY=($(compgen -u -- "$cur")) return ;; group) COMPREPLY=($(compgen -g -- "$cur")) return ;; services) COMPREPLY=($(compgen -s -- "$cur")) return ;; hosts) COMPREPLY=($(compgen -A hostname -- "$cur")) return ;; protocols | networks | ahosts | ahostsv4 | ahostsv6 | rpc) COMPREPLY=($(compgen -W "$($1 $db | awk '{ print $1 }')" -- "$cur")) return ;; aliases | shadow | gshadow) COMPREPLY=($(compgen -W "$($1 $db | cut -d: -f1)" -- "$cur")) return ;; ethers | netgroup) return ;; esac case $prev in -s | --service) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace elif [[ ! -v db ]]; then COMPREPLY=($(compgen -W 'passwd group hosts services protocols networks ahosts ahostsv4 ahostsv6 aliases ethers netgroup rpc shadow gshadow' -- "$cur")) fi } && complete -F _getent getent # ex: filetype=sh bash-completion-2.11/completions/gkrellm000066400000000000000000000016611370676621500204560ustar00rootroot00000000000000# gkrellm(1) completion -*- shell-script -*- _gkrellm() { local cur prev words cword _init_completion || return case $prev in -t | --theme) _filedir -d return ;; -p | --plugin) _filedir so return ;; -s | --server) _known_hosts_real -- "$cur" return ;; -l | --logfile) _filedir return ;; -g | --geometry | -c | --config | -P | --port | -d | --debug-level) # Argument required but no completions available return ;; -h | --help | -v | --version) # All other options are noop with these return ;; esac COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _gkrellm gkrellm gkrellm2 # ex: filetype=sh bash-completion-2.11/completions/gm000066400000000000000000000015241370676621500174220ustar00rootroot00000000000000# bash completion for gm(1) -*- shell-script -*- _gm_commands() { COMPREPLY+=($(compgen -W '$("$1" help | awk "/^ +[^ ]+ +- / { print \$1 }")' -- "$cur")) } _gm() { local cur prev words cword _init_completion || return if ((cword == 1)); then _gm_commands "$1" return elif [[ $cword -eq 2 && ${words[1]} == time ]]; then _gm_commands "$1" return fi local gmcmd=${words[1]} [[ $gmcmd == time ]] && gmcmd=${words[2]} case $gmcmd in help) [[ $prev == help ]] && _gm_commands "$1" return ;; version) return ;; esac # TODO... defer some commnds to the imagemagick "gm"less completions etc? compopt -o default } && complete -F _gm gm # ex: filetype=sh bash-completion-2.11/completions/gnatmake000066400000000000000000000017671370676621500206170ustar00rootroot00000000000000# Gnatmake completion -*- shell-script -*- # by Ralf_Schroth@t-online.de (Ralf Schroth) _gnatmake() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then # relevant (and less relevant ;-) )options completion COMPREPLY=($(compgen -W '-a -c -f -i -j -k -m -M -n -o -q -s -v -z -aL -A -aO -aI -I -I- -L -nostdinc -nostdlib -cargs -bargs -largs -fstack-check -fno-inline -g -O1 -O0 -O2 -O3 -gnata -gnatA -gnatb -gnatc -gnatd -gnatD -gnate -gnatE -gnatf -gnatF -gnatg -gnatG -gnath -gnati -gnatk -gnatl -gnatL -gnatm -gnatn -gnato -gnatO -gnatp -gnatP -gnatq -gnatR -gnats -gnatt -gnatT -gnatu -gnatU -gnatv -gnatws -gnatwe -gnatwl -gnatwu -gnatW -gnatx -gnatX -gnaty -gnatz -gnatZ -gnat83' -- "$cur")) else # source file completion _filedir '@(adb|ads)' fi } && complete -F _gnatmake gnatmake # ex: filetype=sh bash-completion-2.11/completions/gnokii000066400000000000000000000156251370676621500203060ustar00rootroot00000000000000# gnokii(1) completion -*- shell-script -*- _gnokii_memory_type() { # TODO: reduce the number of choices COMPREPLY=($(compgen -W "IN OU SM ME MT" -- "$cur")) } _gnokii() { local cur prev words cword pprev tprev fprev _init_completion || return case $prev in --config) _filedir return ;; --phone) local config_file for config_file in "$XDG_CONFIG_HOME/gnokii/config" \ "$HOME/.config/gnokii/config" "$HOME/.gnokiirc" \ "$XDG_CONFIG_DIRS/gnokii/config" /etc/gnokiirc; do [[ -f $config_file ]] && break done [[ ! -f $config_file ]] && return COMPREPLY=($(compgen -W \ "$(command sed -n 's/^\[phone_\(.*\)\]/\1/p' $config_file)" \ -- "$cur")) return ;; --help) COMPREPLY=($(compgen -W 'all monitor sms mms phonebook calendar todo dial profile settings wap logo ringtone security file other' -- "$cur")) return ;; --version | --shell | ping) return ;; # MONITOR --monitor) COMPREPLY=($(compgen -W 'delay once' -- "$cur")) return ;; --getdisplaystatus | --displayoutput) return ;; --netmonitor) COMPREPLY=($(compgen -W 'reset off field devel next nr' \ -- "$cur")) return ;; # SMS --sendsms) # (how)TODO ? return ;; --savesms) COMPREPLY=($(compgen -W '--sender --smsc --smscno --folder --location --sent --read --deliver --datetime' -- "$cur")) return ;; --memory-type | --memory | --getsms | --deletesms | --getmms | --deletemms | \ --getphonebook | --deletephonebook) _gnokii_memory_type return ;; --getsmsc | --getcalendarnote | --deletecalendarnote | --gettodo | \ --getspeeddial) # TODO: grab a specific entry ID return ;; --setsmsc | --smsreader | --createsmsfolder | --deletealltodos | \ --showsmsfolderstatus) return ;; --deletesmsfolder | --folder) # TODO: folderid return ;; --writephonebook) COMPREPLY=($(compgen -W '--overwrite --find-free --memory-type --location --vcard --ldif' -- "$cur")) return ;; --writecalendarnote | --writetodo) _filedir vcf return ;; # DIAL --setspeeddial | --dialvoice | --senddtmf | --answercall | --hangup) # TODO return ;; --divert) COMPREPLY=($(compgen -W '--op' -- "$cur")) return ;; # PROFILE --getprofile | --setactiveprofile) # TODO return ;; --setprofile | --getactiveprofile) return ;; # SETTINGS --reset) COMPREPLY=($(compgen -W 'soft hard' -- "$cur")) return ;; --setdatetime | --setalarm) # TODO return ;; --getdatetime | --getalarm) return ;; # WAP --getwapbookmark | --writewapbookmark | --deletewapbookmark | \ --getwapsetting | --writewapsetting | --activatewapsetting) return ;; # LOGOS --sendlogo) COMPREPLY=($(compgen -W 'caller op picture' -- "$cur")) return ;; --setlogo | --getlogo) COMPREPLY=($(compgen -W 'op startup caller dealer text' \ -- "$cur")) return ;; --viewlogo) # TODO: logofile return ;; --entersecuritycode) COMPREPLY=($(compgen -W 'PIN PIN2 PUK PUK2 SEC' -- "$cur")) return ;; # TODO: RINGTONES esac # second level completion if [[ $((cword - 2)) -ge 1 && ${words[cword - 2]} =~ --* ]]; then pprev=${words[cword - 2]} case $pprev in --setspeeddial) _gnokii_memory_type return ;; --getsms | --deletesms | --getmms | --deletemms | --getphonebook | \ --writetodo | --writecalendarnote) # TODO: start number return ;; --gettodo | --getcalendarnote) COMPREPLY=($(compgen -W '{1..9} end --vCal' -- "$cur")) return ;; --deletecalendarnote) COMPREPLY=($(compgen -W '{1..9} end' -- "$cur")) return ;; --divert) COMPREPLY=($(compgen -W 'register enable query disable erasure' -- "$cur")) return ;; esac fi # third level completion if [[ $((cword - 3)) -ge 1 && ${words[cword - 3]} =~ --* ]]; then tprev=${words[cword - 3]} case $tprev in --deletesms | --deletemms) COMPREPLY=($(compgen -W 'end' -- "$cur")) return ;; --getphonebook | --writetodo | --writecalendarnote) COMPREPLY=($(compgen -W '{1..9} end' -- "$cur")) return ;; --gettodo | --getcalendarnote) [[ ${words[cword - 1]} == end ]] && COMPREPLY=($(compgen -W '--vCal' -- "$cur")) return ;; --divert) COMPREPLY=($(compgen -W '--type' -- "$cur")) return ;; esac fi # fourth level completion if [[ $((cword - 4)) -ge 1 && ${words[cword - 4]} =~ --* ]]; then fprev=${words[cword - 4]} case $fprev in --getphonebook) COMPREPLY=($(compgen -W '--raw --vcard --ldif' -- "$cur")) return ;; --divert) COMPREPLY=($(compgen -W 'all busy noans outofreach notavail' \ -- "$cur")) return ;; esac fi # safer to use LANG=C local all_cmd="$(LANG=C _parse_help $1 "--help all")" # these 2 below are allowed in combination with others local main_cmd=$(command grep -v -- '--config\|--phone' <<<"$all_cmd") # don't provide main command completions if one is # already on the command line [[ $COMP_LINE =~ $(tr ' ' '\b|' <<<$main_cmd) ]] && return COMPREPLY=($(compgen -W "$all_cmd" -- "$cur")) } && complete -F _gnokii gnokii # ex: filetype=sh bash-completion-2.11/completions/gnome-mplayer000066400000000000000000000016671370676621500216030ustar00rootroot00000000000000# gnome-mplayer(1) completion -*- shell-script -*- _gnome_mplayer() { local cur prev words cword split _init_completion -s || return case $prev in -'?' | --help | --help-all | --help-gtk) return ;; --showcontrols | --showsubtitles | --autostart) COMPREPLY=($(compgen -w '0 1' -- "$cur")) return ;; --subtitle) _filedir '@(srt|sub|txt|utf|rar|mpsub|smi|js|ssa|ass)' return ;; --tvdriver) COMPREPLY=($(compgen -W 'v4l v4l2' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help-all)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _gnome_mplayer gnome-mplayer # ex: filetype=sh bash-completion-2.11/completions/gnome-screenshot000066400000000000000000000014521370676621500222770ustar00rootroot00000000000000# gnome-screenshot(1) completion -*- shell-script -*- _gnome_screenshot() { local cur prev words cword split _init_completion -s || return case $prev in --help | --help-* | --version | --delay | --display | -!(-*)[hd]) return ;; --border-effect | -!(-*)e) COMPREPLY=($(compgen -W 'shadow border vintage none' -- "$cur")) return ;; --file | -!(-*)f) _filedir '@(jp?(e)|pn)g' return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _gnome_screenshot gnome-screenshot # ex: filetype=sh bash-completion-2.11/completions/gpasswd000066400000000000000000000011321370676621500204620ustar00rootroot00000000000000# gpasswd(1) completion -*- shell-script -*- _gpasswd() { local cur prev words cword _init_completion || return case $prev in --add | --delete | --administrators | --members | -!(-*)[adAM]) COMPREPLY=($(compgen -u -- "$cur")) return ;; esac if [[ $cur == -* ]]; then # TODO: only -A and -M can be combined COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi COMPREPLY=($(compgen -g -- "$cur")) } && complete -F _gpasswd gpasswd # ex: filetype=sh bash-completion-2.11/completions/gpg000066400000000000000000000024131370676621500175720ustar00rootroot00000000000000# bash completion for gpg -*- shell-script -*- _gpg() { local cur prev words cword _init_completion || return case $prev in --sign | --clearsign | --decrypt-files | --load-extension | -!(-*)s) _filedir return ;; --export | --sign-key | --lsign-key | --nrsign-key | --nrlsign-key | --edit-key) # return list of public keys COMPREPLY=($(compgen -W "$($1 --list-keys 2>/dev/null | command sed -ne \ 's@^pub.*/\([^ ]*\).*$@\1@p' -ne \ 's@^.*\(<\([^>]*\)>\).*$@\2@p')" -- "$cur")) return ;; --recipient | -!(-*)r) COMPREPLY=($(compgen -W "$($1 --list-keys 2>/dev/null | command sed -ne \ 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur")) if [[ -e ~/.gnupg/gpg.conf ]]; then COMPREPLY+=($(compgen -W "$(command sed -ne \ 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' \ ~/.gnupg/gpg.conf)" -- "$cur")) fi return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$($1 --dump-options)' -- "$cur")) fi } && complete -F _gpg -o default gpg # ex: filetype=sh bash-completion-2.11/completions/gpg2000066400000000000000000000025141370676621500176560ustar00rootroot00000000000000# gpg2(1) completion -*- shell-script -*- _gpg2() { local cur prev words cword _init_completion || return case $prev in --homedir) _filedir -d return ;; --sign | --clearsign | --options | --decrypt | -!(-*)s) _filedir return ;; --export | --sign-key | --lsign-key | --nrsign-key | --nrlsign-key | --edit-key) # return list of public keys COMPREPLY=($(compgen -W "$($1 --list-keys 2>/dev/null | command sed -ne \ 's@^pub.*/\([^ ]*\).*$@\1@p' -ne \ 's@^.*\(<\([^>]*\)>\).*$@\2@p')" -- "$cur")) return ;; --recipient | -!(-*)r) COMPREPLY=($(compgen -W "$($1 --list-keys 2>/dev/null | command sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur")) if [[ -e ~/.gnupg/gpg.conf ]]; then COMPREPLY+=($(compgen -W "$(command sed -ne \ 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' \ ~/.gnupg/gpg.conf)" -- "$cur")) fi return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$($1 --dump-options)' -- "$cur")) fi } && complete -F _gpg2 -o default gpg2 # ex: filetype=sh bash-completion-2.11/completions/gpgv000066400000000000000000000021311370676621500177550ustar00rootroot00000000000000# gpgv(1) completion -*- shell-script -*- _gpgv() { local cur prev words cword _init_completion || return case $prev in --help | --version | --weak-digest | --*-fd | -!(-*)[?h]*) return ;; --keyring) _filedir "@(gpg|kbx)" return ;; --homedir) _filedir -d return ;; esac local args _count_args "" "--@(weak-digest|*-fd|keyring|homedir)" if [[ $cur == -* && $args -eq 1 ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi if ((args > 1)); then if [[ ${COMP_LINE,,} == *.@(asc|sig|sign)\ * ]]; then # Detached signature, only complete one arbitrary file arg and - if ((args == 2)); then COMPREPLY=($(compgen -W '-' -- "$cur")) _filedir fi else _filedir gpg fi else _filedir "@(asc|gpg|sig|sign)" fi } && complete -F _gpgv gpgv gpgv2 # ex: filetype=sh bash-completion-2.11/completions/gphoto2000066400000000000000000000026001370676621500203750ustar00rootroot00000000000000# bash completion for gphoto2(1) -*- shell-script -*- _gphoto2() { local cur prev words cword split _init_completion -s -n : || return case $prev in --debug-logfile) _filedir return ;; --hook-script) _filedir return ;; --filename) _filedir return ;; -u | --upload-file) _filedir return ;; --port) COMPREPLY=($(compgen -W "$($1 --list-ports 2>/dev/null | awk 'NR>3 { print $1 }')" -- "$cur")) __ltrim_colon_completions "$cur" return ;; --camera) local IFS=$'\n' COMPREPLY=($(compgen -W "$($1 --list-cameras 2>/dev/null | awk -F'"' 'NR>2 { print $2 }')" -- "$cur")) return ;; --get-config | --set-config | --set-config-index | --set-config-value) COMPREPLY=($(compgen -W "$( $1 --list-config 2>/dev/null )" -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _gphoto2 gphoto2 # ex: filetype=sh bash-completion-2.11/completions/gprof000066400000000000000000000025011370676621500201300ustar00rootroot00000000000000# gprof(1) completion -*- shell-script -*- _gprof() { local cur prev words cword split _init_completion -s || return case $cur in -A* | -C* | -J* | -p* | -P* | -q* | -Q* | -n* | -N* | -d*) return ;; -S*) cur=${cur:2} _filedir COMPREPLY=("${COMPREPLY[@]/#/-S}") return ;; -O*) cur=${cur:2} COMPREPLY=($(compgen -P -O -W 'auto bsd 4.4bsd magic prof' \ -- "$cur")) return ;; esac case $prev in -I | --directory-path) _filedir -d return ;; -R | --file-ordering | --external-symbol-table) _filedir return ;; -w | --width | -k | -m | --min-count | -h | --help | -e | -E | -f | -F) return ;; --file-format) COMPREPLY=($(compgen -W 'auto bsd 4.4bsd magic prof' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _gprof gprof # ex: filetype=sh bash-completion-2.11/completions/groupadd000066400000000000000000000011531370676621500206220ustar00rootroot00000000000000# groupadd(8) completion -*- shell-script -*- _groupadd() { local cur prev words cword split _init_completion -s || return # TODO: if -o/--non-unique is given, could complete on existing gids # with -g/--gid case $prev in --gid | --key | --password | -!(-*)[gKp]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _groupadd groupadd # ex: filetype=sh bash-completion-2.11/completions/groupdel000066400000000000000000000010321370676621500206320ustar00rootroot00000000000000# groupdel(8) completion -*- shell-script -*- _groupdel() { local cur prev words cword _init_completion || return case $prev in -h | --help) return ;; -R | --root) _filedir -d return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi COMPREPLY=($(compgen -g -- "$cur")) } && complete -F _groupdel groupdel # ex: filetype=sh bash-completion-2.11/completions/groupmems000066400000000000000000000011431370676621500210320ustar00rootroot00000000000000# groupmems(8) completion -*- shell-script -*- _groupmems() { local cur prev words cword _init_completion || return case $prev in -a | --add | -d | --delete) COMPREPLY=($(compgen -u -- "$cur")) return ;; -g | --group) COMPREPLY=($(compgen -g -- "$cur")) return ;; -R | --root) _filedir -d return ;; esac COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _groupmems groupmems # ex: filetype=sh bash-completion-2.11/completions/groupmod000066400000000000000000000012621370676621500206520ustar00rootroot00000000000000# groupmod(8) completion -*- shell-script -*- _groupmod() { local cur prev words cword split _init_completion -s || return # TODO: if -o/--non-unique is given, could complete on existing gids # with -g/--gid case $prev in --gid | --help | --new-name | --password | -!(-*)[ghnp]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi COMPREPLY=($(compgen -g -- "$cur")) } && complete -F _groupmod groupmod # ex: filetype=sh bash-completion-2.11/completions/growisofs000066400000000000000000000015771370676621500210510ustar00rootroot00000000000000# growisofs(1) completion -*- shell-script -*- _growisofs() { local cur prev words cword _init_completion || return case $prev in -version | -speed) return ;; -Z | -M) compopt -o nospace _dvd_devices return ;; /?(r)dev/*) if [[ $cur == =* ]]; then # e.g. /dev/dvd=foo.iso, /dev/dvdrw=/dev/zero cur="${cur#=}" _filedir return fi ;; esac if [[ $cur == -* ]]; then # TODO: mkisofs options COMPREPLY=($(compgen -W '-dvd-compat -overburn -speed= -Z -M' \ -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _growisofs growisofs # ex: filetype=sh bash-completion-2.11/completions/grpck000066400000000000000000000007621370676621500201300ustar00rootroot00000000000000# grpck(8) completion -*- shell-script -*- _grpck() { local cur prev words cword _init_completion || return case $prev in --root | -!(-*)R) _filedir return ;; esac if [[ $cur == -* ]]; then local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) return fi _filedir } && complete -F _grpck grpck # ex: filetype=sh bash-completion-2.11/completions/gssdp-discover000066400000000000000000000016321370676621500217530ustar00rootroot00000000000000# bash completion for gssdp-discover -*- shell-script -*- _gssdp_discover() { local cur prev words cword split _init_completion -s || return case $prev in --help | --target | --timeout | --rescan-interval | -[htnr]) return ;; --interface | -i) _available_interfaces -a return ;; --message-type | -m) local types=$($1 --help 2>&1 | command sed -ne 's/^.*--message-type=.*(\([^)]*\))$/\1/p') COMPREPLY=($( IFS+=, compgen -W "$types" -- "$cur" )) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _gssdp_discover gssdp-discover # ex: filetype=sh bash-completion-2.11/completions/gzip000066400000000000000000000022071370676621500177670ustar00rootroot00000000000000# bash completion for gzip -*- shell-script -*- _gzip() { local cur prev words cword _init_completion || return case $prev in --blocksize | --suffix | --help | --version | -!(-*)[bShV]) return ;; --processes | -!(-*)p) COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") {-1..-9}' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi local IFS=$'\n' xspec="*.@(gz|t[ag]z)" [[ ${1##*/} == pigz ]] && xspec="*.@([gz]z|t[ag]z)" if [[ $prev == --* ]]; then [[ $prev == --@(decompress|list|test) ]] && xspec="!"$xspec [[ $prev == --force ]] && xspec= elif [[ $prev == -* ]]; then [[ $prev == -*[dlt]* ]] && xspec="!"$xspec [[ $prev == -*f* ]] && xspec= fi _tilde "$cur" || return compopt -o filenames COMPREPLY=($(compgen -f -X "$xspec" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _gzip gzip pigz # ex: filetype=sh bash-completion-2.11/completions/hcitool000066400000000000000000000226101370676621500204570ustar00rootroot00000000000000# bash completion for bluez utils -*- shell-script -*- _bluetooth_addresses() { if [[ -n ${COMP_BLUETOOTH_SCAN:-} ]]; then COMPREPLY+=($(compgen -W "$(hcitool scan | awk '/^\t/{print $1}')" -- "$cur")) fi } _bluetooth_devices() { COMPREPLY+=($(compgen -W "$(hcitool dev | awk '/^\t/{print $1}')" -- "$cur")) } _bluetooth_services() { COMPREPLY=($(compgen -W 'DID SP DUN LAN FAX OPUSH FTP HS HF HFAG SAP NAP GN PANU HCRP HID CIP A2SRC A2SNK AVRCT AVRTG UDIUE UDITE SYNCML' \ -- "$cur")) } _bluetooth_packet_types() { COMPREPLY=($(compgen -W 'DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3' \ -- "$cur")) } _hcitool() { local cur prev words cword split _init_completion -s || return case $prev in -i) _bluetooth_devices return ;; --role) COMPREPLY=($(compgen -W 'm s' -- "$cur")) return ;; --pkt-type) _bluetooth_packet_types return ;; esac $split && return local arg _get_first_arg if [[ -z $arg ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else COMPREPLY=($(compgen -W 'dev inq scan name info spinq epinq cmd con cc dc sr cpt rssi lq tpl afh lst auth enc key clkoff clock' -- "$cur")) fi else local args case $arg in name | info | dc | rssi | lq | afh | auth | key | clkoff | lst) _count_args if ((args == 2)); then _bluetooth_addresses fi ;; cc) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--role --pkt-type' -- "$cur")) else _count_args if ((args == 2)); then _bluetooth_addresses fi fi ;; sr) _count_args if ((args == 2)); then _bluetooth_addresses else COMPREPLY=($(compgen -W 'master slave' -- "$cur")) fi ;; cpt) _count_args if ((args == 2)); then _bluetooth_addresses else _bluetooth_packet_types fi ;; tpl | enc | clock) _count_args if ((args == 2)); then _bluetooth_addresses else COMPREPLY=($(compgen -W '0 1' -- "$cur")) fi ;; esac fi } && complete -F _hcitool hcitool _sdptool() { local cur prev words cword split _init_completion -s || return case $prev in --bdaddr) _bluetooth_addresses return ;; esac $split && return local arg _get_first_arg if [[ -z $arg ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else COMPREPLY=($(compgen -W 'search browse records add del get setattr setseq' -- "$cur")) fi else case $arg in search) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--bdaddr --tree --raw --xml' \ -- "$cur")) else _bluetooth_services fi ;; browse | records) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--tree --raw --xml' -- "$cur")) else _bluetooth_addresses fi ;; add) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--handle --channel' -- "$cur")) else _bluetooth_services fi ;; get) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--bdaddr --tree --raw --xml' \ -- "$cur")) fi ;; esac fi } && complete -F _sdptool sdptool _l2ping() { local cur prev words cword _init_completion || return case $prev in -i) _bluetooth_devices return ;; -s | -c | -t | -d) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) else _bluetooth_addresses fi } && complete -F _l2ping l2ping _rfcomm() { local cur prev words cword _init_completion || return case $prev in -f | --config) _filedir return ;; -i) _bluetooth_devices _bluetooth_addresses return ;; esac local arg _get_first_arg if [[ -z $arg ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else COMPREPLY=($(compgen -W 'show connect listen watch bind release' -- "$cur")) fi else local args _count_args if ((args == 2)); then _bluetooth_devices else case $arg in connect | bind) if ((args == 3)); then _bluetooth_addresses fi ;; esac fi fi } && complete -F _rfcomm rfcomm _ciptool() { local cur prev words cword _init_completion || return case $prev in -i) _bluetooth_devices _bluetooth_addresses return ;; esac local arg _get_first_arg if [[ -z $arg ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else COMPREPLY=($(compgen -W 'show search connect release loopback' \ -- "$cur")) fi else local args case $arg in connect | release | loopback) _count_args if ((args == 2)); then _bluetooth_addresses fi ;; esac fi } && complete -F _ciptool ciptool _dfutool() { local cur prev words cword _init_completion || return case $prev in -d | --device) _bluetooth_devices return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else local args _count_args case $args in 1) COMPREPLY=($(compgen -W 'verify modify upgrade archive' \ -- "$cur")) ;; 2) _filedir ;; esac fi } && complete -F _dfutool dfutool _hciconfig() { local cur prev words cword _init_completion || return local arg _get_first_arg if [[ -z $arg ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --all' -- "$cur")) else COMPREPLY=($(compgen -W 'up down reset rstat auth noauth encrypt noencrypt secmgr nosecmgr piscan noscan iscan pscan ptype name class voice iac inqmode inqdata inqtype inqparams pageparms pageto afhmode aclmtu scomtu putkey delkey commands features version revision lm' -- "$cur")) fi else local args case $arg in putkey | delkey) _count_args if ((args == 2)); then _bluetooth_addresses fi ;; lm) _count_args if ((args == 2)); then COMPREPLY=($(compgen -W 'MASTER SLAVE NONE ACCEPT' \ -- "$cur")) fi ;; ptype) _count_args if ((args == 2)); then _bluetooth_packet_types fi ;; esac fi } && complete -F _hciconfig hciconfig _hciattach() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-n -p -t -b -s -l' -- "$cur")) else local args _count_args case $args in 1) COMPREPLY=($(printf '%s\n' /dev/tty*)) COMPREPLY=($(compgen -W '${COMPREPLY[@]} ${COMPREPLY[@]#/dev/}' -- "$cur")) ;; 2) COMPREPLY=($(compgen -W 'any ericsson digi xircom csr bboxes swave bcsp 0x0105 0x080a 0x0160 0x0002' -- "$cur")) ;; 3) COMPREPLY=($(compgen -W '9600 19200 38400 57600 115200 230400 460800 921600' -- "$cur")) ;; 4) COMPREPLY=($(compgen -W 'flow noflow' -- "$cur")) ;; 5) _bluetooth_addresses ;; esac fi } && complete -F _hciattach hciattach # ex: filetype=sh bash-completion-2.11/completions/hddtemp000066400000000000000000000015721370676621500204470ustar00rootroot00000000000000# hddtemp(8) completion -*- shell-script -*- _hddtemp() { local cur prev words cword split _init_completion -s || return case $prev in --file | -!(-*)f) _filedir db return ;; --listen | -!(-*)l) _ip_addresses return ;; --unit | -!(-*)u) COMPREPLY=($(compgen -W 'C F' -- "$cur")) return ;; --port | --separator | --syslog | --version | --help | -!(-*)[psSvh?]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") --help' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else cur=${cur:=/dev/} _filedir fi } && complete -F _hddtemp hddtemp # ex: filetype=sh bash-completion-2.11/completions/hid2hci000066400000000000000000000005341370676621500203310ustar00rootroot00000000000000# hid2hci completion -*- shell-script -*- _hid2hci() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --quiet -0 --tohci -1 --tohid' \ -- "$cur")) fi } && complete -F _hid2hci hid2hci # ex: filetype=sh bash-completion-2.11/completions/hostname000066400000000000000000000007531370676621500206400ustar00rootroot00000000000000# hostname(1) completion -*- shell-script -*- _hostname() { local cur prev words cword _init_completion || return case $prev in --help | --version | -!(-*)[hV]) return ;; --file | -!(-*)F) _filedir return ;; esac [[ $cur == -* ]] && COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _hostname hostname # ex: filetype=sh bash-completion-2.11/completions/hping2000066400000000000000000000014301370676621500202020ustar00rootroot00000000000000# bash completion for hping2 -*- shell-script -*- _hping2() { local cur prev words cword _init_completion || return case $prev in --interface | -!(-*)I) _available_interfaces return ;; --spoof | -!(-*)a) _known_hosts_real -- "$cur" return ;; --tos | -!(-*)o) COMPREPLY=($(compgen -W '02 04 08 10')) return ;; --file | -!(-*)E) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else _known_hosts_real -- "$cur" fi } && complete -F _hping2 hping hping2 hping3 # ex: filetype=sh bash-completion-2.11/completions/htop000066400000000000000000000014471370676621500177750ustar00rootroot00000000000000# htop(1) completion -*- shell-script -*- _htop() { local cur prev words cword split _init_completion -s || return case "$prev" in --sort-key | -!(-*)s) COMPREPLY=($(compgen -W '$("$1" -s help)' -- "$cur")) return ;; --user | -!(-*)u) COMPREPLY=($(compgen -u -- "$cur")) return ;; --delay | -!(-*)d) # argument required but no completions available return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi } && complete -F _htop htop # ex: filetype=sh bash-completion-2.11/completions/htpasswd000066400000000000000000000016321370676621500206540ustar00rootroot00000000000000# htpasswd(1) completion -*- shell-script -*- _htpasswd() { local cur prev words cword _init_completion || return local i o=0 # $o is index of first non-option argument for ((i = 1; i <= cword; i++)); do case ${words[i]} in -*n*) return ;; -*) ;; *) o=$i break ;; esac done if ((o == 0 || o == cword)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi # Password file (first non-option argument) _filedir elif ((o == cword - 1)); then # Username (second non-option argument) COMPREPLY=($(compgen -W \ '$(cut -d: -f1 "${words[o]}" 2>/dev/null)' -- "$cur")) fi } && complete -F _htpasswd htpasswd # ex: filetype=sh bash-completion-2.11/completions/hunspell000066400000000000000000000020011370676621500206400ustar00rootroot00000000000000# hunspell(1) completion -*- shell-script -*- _hunspell() { local cur prev words cword _init_completion || return case $prev in --help | --version | -vv | -[hPv]) return ;; -d) local IFS=$' \t\n' reset=$(shopt -p nullglob) shopt -s nullglob local -a dicts=(/usr/share/hunspell/*.dic /usr/local/share/hunspell/*.dic) dicts=("${dicts[@]##*/}") dicts=("${dicts[@]%.dic}") $reset IFS=$'\n' COMPREPLY=($(compgen -W '${dicts[@]}' -- "$cur")) return ;; -i) _xfunc iconv _iconv_charsets return ;; -p) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _filedir } && complete -F _hunspell hunspell # ex: filetype=sh bash-completion-2.11/completions/iconv000066400000000000000000000016371370676621500201420ustar00rootroot00000000000000# iconv(1) completion -*- shell-script -*- _iconv_charsets() { COMPREPLY+=($(compgen -X ... -W '$(${1:-iconv} -l | \ command sed -e "s@/*\$@@" -e "s/[,()]//g")' -- "$cur")) } _iconv() { local cur prev words cword split _init_completion -s || return case $prev in --help | --usage | --version | --unicode-subst | --byte-subst | \ --widechar-subst | -!(-*)[?V]) return ;; --from-code | --to-code | -!(-*)[ft]) _iconv_charsets $1 return ;; --output | -!(-*)o) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _iconv -o default iconv # ex: filetype=sh bash-completion-2.11/completions/id000066400000000000000000000006611370676621500174140ustar00rootroot00000000000000# id(1) completion -*- shell-script -*- _id() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then local opts=$(_parse_help "$1") [[ $opts ]] || opts="-G -g -u" # POSIX fallback COMPREPLY=($(compgen -W "$opts" -- "$cur")) else COMPREPLY=($(compgen -u "$cur")) fi } && complete -F _id id # ex: filetype=sh bash-completion-2.11/completions/idn000066400000000000000000000012321370676621500175650ustar00rootroot00000000000000# idn(1) completion -*- shell-script -*- _idn() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | -!(-*)[hV]) return ;; --profile | -!(-*)p) COMPREPLY=($(compgen -W 'Nameprep iSCSI Nodeprep Resourceprep trace SASLprep' -- "$cur")) return ;; esac if ! $split && [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _idn idn # ex: filetype=sh bash-completion-2.11/completions/ifstat000066400000000000000000000040031370676621500203040ustar00rootroot00000000000000# bash completion for ifstat(1) -*- shell-script -*- _ifstat() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | --scan | --interval | -!(-*)[hvV]) return ;; -!(-*)i) # TODO comma separated _available_interfaces -a return ;; -!(-*)d) # iproute2: no completion (scan delay) # traditional: parse driver if ! { "$1" --help 2>&1 || : } | command grep -q -- '-d.*--scan'; then COMPREPLY=($(compgen -W '$("$1" -v | command \ sed -e "s/[,.]//g" -ne "s/^.*drivers://p")' -- "$cur")) fi return ;; --noupdate | -!(-*)s) # iproute2: pass through (skip history update) # traditional: hostnames (snmp) if ! { "$1" --help 2>&1 || : } | command grep -q -- '-s.*--noupdate'; then _known_hosts_real -- "$cur" return fi ;; -!(-*)t) # iproute2: no completion (interval) # traditional: pass through (add timestamp) ! { "$1" --help 2>&1 || : } | command grep -q -- '-t.*--interval' || return ;; --extended | -!(-*)x) # iproute2: parse xstat types COMPREPLY=($(compgen -W '$("$1" -x nonexistent-xstat 2>&1 | awk "found { print \$1 } /supported xstats:/ { found=1 }")' \ -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi } && complete -F _ifstat ifstat # ex: filetype=sh bash-completion-2.11/completions/iftop000066400000000000000000000010001370676621500201250ustar00rootroot00000000000000# iftop(8) completion -*- shell-script -*- _iftop() { local cur prev words cword _init_completion || return case $prev in -h | -f | -F | -m) return ;; -i) _available_interfaces -a return ;; -c) _filedir return ;; esac COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) } && complete -F _iftop iftop # ex: filetype=sh bash-completion-2.11/completions/ifup000066400000000000000000000016121370676621500177600ustar00rootroot00000000000000# Red Hat & Debian GNU/Linux if{up,down} completion -*- shell-script -*- _userland GNU || return 1 _ifupdown() { local cur prev words cword _init_completion || return case $prev in --help | --version | --allow | --exclude | --option | -!(-*)[hVXo]) return ;; --interfaces | -!(-*)i) _filedir return ;; --state-dir) _filedir -d return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi local args _count_args "" "@(--allow|-i|--interfaces|--state-dir|-X|--exclude|-o)" if ((args == 1)); then _configured_interfaces COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) fi } && complete -F _ifupdown ifup ifdown ifquery ifstatus # ex: filetype=sh bash-completion-2.11/completions/influx000066400000000000000000000015651370676621500203310ustar00rootroot00000000000000# bash completion for influx(8) -*- shell-script -*- _influx() { local cur prev words cword _init_completion || return case $prev in -version | -port | -database | -password | -username | -execute | -pps) return ;; -host) _known_hosts_real -- "$cur" return ;; -format | -precision | -consistency) local args=$($1 --help 2>&1 | awk "\$1 == \"$prev\" { print \$2 }") COMPREPLY=($( IFS+="\"'|" compgen -W "$args" -- "$cur" )) return ;; -import | -path) _filedir return ;; esac [[ $cur == -* ]] && COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _influx influx # ex: filetype=sh bash-completion-2.11/completions/info000066400000000000000000000036021370676621500177510ustar00rootroot00000000000000# bash completion for info -*- shell-script -*- _info() { local cur prev words cword split _init_completion -s || return # default completion if parameter looks like a path if [[ $cur == @(*/|[.~])* ]]; then _filedir return fi case $prev in --apropos | --index-search | --node | --help | --version | -!(-*)[knhv]) return ;; -!(-*)d) if [[ ${1##*/} == info ]]; then _filedir -d return fi ;; --directory) _filedir -d return ;; --dribble | --file | --output | --restore | --raw-filename | --rcfile | -!(-*)[for]) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi local i infopath=/usr/share/info if [[ ${INFOPATH-} == *: ]]; then infopath=${INFOPATH}${infopath} elif [[ ${INFOPATH:+set} ]]; then infopath=$INFOPATH fi _expand || return infopath=$infopath: if [[ -n $cur ]]; then infopath="${infopath//://$cur* }" else infopath="${infopath//:// }" fi # redirect stderr for when path doesn't exist COMPREPLY=($(eval command ls "$infopath" 2>/dev/null)) # weed out directory path names and paths to info pages COMPREPLY=(${COMPREPLY[@]##*/?(:)}) # weed out info dir file for i in ${!COMPREPLY[*]}; do [[ ${COMPREPLY[i]} == dir ]] && unset "COMPREPLY[i]" done # strip suffix from info pages COMPREPLY=(${COMPREPLY[@]%.@(gz|bz2|xz|lzma)}) COMPREPLY=($(compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}")) } && complete -F _info info pinfo # ex: filetype=sh bash-completion-2.11/completions/inject000066400000000000000000000007761370676621500203030ustar00rootroot00000000000000# mailman inject completion -*- shell-script -*- _inject() { local cur prev words cword split _init_completion -s || return case $prev in -l | --listname) _xfunc list_lists _mailman_lists return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--listname --queue --help' -- "$cur")) else _filedir fi } && complete -F _inject inject # ex: filetype=sh bash-completion-2.11/completions/inotifywait000066400000000000000000000023711370676621500213660ustar00rootroot00000000000000# bash completion for inotifywait(1) and inotifywatch(1) -*- shell-script -*- _inotifywait_events() { # Expecting line with "Events:", followed by ones starting with one # tab. Word following the tab is event name, others are line # wrapped explanations. COMPREPLY+=($(compgen -W "$($1 --help 2>/dev/null | command sed -e '/^Events:/,/^[^'$'\t'']/!d' \ -ne 's/^'$'\t''\([^ '$'\t'']\{1,\}\)[ '$'\t''].*/\1/p')" \ -- "$cur")) } _inotifywait() { local cur prev words cword _init_completion || return case $prev in --help | --exclude | --excludei | --format | --timefmt | --timeout | -!(-*)[ht]) return ;; --fromfile | --outfile | -!(-*)o) _filedir return ;; --event | -!(-*)e) _inotifywait_events "$1" return ;; --ascending | --descending) COMPREPLY=($(compgen -W 'total' -- "$cur")) _inotifywait_events "$1" return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _filedir } && complete -F _inotifywait inotifywait inotifywatch # ex: filetype=sh bash-completion-2.11/completions/insmod000066400000000000000000000010061370676621500203030ustar00rootroot00000000000000# Linux insmod(8) completion -*- shell-script -*- _insmod() { local cur prev words cword _init_completion || return # do filename completion for first argument if ((cword == 1)); then _filedir '@(?(k)o?(.[gx]z))' else # do module parameter completion COMPREPLY=($(compgen -W "$(PATH="$PATH:/sbin" modinfo \ -p ${words[1]} 2>/dev/null | cut -d: -f1)" -- "$cur")) fi } && complete -F _insmod insmod insmod.static # ex: filetype=sh bash-completion-2.11/completions/installpkg000066400000000000000000000013331370676621500211650ustar00rootroot00000000000000# Slackware Linux installpkg completion -*- shell-script -*- _installpkg() { local cur prev words cword _init_completion || return case "$prev" in --root) _filedir -d return ;; --priority) COMPREPLY=($(compgen -W 'ADD REC OPT SKP' -- "$cur")) return ;; --tagfile) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--warn --md5sum --root --infobox --terse --menu --ask --priority --tagfile' -- "$cur")) return fi _filedir 't[bglx]z' } && complete -F _installpkg installpkg # ex: filetype=sh bash-completion-2.11/completions/interdiff000066400000000000000000000014061370676621500207700ustar00rootroot00000000000000# interdiff(1) completion -*- shell-script -*- _interdiff() { local cur prev words cword split _init_completion -s || return case $prev in --unified | --strip-match | --drop-context | -!(-*)[Upd]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi local exts='@(?(d)patch|dif?(f))' word for word in "${words[@]}"; do if [[ $word == -@(z|-decompress) ]]; then exts+='?(.@(gz|bz2))' break fi done _filedir "$exts" } && complete -F _interdiff interdiff # ex: filetype=sh bash-completion-2.11/completions/invoke-rc.d000066400000000000000000000023061370676621500211350ustar00rootroot00000000000000# invoke-rc.d(8) completion -*- shell-script -*- # # Copyright (C) 2004 Servilio Afre Puentes _invoke_rc_d() { local cur prev words cword _init_completion || return local sysvdir services options valid_options [[ -d /etc/rc.d/init.d ]] && sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d services=($(printf '%s ' $sysvdir/!(README*|*.sh|$_backup_glob))) services=(${services[@]#$sysvdir/}) options=(--help --quiet --force --try-anyway --disclose-deny --query --no-fallback) if [[ $cword -eq 1 || $prev == --* ]]; then valid_options=($( tr " " "\n" <<<"${words[*]} ${options[*]}" | command sed -ne "/$(command sed 's/ /\\|/g' <<<"${options[*]}")/p" | sort | uniq -u )) COMPREPLY=($(compgen -W '${valid_options[@]} ${services[@]}' -- "$cur")) elif [[ -x $sysvdir/$prev ]]; then COMPREPLY=($(compgen -W '`command sed -e "y/|/ /" \ -ne "s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \ $sysvdir/$prev`' -- "$cur")) else COMPREPLY=() fi } && complete -F _invoke_rc_d invoke-rc.d # ex: filetype=sh bash-completion-2.11/completions/ip000066400000000000000000000312121370676621500174240ustar00rootroot00000000000000# ip(8) completion -*- shell-script -*- _iproute2_etc() { COMPREPLY+=($(compgen -W \ "$(awk '!/#/ { print $2 }' /etc/iproute2/$1 2>/dev/null)" \ -- "$cur")) } _ip() { local cur prev words cword _init_completion || return case $prev in -V | -Version | -rc | -rcvbuf) return ;; -f | -family) COMPREPLY=($(compgen -W 'inet inet6 ipx dnet link' -- "$cur")) return ;; -b | -batch) _filedir return ;; -force) COMPREPLY=($(compgen -W '-batch' -- "$cur")) return ;; esac local subcword cmd subcmd="" for ((subcword = 1; subcword < ${#words[@]} - 1; subcword++)); do [[ ${words[subcword]} == -b?(atch) ]] && return [[ -v cmd ]] && subcmd=${words[subcword]} && break [[ ${words[subcword]} != -* && \ ${words[subcword - 1]} != -@(f?(amily)|rc?(vbuf)) ]] && cmd=${words[subcword]} done if [[ ! -v cmd ]]; then case $cur in -*) local c="-Version -statistics -details -resolve -family -oneline -timestamp -batch -rcvbuf" ((cword == 1)) && c+=" -force" COMPREPLY=($(compgen -W "$c" -- "$cur")) ;; *) COMPREPLY=($(compgen -W "help $($1 help 2>&1 | command sed -e \ '/OBJECT := /,/}/!d' -e \ 's/.*{//' -e \ 's/}.*//' -e \ 's/|//g')" -- "$cur")) ;; esac return fi [[ $subcmd == help ]] && return case $cmd in l | link) case $subcmd in add) # TODO ;; delete) case $((cword - subcword)) in 1) _available_interfaces ;; 2) COMPREPLY=($(compgen -W 'type' -- "$cur")) ;; 3) [[ $prev == type ]] && COMPREPLY=($(compgen -W 'vlan veth vcan dummy ifb macvlan can' -- "$cur")) ;; esac ;; set) if ((cword - subcword == 1)); then _available_interfaces else case $prev in arp | dynamic | multicast | allmulticast | promisc | \ trailers) COMPREPLY=($(compgen -W 'on off' -- "$cur")) ;; txqueuelen | name | address | broadcast | mtu | netns | alias) ;; *) local c="arp dynamic multicast allmulticast promisc trailers txqueuelen name address broadcast mtu netns alias" [[ $prev != @(up|down) ]] && c+=" up down" COMPREPLY=($(compgen -W "$c" -- "$cur")) ;; esac fi ;; show) if ((cword == subcword + 1)); then _available_interfaces COMPREPLY+=($(compgen -W 'dev group up' -- "$cur")) elif [[ $prev == dev ]]; then _available_interfaces elif [[ $prev == group ]]; then _iproute2_etc group fi ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add delete set show' \ -- "$cur")) ;; esac ;; a | addr | address) case $subcmd in add | change | replace) if [[ $prev == dev ]]; then _available_interfaces elif [[ $prev == scope ]]; then _iproute2_etc rt_scopes else : # TODO fi ;; del) if [[ $prev == dev ]]; then _available_interfaces elif [[ $prev == scope ]]; then _iproute2_etc rt_scopes else : # TODO fi ;; show | flush) if ((cword == subcword + 1)); then _available_interfaces COMPREPLY+=($(compgen -W 'dev scope to label dynamic permanent tentative deprecated dadfailed temporary primary secondary up' -- "$cur")) elif [[ $prev == dev ]]; then _available_interfaces elif [[ $prev == scope ]]; then _iproute2_etc rt_scopes fi ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add change replace del show flush' -- "$cur")) ;; esac ;; addrlabel) case $subcmd in list | add | del | flush) if [[ $prev == dev ]]; then _available_interfaces else : # TODO fi ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help list add del flush' \ -- "$cur")) ;; esac ;; r | route) case $subcmd in list | flush) if [[ $prev == proto ]]; then _iproute2_etc rt_protos else : # TODO fi ;; get) # TODO ;; a | add | d | del | change | append | r | replace | monitor) if [[ $prev == via ]]; then COMPREPLY=($(compgen -W "$($1 r | command sed -ne \ 's/.*via \([0-9.]*\).*/\1/p')" -- "$cur")) elif [[ $prev == "$subcmd" ]]; then COMPREPLY=($(compgen -W "table default \ $($1 r | cut -d ' ' -f 1)" -- "$cur")) elif [[ $prev == dev ]]; then _available_interfaces -a elif [[ $prev == table ]]; then COMPREPLY=($(compgen -W 'local main default' -- "$cur")) else COMPREPLY=($(compgen -W 'via dev weight' -- "$cur")) fi ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help list flush get add del change append replace monitor' -- "$cur")) ;; esac ;; rule) case $subcmd in add | del | list | lst) case $prev in from | to | tos | dsfield | fwmark | uidrange | ipproto | sport | \ dport | priority | protocol | suppress_prefixlength | \ suppress_ifgroup | realms | nat | goto) ;; iif | oif) _available_interfaces -a ;; table | lookup) COMPREPLY=($(compgen -W 'local main default' -- "$cur")) ;; *) COMPREPLY=($(compgen -W 'from to tos dsfield fwmark uidrange ipproto sport dport priority table lookup protocol suppress_prefixlength suppress_ifgroup realms nat goto iif oif not' -- "$cur")) ;; esac ;; flush | save) if [[ $prev == protocol ]]; then : else COMPREPLY=($(compgen -W 'protocol' -- "$cur")) fi ;; restore | show) ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add del list flush save restore show' -- "$cur")) ;; esac ;; neigh) case $subcmd in add | del | change | replace) # TODO ;; show | flush) # TODO ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add del change replace show flush' -- "$cur")) ;; esac ;; ntable) case $subcmd in change) # TODO ;; show) # TODO ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help change show' \ -- "$cur")) ;; esac ;; tunnel) case $subcmd in show) ;; add | change | del | prl | 6rd) # TODO ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add change del show prl 6rd' -- "$cur")) ;; esac ;; maddr) case $subcmd in add | del) # TODO ;; show) if [[ $cword -eq $subcword+1 || $prev == dev ]]; then _available_interfaces [[ $prev != dev ]] && COMPREPLY=($(compgen -W '${COMPREPLY[@]} dev' \ -- "$cur")) fi ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add del show' \ -- "$cur")) ;; esac ;; mroute) case $subcmd in show) # TODO ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help show' -- "$cur")) ;; esac ;; monitor) case $subcmd in all) ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help all' -- "$cur")) ;; esac ;; netns) case $subcmd in list | monitor) ;; add | identify | list-id) # TODO ;; delete | exec | pids | set) [[ $prev == "$subcmd" ]] && COMPREPLY=($(compgen -W "$($1 netns list)" -- "$cur")) ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'help add delete exec identify list list-id monitor pids set' -- "$cur")) ;; esac ;; xfrm) case $subcmd in state | policy | monitor) # TODO ;; *) ((cword == subcword)) && COMPREPLY=($(compgen -W 'state policy monitor' \ -- "$cur")) ;; esac ;; esac } && complete -F _ip ip # ex: filetype=sh bash-completion-2.11/completions/ipcalc000066400000000000000000000010361370676621500202500ustar00rootroot00000000000000# ipcalc(1) completion -*- shell-script -*- _ipcalc() { local cur prev words cword _init_completion || return case $prev in --help | --version | --split | -[hs]) return ;; esac # --split takes 3 args local i for i in {1..3}; do [[ ${words[cword - i]} == -@(-split|s) ]] && return done [[ $cur != -* ]] || COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) } && complete -F _ipcalc ipcalc # ex: filetype=sh bash-completion-2.11/completions/iperf000066400000000000000000000040731370676621500201260ustar00rootroot00000000000000# iperf(1) completion -*- shell-script -*- _iperf() { local cur prev words cword split _init_completion -s -n : || return case $prev in --help | --version | --interval | --len | --port | --window | --mss | --bandwidth | \ --num | --time | --listenport | --parallel | --ttl | --linux-congestion | --omit | \ --congestion | --bytes | --blockcount | --cport | --set-mss | --flowlabel | \ --title | --tos | --affinity | -!(-*)[hvilpwMbntLPTZCkOSA]) return ;; --format | -!(-*)f) COMPREPLY=($(compgen -W 'k m g K M G' -- "$cur")) return ;; --output | --fileinput | -!(-*)[oF]) _filedir return ;; --bind | -!(-*)B) _available_interfaces -a _ip_addresses -a __ltrim_colon_completions "$cur" return ;; --client | -!(-*)c) _known_hosts_real -- "$cur" return ;; --reportexclude | -!(-*)x) COMPREPLY=($(compgen -W 'C D M S V' -- "$cur")) return ;; --reportstyle | -!(-*)y) COMPREPLY=($(compgen -W 'C' -- "$cur")) return ;; --logfile) _filedir log return ;; esac $split && return # Filter mode specific options local i filter=cat for i in "${words[@]}"; do case $i in -s | --server) filter='command sed -e /^Client.specific/,/^\(Server.specific.*\)\?$/d' ;; -c | --client) filter='command sed -e /^Server.specific/,/^\(Client.specific.*\)\?$/d' ;; esac done [[ $filter != cat ]] && filter+=' -e /--client/d -e /--server/d' COMPREPLY=($(compgen -W \ '$("$1" --help 2>&1 | $filter | _parse_help -)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _iperf iperf iperf3 # ex: filetype=sh bash-completion-2.11/completions/ipmitool000066400000000000000000000130361370676621500206540ustar00rootroot00000000000000# bash completion for ipmitool -*- shell-script -*- _ipmitool_singleline_help() { COMPREPLY=($(compgen -W "$($1 $2 2>&1 | command sed -ne 's/[,\r]//g' -e 's/^.*[Cc]ommands://p')" -- "$cur")) } _ipmitool() { local cur prev words cword _init_completion || return case $prev in -*[hVpUekyPmbtBTl]) return ;; -*d) COMPREPLY=($(compgen -W "$( command ls -d /dev/ipmi* /dev/ipmi/* /dev/ipmidev/* \ 2>/dev/null | command sed -ne 's/^[^0-9]*\([0-9]\{1,\}\)/\1/p' )" \ -- "$cur")) return ;; -*I) COMPREPLY=($(compgen -W "$($1 -h 2>&1 | command sed -e '/^Interfaces:/,/^[[:space:]]*$/!d' \ -ne 's/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*/\1/p')" \ -- "$cur")) return ;; -*H) _known_hosts_real -- "$cur" return ;; -*[fSO]) _filedir return ;; -*C) COMPREPLY=($(compgen -W '{0..14}' -- "$cur")) return ;; -*L) COMPREPLY=($(compgen -W 'CALLBACK USER OPERATOR ADMINISTRATOR' \ -- "$cur")) return ;; -*A) COMPREPLY=($(compgen -W 'NONE PASSWORD MD2 MD5 OEM' -- "$cur")) return ;; -*o) COMPREPLY=($(compgen -W "$($1 -o list 2>&1 | awk '/^[ \t]+/ { print $1 }') list" -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) return fi # Find out command and subcommand local cmds=(raw i2c spd lan chassis power event mc sdr sensor fru gendev sel pef sol tsol isol user channel session sunoem kontronoem picmg fwum firewall shell exec set hpm ekanalyzer) local i c cmd subcmd for ((i = 1; i < ${#words[@]} - 1; i++)); do [[ -v cmd ]] && subcmd=${words[i]} && break for c in "${cmds[@]}"; do [[ ${words[i]} == "$c" ]] && cmd=$c && break done done if [[ ! -v cmd ]]; then COMPREPLY=($(compgen -W '${cmds[@]}' -- "$cur")) return fi # Command/subcommand completions case $cmd in shell) ;; \ exec) _filedir ;; chassis | power | kontronoem | fwum) _ipmitool_singleline_help $1 $cmd ;; lan) case $subcmd in print | set) ;; alert) [[ $prev == alert ]] && COMPREPLY=($(compgen -W 'print set' -- "$cur")) ;; stats) [[ $prev == stats ]] && COMPREPLY=($(compgen -W 'print set' -- "$cur")) ;; *) COMPREPLY=($(compgen -W 'print set alert stats' \ -- "$cur")) ;; esac ;; sdr) case $subcmd in get | info | type | list | entity) ;; elist) COMPREPLY=($(compgen -W 'all full compact event mclog fru generic' -- "$cur")) ;; dump) _filedir ;; fill) case $prev in fill) COMPREPLY=($(compgen -W 'sensors file' -- "$cur")) ;; file) _filedir ;; esac ;; *) COMPREPLY=($(compgen -W 'get info type list elist entity dump fill' -- "$cur")) ;; esac ;; sensor) case $subcmd in list | get | thresh) ;; *) COMPREPLY=($(compgen -W 'list get thresh' -- "$cur")) ;; esac ;; sel) case $subcmd in info | clear | list | elist | delete) ;; add | save | writeraw | readraw) _filedir ;; time) [[ $prev == time ]] && COMPREPLY=($(compgen -W 'get set' -- "$cur")) ;; *) COMPREPLY=($(compgen -W 'info clear list elist delete add get save writeraw readraw time' -- "$cur")) ;; esac ;; user) case $subcmd in summary | list | disable | enable | priv | test) ;; set) [[ $prev == set ]] && COMPREPLY=($(compgen -W 'name password' -- "$cur")) ;; *) COMPREPLY=($(compgen -W 'summary list set disable enable priv test' -- "$cur")) ;; esac ;; set) [[ $prev == set ]] && COMPREPLY=($(compgen -W 'hostname username password privlvl authtype localaddr targetaddr port csv verbose' -- "$cur")) ;; esac } && complete -F _ipmitool ipmitool # ex: filetype=sh bash-completion-2.11/completions/ipsec000066400000000000000000000060701370676621500201230ustar00rootroot00000000000000# Linux ipsec(8) completion (for FreeS/WAN and strongSwan) -*- shell-script -*- # Complete ipsec.conf conn entries. # # Reads a file from stdin in the ipsec.conf(5) format. _ipsec_connections() { local keyword name while read -r keyword name; do if [[ $keyword == [#]* ]]; then continue; fi [[ $keyword == conn && $name != '%default' ]] && COMPREPLY+=("$name") done COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) } _ipsec_freeswan() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W 'auto barf eroute klipsdebug look manual pluto ranbits rsasigkey setup showdefaults showhostkey spi spigrp tncfg whack' -- "$cur")) return fi case ${words[1]} in auto) COMPREPLY=($(compgen -W '--asynchronous --up --add --delete --replace --down --route --unroute --ready --status --rereadsecrets' -- "$cur")) ;; manual) COMPREPLY=($(compgen -W '--up --down --route --unroute --union' \ -- "$cur")) ;; ranbits) COMPREPLY=($(compgen -W '--quick --continuous --bytes' -- "$cur")) ;; setup) COMPREPLY=($(compgen -W '--start --stop --restart' -- "$cur")) ;; *) ;; esac } _ipsec_strongswan() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W 'down irdumm leases listaacerts listacerts listalgs listall listcacerts listcainfos listcards listcerts listcrls listgroups listocsp listocspcerts listpubkeys openac pki pluto pool purgecerts purgecrls purgeike purgeocsp ready reload rereadaacerts rereadacerts rereadall rereadcacerts rereadcrls rereadgroups rereadocspcerts rereadsecrets restart route scdecrypt scencrypt scepclient secrets start starter status statusall stop stroke unroute uci up update version whack --confdir --copyright --directory --help --version --versioncode' -- "$cur")) return fi case ${words[1]} in down | route | status | statusall | unroute | up) local confdir=$(ipsec --confdir) _ipsec_connections <"$confdir/ipsec.conf" ;; list*) COMPREPLY=($(compgen -W '--utc' -- "$cur")) ;; restart | start) COMPREPLY=($(compgen -W '--attach-gdb --auto-update --debug --debug-all --debug-more --nofork' -- "$cur")) ;; pki) COMPREPLY=($(compgen -W '--gen --issue --keyid --print --pub --req --self --signcrl --verify' -- "$cur")) ;; pool) ;; irdumm) _filedir 'rb' ;; *) ;; esac } case "$(ipsec --version 2>/dev/null)" in *strongSwan*) complete -F _ipsec_strongswan ipsec ;; *) complete -F _ipsec_freeswan ipsec ;; esac # ex: filetype=sh bash-completion-2.11/completions/iptables000066400000000000000000000036541370676621500206300ustar00rootroot00000000000000# bash completion for iptables -*- shell-script -*- _iptables() { local cur prev words cword split _init_completion -s || return local table chain='s/^Chain \([^ ]\{1,\}\).*$/\1/p' [[ ${words[*]} =~ [[:space:]]-(t|-table=?)[[:space:]]*([^[:space:]]+) ]] && table="-t ${BASH_REMATCH[2]}" case $prev in -*[AIDRPFXLZ]) COMPREPLY=($(compgen -W '`"$1" $table -nL 2>/dev/null | \ command sed -ne "s/^Chain \([^ ]\{1,\}\).*$/\1/p"`' -- "$cur")) ;; -*t) COMPREPLY=($(compgen -W 'nat filter mangle' -- "$cur")) ;; -j) if [[ $table == "-t filter" || -z $table ]]; then COMPREPLY=($(compgen -W 'ACCEPT DROP LOG ULOG REJECT `"$1" $table -nL 2>/dev/null | command sed -ne "$chain" \ -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \ "$cur")) elif [[ $table == "-t nat" ]]; then COMPREPLY=($(compgen -W 'ACCEPT DROP LOG ULOG REJECT MIRROR SNAT DNAT MASQUERADE `"$1" $table -nL 2>/dev/null | \ command sed -ne "$chain" -e "s/OUTPUT|PREROUTING|POSTROUTING//"`' \ -- "$cur")) elif [[ $table == "-t mangle" ]]; then COMPREPLY=($(compgen -W 'ACCEPT DROP LOG ULOG REJECT MARK TOS `"$1" $table -nL 2>/dev/null | command sed -ne "$chain" \ -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \ "$cur")) fi ;; *) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$("$1" --help 2>&1 | command sed -e "s/^\[\!\]//" | _parse_help -)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi ;; esac } && complete -F _iptables iptables # ex: filetype=sh bash-completion-2.11/completions/ipv6calc000066400000000000000000000020171370676621500205240ustar00rootroot00000000000000# ipv6calc completion -*- shell-script -*- _ipv6calc() { local cur prev words cword split _init_completion -s || return case "$prev" in --debug | -!(-*)d) return ;; --in | --out | --action | -!(-*)[IOA]) # With ipv6calc < 0.73.0, -m does nothing here, so use sed instead. COMPREPLY=($(compgen -W "$($1 "$prev" -h 2>&1 | command sed -ne 's/^[[:space:]]\{1,\}\([^[:space:]:]\{1,\}\)[[:space:]]*:.*/\1/p')" \ -- "$cur")) return ;; --db-geoip | --db-ip2location-ipv4 | --db-ip2location-ipv6) _filedir return ;; --printstart | --printend) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$("$1" -h 2>&1 | command sed -e "s/[][]//g" | _parse_help -)' -- "$cur")) fi } && complete -F _ipv6calc ipv6calc # ex: filetype=sh bash-completion-2.11/completions/iscsiadm000066400000000000000000000035731370676621500206210ustar00rootroot00000000000000# iscsiadm(1) completion -*- shell-script -*- _iscsiadm() { local cur prev words cword split _init_completion -s || return case $prev in --mode | -!(-*)m) COMPREPLY=($(compgen -W 'discovery node session iface fw host' \ -- "$cur")) return ;; --op | -!(-*)o) COMPREPLY=($(compgen -W 'new delete update show' -- "$cur")) return ;; --type | -!(-*)t) COMPREPLY=($(compgen -W 'sendtargets st slp isns fw' -- "$cur")) return ;; --loginall | --logoutall | -!(-*)[LU]) COMPREPLY=($(compgen -W 'all manual automatic' -- "$cur")) return ;; esac $split && return local options if ((cword > 1)); then case ${words[2]} in discovery) options='--help --version --debug --print --interface --type \ --portal --login --op --name --value' ;; node) options='--help --version --debug --print --loginall \ --logoutall--show -T --portal --interface --login \ --logout --rescan --stats --op --name --value' ;; session) options='--help --version --debug --print --sid --logout \ --rescan --stats' ;; iface) options='--help --version --debug --print --interface --op \ --name --value' ;; fw) options='--login' ;; host) options='--print -H' ;; esac else options='--mode' fi COMPREPLY=($(compgen -W "$options" -- "$cur")) } && complete -F _iscsiadm iscsiadm # ex: filetype=sh bash-completion-2.11/completions/isort000066400000000000000000000025141370676621500201570ustar00rootroot00000000000000# isort completion -*- shell-script -*- _isort() { local cur prev words cword _init_completion || return case $prev in --help | --add-import | --builtin | --future | --from-first | -ff | \ --force-grid-wrap | -fgw | --indent | --lines | --lines-after-imports | -lai | \ --lines-between-types | -lbt | --line-ending | -le | --no-lines-before | -nlb | \ --dont-skip | -ns | --thirdparty | --project | --remove-import | --skip | \ --skip-glob | -sg | --settings-path | -sp | --top | --virtual-env | --line-width | \ --wrap-length | -wl | -[habfiloprstw]) return ;; --jobs | -j) COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur")) return ;; --multi-line | -m) COMPREPLY=($(compgen -W '{0..5}' -- "$cur")) return ;; --section-default | -sd) COMPREPLY=($(compgen -W 'FUTURE STDLIB THIRDPARTY FIRSTPARTY LOCALFOLDER' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _filedir '@(py|pyi)' } && complete -F _isort isort # ex: filetype=sh bash-completion-2.11/completions/isql000066400000000000000000000005401370676621500177640ustar00rootroot00000000000000# isql completion -*- shell-script -*- # by Victor Bogado da Silva Lins _isql() { local cur prev words cword _init_completion || return [[ -f $ODBCINI ]] && COMPREPLY=($(command grep "\[$cur" "$ODBCINI" | tr -d \[\])) } && complete -F _isql isql # ex: filetype=sh bash-completion-2.11/completions/iwconfig000066400000000000000000000053201370676621500206220ustar00rootroot00000000000000# iwconfig completion -*- shell-script -*- _iwconfig() { local cur prev words cword _init_completion || return case $prev in mode) COMPREPLY=($(compgen -W 'managed ad-hoc master repeater secondary monitor' -- "$cur")) return ;; essid) COMPREPLY=($(compgen -W 'on off any' -- "$cur")) if [[ -n ${COMP_IWLIST_SCAN:-} ]]; then COMPREPLY+=($(compgen -W \ "$(iwlist ${words[1]} scan | awk -F'\"' '/ESSID/ {print $2}')" -- "$cur")) fi return ;; nwid) COMPREPLY=($(compgen -W 'on off' -- "$cur")) return ;; channel) COMPREPLY=($(compgen -W "$(iwlist ${words[1]} channel | awk '/^[ \t]*Channel/ {print $2}')" -- "$cur")) return ;; freq) COMPREPLY=($(compgen -W "$(iwlist ${words[1]} channel | awk '/^[ \t]*Channel/ {print $4"G"}')" -- "$cur")) return ;; ap) COMPREPLY=($(compgen -W 'on off any' -- "$cur")) if [[ -n ${COMP_IWLIST_SCAN:-} ]]; then COMPREPLY+=($(compgen -W \ "$(iwlist ${words[1]} scan | awk -F ': ' '/Address/ {print $2}')" -- "$cur")) fi return ;; rate) COMPREPLY=($(compgen -W 'auto fixed' -- "$cur")) COMPREPLY+=($(compgen -W \ "$(iwlist ${words[1]} rate | awk '/^[ \t]*[0-9]/ {print $1"M"}')" -- "$cur")) return ;; rts | frag) COMPREPLY=($(compgen -W 'auto fixed off' -- "$cur")) return ;; key | enc) COMPREPLY=($(compgen -W 'off on open restricted' -- "$cur")) return ;; power) COMPREPLY=($(compgen -W 'period timeout off on' -- "$cur")) return ;; txpower) COMPREPLY=($(compgen -W 'off on auto' -- "$cur")) return ;; retry) COMPREPLY=($(compgen -W 'limit lifetime' -- "$cur")) return ;; esac if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --version' -- "$cur")) else _available_interfaces -w fi else COMPREPLY=($(compgen -W 'essid nwid mode freq channel sens mode ap nick rate rts frag enc key power txpower commit' -- "$cur")) fi } && complete -F _iwconfig iwconfig # ex: filetype=sh bash-completion-2.11/completions/iwlist000066400000000000000000000011371370676621500203320ustar00rootroot00000000000000# iwlist completion -*- shell-script -*- _iwlist() { local cur prev words cword _init_completion || return if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --version' -- "$cur")) else _available_interfaces -w fi else COMPREPLY=($(compgen -W 'scan scanning freq frequency channel rate bit bitrate key enc encryption power txpower retry ap accesspoint peers event' -- "$cur")) fi } && complete -F _iwlist iwlist # ex: filetype=sh bash-completion-2.11/completions/iwpriv000066400000000000000000000013251370676621500203360ustar00rootroot00000000000000# iwpriv completion -*- shell-script -*- _iwpriv() { local cur prev words cword _init_completion || return case $prev in roam) COMPREPLY=($(compgen -W 'on off' -- "$cur")) return ;; port) COMPREPLY=($(compgen -W 'ad-hoc managed' -- "$cur")) return ;; esac if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --version' -- "$cur")) else _available_interfaces -w fi else COMPREPLY=($(compgen -W '--all roam port' -- "$cur")) fi } && complete -F _iwpriv iwpriv # ex: filetype=sh bash-completion-2.11/completions/iwspy000066400000000000000000000007361370676621500201760ustar00rootroot00000000000000# iwspy completion -*- shell-script -*- _iwspy() { local cur prev words cword _init_completion || return if ((cword == 1)); then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--help --version' -- "$cur")) else _available_interfaces -w fi else COMPREPLY=($(compgen -W 'setthr getthr off' -- "$cur")) fi } && complete -F _iwspy iwspy # ex: filetype=sh bash-completion-2.11/completions/jar000066400000000000000000000007611370676621500175750ustar00rootroot00000000000000# jar(1) completion -*- shell-script -*- _jar() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W 'c t x u' -- "$cur")) return fi case ${words[1]} in *c*f) _filedir ;; *f) _filedir_xspec unzip ;; *) _filedir ;; esac } && complete -F _jar jar # ex: filetype=sh bash-completion-2.11/completions/jarsigner000066400000000000000000000032411370676621500210010ustar00rootroot00000000000000# jarsigner(1) completion -*- shell-script -*- _jarsigner() { local cur prev words cword _init_completion || return case $prev in -keystore) COMPREPLY=($(compgen -W 'NONE' -- "$cur")) _filedir '@(jks|ks|p12|pfx)' return ;; -storepass | -keypass | -sigfile | -digestalg | -sigalg | -tsacert | -tsapolicyid | \ -tsadigestalg | -altsigner | -altsignerpath | -providerName | -providerClass | \ -providerArg) return ;; -certchain | -tsa) _filedir return ;; -storetype) COMPREPLY=($(compgen -W 'JKS PKCS11 PKCS12' -- "$cur")) return ;; -signedjar) _filedir '@(jar|apk)' return ;; esac # Check if a jar was already given. local i jar=false for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == *.@(jar|apk) && \ ${words[i - 1]} != -signedjar ]]; then jar=true break fi done if ! $jar; then if [[ $cur == -* ]]; then # Documented as "should not be used": -internalsf, -sectionsonly COMPREPLY=($(compgen -W '-keystore -storepass -storetype -keypass -sigfile -signedjar -digestalg -sigalg -verify -verbose -certs -tsa -tsacert -altsigner -altsignerpath -protected -providerName -providerClass -providerArg' \ -- "$cur")) fi _filedir '@(jar|apk)' fi } && complete -F _jarsigner jarsigner # ex: filetype=sh bash-completion-2.11/completions/java000066400000000000000000000214721370676621500177440ustar00rootroot00000000000000# bash completion for java, javac and javadoc -*- shell-script -*- # available path elements completion _java_path() { cur=${cur##*:} _filedir '@(jar|zip)' } # exact classpath determination _java_find_classpath() { local i # search first in current options for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == -@(cp|classpath) ]]; then classpath=${words[i + 1]} break fi done # default to environment [[ ! -v classpath ]] && classpath=${CLASSPATH-} # default to current directory [[ -z $classpath ]] && classpath=. } # exact sourcepath determination _java_find_sourcepath() { local i # search first in current options for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == -sourcepath ]]; then sourcepath=${words[i + 1]} break fi done # default to classpath if [[ ! -v sourcepath ]]; then local classpath _java_find_classpath sourcepath=$classpath fi } # available classes completion _java_classes() { local classpath i # find which classpath to use _java_find_classpath # convert package syntax to path syntax cur=${cur//.//} # parse each classpath element for classes for i in ${classpath//:/ }; do if [[ $i == *.@(jar|zip) && -r $i ]]; then if type zipinfo &>/dev/null; then COMPREPLY+=($(zipinfo -1 "$i" "$cur*" 2>/dev/null | command grep '^[^$]*\.class$')) elif type unzip &>/dev/null; then # Last column, between entries consisting entirely of dashes COMPREPLY+=($(unzip -lq "$i" "$cur*" 2>/dev/null | awk '$NF ~ /^-+$/ { flag=!flag; next }; flag && $NF ~ /^[^$]*\.class/ { print $NF }')) elif type jar &>/dev/null; then COMPREPLY+=($(jar tf "$i" "$cur" | command grep '^[^$]*\.class$')) fi elif [[ -d $i ]]; then COMPREPLY+=( $(compgen -d -- "$i/$cur" | command sed -e "s|^$i/\(.*\)|\1.|") $(compgen -f -X '!*.class' -- "$i/$cur" | command sed -e '/\$/d' -e "s|^$i/||") ) [[ ${COMPREPLY-} == *.class ]] || compopt -o nospace # FIXME: if we have foo.class and foo/, the completion # returns "foo/"... how to give precedence to files # over directories? fi done if ((${#COMPREPLY[@]} != 0)); then # remove class extension COMPREPLY=(${COMPREPLY[@]%.class}) # convert path syntax to package syntax COMPREPLY=(${COMPREPLY[@]//\//.}) fi } # available packages completion _java_packages() { local sourcepath i # find which sourcepath to use _java_find_sourcepath # convert package syntax to path syntax cur=${cur//.//} # parse each sourcepath element for packages for i in ${sourcepath//:/ }; do if [[ -d $i ]]; then COMPREPLY+=($(command ls -F -d $i/$cur* 2>/dev/null | command sed -e 's|^'$i'/||')) fi done if ((${#COMPREPLY[@]} != 0)); then # keep only packages COMPREPLY=($(tr " " "\n" <<<"${COMPREPLY[@]}" | command grep "/$")) # remove packages extension COMPREPLY=(${COMPREPLY[@]%/}) # convert path syntax to package syntax cur="${COMPREPLY[*]//\//.}" fi } # java completion # _java() { local cur prev words cword _init_completion -n : || return local i for ((i = 1; i < cword; i++)); do case ${words[i]} in -cp | -classpath) ((i++)) # skip the classpath string. ;; -*) # this is an option, not a class/jarfile name. ;; *) # once we've seen a class, just do filename completion _filedir return ;; esac done case $cur in # standard option completions -verbose:*) COMPREPLY=($(compgen -W 'class gc jni' -- "${cur#*:}")) return ;; -javaagent:*) cur=${cur#*:} _filedir '@(jar|zip)' return ;; -agentpath:*) cur=${cur#*:} _filedir so return ;; # various non-standard option completions -splash:*) cur=${cur#*:} _filedir '@(gif|jp?(e)g|png)' return ;; -Xbootclasspath*:*) _java_path return ;; -Xcheck:*) COMPREPLY=($(compgen -W 'jni' -- "${cur#*:}")) return ;; -Xgc:*) COMPREPLY=($(compgen -W 'singlecon gencon singlepar genpar' \ -- "${cur#*:}")) return ;; -Xgcprio:*) COMPREPLY=($(compgen -W 'throughput pausetime deterministic' \ -- "${cur#*:}")) return ;; -Xloggc:* | -Xverboselog:*) cur=${cur#*:} _filedir return ;; -Xshare:*) COMPREPLY=($(compgen -W 'auto off on' -- "${cur#*:}")) return ;; -Xverbose:*) COMPREPLY=($(compgen -W 'memory load jni cpuinfo codegen opt gcpause gcreport' -- "${cur#*:}")) return ;; -Xverify:*) COMPREPLY=($(compgen -W 'all none remote' -- "${cur#*:}")) return ;; # the rest that we have no completions for -D* | -*:*) return ;; esac case $prev in -cp | -classpath) _java_path return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) [[ $cur == -X* ]] && COMPREPLY+=($(compgen -W '$(_parse_help "$1" -X)' -- "$cur")) else if [[ $prev == -jar ]]; then # jar file completion _filedir '[jw]ar' else # classes completion _java_classes fi fi [[ ${COMPREPLY-} == -*[:=] ]] && compopt -o nospace __ltrim_colon_completions "$cur" } && complete -F _java java _javadoc() { local cur prev words cword _init_completion || return case $prev in -overview | -helpfile) _filedir '?(x)htm?(l)' return ;; -doclet | -exclude | -subpackages | -source | -locale | -encoding | -windowtitle | \ -doctitle | -header | -footer | -top | -bottom | -group | -noqualifier | -tag | \ -charset | -sourcetab | -docencoding) return ;; -stylesheetfile) _filedir css return ;; -d | -link | -linkoffline) _filedir -d return ;; -classpath | -cp | -bootclasspath | -docletpath | -sourcepath | -extdirs | \ -excludedocfilessubdir) _java_path return ;; esac # -linkoffline takes two arguments if [[ $cword -gt 2 && ${words[cword - 2]} == -linkoffline ]]; then _filedir -d return fi if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) else # source files completion _filedir java # packages completion _java_packages fi } && complete -F _javadoc javadoc _javac() { local cur prev words cword _init_completion -n : || return case $prev in -d) _filedir -d return ;; -cp | -classpath | -bootclasspath | -sourcepath | -extdirs) _java_path return ;; esac if [[ $cur == -+([a-zA-Z0-9-_]):* ]]; then # Parse required options from -foo:{bar,quux,baz} local helpopt=-help [[ $cur == -X* ]] && helpopt=-X # For some reason there may be -g:none AND -g:{lines,source,vars}; # convert the none case to the curly brace format so it parses like # the others. local opts=$("$1" $helpopt 2>&1 | command sed -e 's/-g:none/-g:{none}/' -ne \ "s/^[[:space:]]*${cur%%:*}:{\([^}]\{1,\}\)}.*/\1/p") COMPREPLY=($(compgen -W "${opts//,/ }" -- "${cur#*:}")) return fi if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) [[ $cur == -X* ]] && COMPREPLY+=($(compgen -W '$(_parse_help "$1" -X)' -- "$cur")) else # source files completion _filedir java fi [[ ${COMPREPLY-} == -*[:=] ]] && compopt -o nospace __ltrim_colon_completions "$cur" } && complete -F _javac javac # ex: filetype=sh bash-completion-2.11/completions/javaws000066400000000000000000000014331370676621500203110ustar00rootroot00000000000000# javaws(1) completion -*- shell-script -*- _javaws() { local cur prev words cword _init_completion -n = || return case $prev in -help | -license | -about | -viewer | -arg | -param | -property | -update | -umask) return ;; -basedir | -codebase) _filedir -d return ;; -uninstall | -import) _filedir jnlp return ;; esac if [[ $cur == *= ]]; then return elif [[ $cur == -* ]]; then COMPREPLY=($(compgen -W "$(_parse_help "$1" -help) " -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir jnlp } && complete -F _javaws javaws # ex: filetype=sh bash-completion-2.11/completions/jpegoptim000066400000000000000000000015731370676621500210210ustar00rootroot00000000000000# jpegoptim(1) completion -*- shell-script -*- _jpegoptim() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | -!(-*)[hV]*) return ;; --dest | -!(-*)d) _filedir -d return ;; --max | --threshold | -!(-*)[mT]) COMPREPLY=($(compgen -W '{0..100}' -- "$cur")) return ;; --size | -!(-*)S) COMPREPLY=($(compgen -W '{1..99}%' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir 'jp?(e)g' } && complete -F _jpegoptim jpegoptim # ex: filetype=sh bash-completion-2.11/completions/jps000066400000000000000000000011321370676621500176060ustar00rootroot00000000000000# jps(1) completion -*- shell-script -*- _jps() { local cur prev words cword _init_completion || return case $prev in -J* | -help) return ;; esac if [[ $cur == -* ]]; then # Not using _parse_usage because output has [-help] which does not # mean -h, -e, -l, -p... COMPREPLY=($(compgen -W "-q -m -l -v -V -J -help" -- "$cur")) [[ ${COMPREPLY-} == -J* ]] && compopt -o nospace else _known_hosts_real -- "$cur" fi } && complete -F _jps jps # ex: filetype=sh bash-completion-2.11/completions/jq000066400000000000000000000023421370676621500174300ustar00rootroot00000000000000# jq(1) completion -*- shell-script -*- _jq() { local cur prev words cword _init_completion || return case $prev in --help | --version | --arg | --argjson | --slurpfile | --argfile) return ;; --indent) COMPREPLY=($(compgen -W '{1..8}' -- "$cur")) return ;; --from-file | --run-tests | -!(-*)f) _filedir return ;; -!(-*)L) _filedir -d return ;; esac ((cword > 2)) && case ${words[cword - 2]} in --arg | --argjson) return ;; --slurpfile | --argfile) _filedir json return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi local args # TODO: DTRT with args taking 2 options _count_args "" "@(--arg|--arg?(json|file)|--?(slurp|from-)file|--indent|--run-tests|-!(-*)[fL])" # 1st arg is filter ((args == 1)) && return # 2... are input files _filedir json } && complete -F _jq jq # ex: filetype=sh bash-completion-2.11/completions/jshint000066400000000000000000000016071370676621500203200ustar00rootroot00000000000000# bash completion for jshint -*- shell-script -*- _jshint() { local cur prev words cword split _init_completion -s || return case $prev in -v | --version | -h | --help | --exclude | --filename | -e | --extra-ext) return ;; -c | --config) _filedir return ;; --reporter) COMPREPLY=($(compgen -W "jslint checkstyle unix" -- "$cur")) return ;; --extract) COMPREPLY=($(compgen -W "auto always never" -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir js } && complete -F _jshint jshint # ex: filetype=sh bash-completion-2.11/completions/json_xs000066400000000000000000000015371370676621500205060ustar00rootroot00000000000000# json_xs completion -*- shell-script -*- _json_xs() { local cur prev words cword _init_completion || return case $prev in -*f) COMPREPLY=($(compgen -W 'json cbor storable storable-file bencode clzf eval yaml string none' -- "$cur")) return ;; -*t) COMPREPLY=($(compgen -W 'json json-utf-8 json-pretty json-utf-16le json-utf-16be json-utf-32le json-utf-32be cbor storable storable-file bencode clzf yaml dump dumper string none' -- "$cur")) return ;; -*e) return ;; esac [[ $cur == -* ]] && COMPREPLY=($(compgen -W '$(_parse_usage "$1") -f' -- "$cur")) } && complete -F _json_xs json_xs # ex: filetype=sh bash-completion-2.11/completions/jsonschema000066400000000000000000000012021370676621500211420ustar00rootroot00000000000000# bash completion for jsonschema -*- shell-script -*- _jsonschema() { local cur prev words cword _init_completion || return case $prev in --help | --error-format | --validator | -[hFV]) return ;; --instance | -i) _filedir json return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi local args _count_args "" "-*" ((args == 1)) || return _filedir '@(json|schema)' } && complete -F _jsonschema jsonschema # ex: filetype=sh bash-completion-2.11/completions/k3b000066400000000000000000000022421370676621500174740ustar00rootroot00000000000000# bash completion for k3b -*- shell-script -*- _k3b() { local cur prev words cword _init_completion || return case $prev in --help* | --author | -v | --version | --license | --lang) return ;; --datacd | --audiocd | --videocd | --mixedcd | --emovixcd | --videodvd) _filedir return ;; --copydvd | --formatdvd | --videodvdrip) _dvd_devices return ;; --copycd | --erasecd | --cddarip | --videocdrip) _cd_devices _dvd_devices return ;; --cdimage | --image) _filedir '@(cue|iso|toc)' return ;; --dvdimage) _filedir iso return ;; --ao) COMPREPLY=($(compgen -W 'alsa arts' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W "$(_parse_help "$1")" -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace else _filedir fi } && complete -F _k3b k3b # ex: filetype=sh bash-completion-2.11/completions/kcov000066400000000000000000000033401370676621500177570ustar00rootroot00000000000000# kcov(1) completion -*- shell-script -*- _kcov() { local cur prev words cword split _init_completion -s -n : || return case "$prev" in --pid | -p) _pids return ;; --sort-type | -s) COMPREPLY=($(compgen -W 'filename percent reverse lines uncovered' -- "$cur")) return ;; --include-path | --exclude-path) _filedir return ;; --replace-src-path) if [[ $cur == ?*:* ]]; then cur="${cur##*:}" _filedir else _filedir compopt -o nospace fi return ;; --limits | -l) if [[ $cur == ?*,* ]]; then prev="${cur%,*}" cur="${cur##*,}" COMPREPLY=($(compgen -W "{0..100}" -- "$cur")) ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prev,}) else COMPREPLY=($(compgen -W "{0..100}" -- "$cur")) ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/%/,}) compopt -o nospace fi return ;; --title | -t | --include-pattern | --exclude-pattern | --path-strip-level) # argument required but no completions available return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _kcov kcov # ex: filetype=sh bash-completion-2.11/completions/kill000066400000000000000000000011011370676621500177410ustar00rootroot00000000000000# kill(1) completion -*- shell-script -*- _kill() { local cur prev words cword _init_completion || return case $prev in -s) _signals return ;; -l) return ;; esac if [[ $cword -eq 1 && $cur == -* ]]; then # return list of available signals _signals - COMPREPLY+=($(compgen -W "-s -l" -- "$cur")) else # return list of available PIDs _pids fi } && complete -F _kill kill # ex: filetype=sh bash-completion-2.11/completions/killall000066400000000000000000000014201370676621500204360ustar00rootroot00000000000000# killall(1) completion -*- shell-script -*- [[ $OSTYPE == *@(linux|freebsd|darwin)* ]] || return 1 _killall() { local cur prev words cword split _init_completion -s || return case $prev in --context | --older-than | --younger-than | --version | -!(-*)@([Zoy]|V*)) return ;; --signal | -!(-*)s) _signals return ;; --user | -!(-*)u) _allowed_users return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) ((cword == 1)) && _signals - return fi _pnames } && complete -F _killall killall # ex: filetype=sh bash-completion-2.11/completions/kldload000066400000000000000000000007311370676621500204300ustar00rootroot00000000000000# FreeBSD kldload completion -*- shell-script -*- [[ $OSTYPE == *freebsd* ]] || return 1 _kldload() { local cur prev words cword _init_completion || return local moddir=/modules/ [[ -d $moddir ]] || moddir=/boot/kernel/ compopt -o filenames COMPREPLY=($(compgen -f "$moddir$cur")) COMPREPLY=(${COMPREPLY[@]#$moddir}) COMPREPLY=(${COMPREPLY[@]%.ko}) } && complete -F _kldload kldload # ex: filetype=sh bash-completion-2.11/completions/kldunload000066400000000000000000000005641370676621500207770ustar00rootroot00000000000000# FreeBSD kldunload completion -*- shell-script -*- [[ $OSTYPE == *freebsd* ]] || return 1 _kldunload() { local cur prev words cword _init_completion || return COMPREPLY=($(compgen -W '$(kldstat)' -X 'kernel' -X '!*.ko' -- "$cur")) COMPREPLY=(${COMPREPLY[@]%.ko}) } && complete -F _kldunload kldunload # ex: filetype=sh bash-completion-2.11/completions/koji000066400000000000000000000143221370676621500177530ustar00rootroot00000000000000# koji completion -*- shell-script -*- _koji_search() { COMPREPLY+=($(compgen -W \ '$("$1" -q search $2 "$cur*" 2>/dev/null)' -- "$cur")) } _koji_build() { _koji_search "$1" build } _koji_package() { _koji_search "$1" package } _koji_user() { _koji_search "$1" user } _koji_tag() { COMPREPLY+=($(compgen -W '$("$1" -q list-tags 2>/dev/null)' -- "$cur")) } _koji_target() { COMPREPLY+=($(compgen -W '$("$1" -q list-targets 2>/dev/null | awk "{ print \$1 }")' -- "$cur")) } _koji() { local cur prev words cword split _init_completion -s || return local commandix command for ((commandix = 1; commandix < cword; commandix++)); do if [[ ${words[commandix]} != -* ]]; then command=${words[commandix]} break fi done case $prev in --help | --help-commands | -!(-*)h*) return ;; --config | --keytab | -!(-*)[co]) _filedir return ;; --runas | --user | --editor | --by) _koji_user "$1" return ;; --authtype) COMPREPLY=($(compgen -W 'noauth ssl password kerberos' -- "$cur")) return ;; --topdir) _filedir -d return ;; --type) case ${command-} in latest-pkg | list-tagged) COMPREPLY=($(compgen -W 'maven' -- "$cur")) ;; esac return ;; --name) case ${command-} in list-targets) _koji_target "$1" ;; esac return ;; --owner) _koji_user "$1" return ;; --tag | --latestfrom) _koji_tag "$1" return ;; --package) _koji_package "$1" return ;; --build) _koji_build "$1" return ;; --build-target) _koji_target "$1" return ;; esac $split && return if [[ -v command ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W \ '$(_parse_help "$1" "$command --help")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi # How many'th non-option arg (1-based) for $command are we completing? local i nth=1 for ((i = commandix + 1; i < cword; i++)); do [[ ${words[i]} == -* ]] || ((nth++)) done case $command in build | maven-build | win-build) case $nth in 1) _koji_target "$1" ;; 2) _filedir src.rpm ;; esac ;; cancel) _koji_build "$1" ;; chain-build) case $nth in 1) _koji_target "$1" ;; esac ;; download-build) case $nth in 1) _koji_build "$1" ;; esac ;; import-comps) case $nth in 1) _filedir xml ;; 2) _koji_tag "$1" ;; esac ;; latest-by-tag) _koji_package "$1" ;; latest-pkg | list-groups | list-tag-inheritance | show-groups) case $nth in 1) _koji_tag "$1" ;; esac ;; list-tagged) case $nth in 1) _koji_tag "$1" ;; 2) _koji_package "$1" ;; esac ;; list-untagged) case $nth in 1) _koji_package "$1" ;; esac ;; move-pkg) case $nth in 1 | 2) _koji_tag "$1" ;; *) _koji_package "$1" ;; esac ;; search) case $nth in 1) COMPREPLY=($(compgen -W 'package build tag target user host rpm' -- "$cur")) ;; esac ;; tag-pkg | untag-pkg) case $nth in 1) _koji_tag "$1" ;; *) _koji_package "$1" ;; esac ;; taginfo) _koji_tag "$1" ;; wait-repo) case $nth in 1) for ((i = commandix + 1; i < cword; i++)); do if [[ ${words[i]} == --target ]]; then _koji_target "$1" return fi done _koji_tag "$1" ;; esac ;; esac return fi if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace elif [[ ! -v command ]]; then COMPREPLY=($(compgen -W '$("$1" --help-commands 2>/dev/null | \ awk "/^( +|\t)/ { print \$1 }")' -- "$cur")) fi } && complete -F _koji koji arm-koji ppc-koji s390-koji sparc-koji # ex: filetype=sh bash-completion-2.11/completions/ktutil000066400000000000000000000056731370676621500203440ustar00rootroot00000000000000# ktutil completion -*- shell-script -*- _heimdal_principals() { COMPREPLY=($(compgen -W "$(kadmin -l dump 2>/dev/null | awk '{print $1}')" -- "$cur")) } _heimdal_realms() { COMPREPLY=($(compgen -W "$(kadmin -l dump 2>/dev/null | awk '{print $1}' | awk -F@ '{print $2}')" -- "$cur")) } _heimdal_encodings() { COMPREPLY=($(compgen -W 'des-cbc-mcrc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96' -- "$cur")) } _ktutil() { local cur prev words cword split _init_completion -s || return local command commands i options case $prev in -p | --principal) _heimdal_principals return ;; -e | --enctype) _heimdal_encodings return ;; -a | --admin-server) _known_hosts_real -- "$cur" return ;; -r | --realm) _heimdal_realms return ;; -s | -k | --srvtab | --keytab) _filedir return ;; esac $split && return commands='add change copy get list remove rename purge srvconvert srv2keytab srvcreate key2srvtab' for ((i = 1; i < cword; i++)); do case ${words[i]} in -k | --keytab) ((i++)) ;; -*) ;; *) command=${words[i]} break ;; esac done if [[ $cur == -* ]]; then case ${command-} in add) options='-p --principal -V -e --enctype -w --password -r --random -s --no-salt -h --hex' ;; change) options='-r --realm -a --admin-server -s --server-port' ;; get) options='-p --principal -e --enctype -r --realm -a --admin-server -s server --server-port' ;; list) options='--keys --timestamp' ;; remove) options='-p --principal -V --kvno -e --enctype' ;; purge) options='--age' ;; srv2keytab | key2srvtab) options='-s --srvtab' ;; *) options='-k --keytab -v --verbose --version -v --help' ;; esac COMPREPLY=($(compgen -W "$options" -- "$cur")) else case ${command-} in copy) _filedir ;; get) _heimdal_principals ;; rename) _heimdal_principals ;; *) COMPREPLY=($(compgen -W "$commands" -- "$cur")) ;; esac fi } && complete -F _ktutil ktutil # ex: filetype=sh bash-completion-2.11/completions/larch000066400000000000000000000036751370676621500201210ustar00rootroot00000000000000# larch(1) completion -*- shell-script -*- # by Alex Shinn _larch() { local cur prev words cword _init_completion || return if [[ $cword -eq 1 || $prev == -* ]]; then COMPREPLY=($(compgen -W ' \ my-id my-default-archive register-archive whereis-archive archives \ init-tree tree-root tree-version set-tree-version inventory \ tagging-method tree-lint missing-tags add delete \ move explicit-default set-manifest manifest check-manifest mkpatch \ dopatch patch-report empty-patch make-archive make-category \ make-branch make-version categories branches versions revisions \ cat-archive-log archive-cache-revision archive-cached-revisions \ archive-uncache-revision category-readme branch-readme \ version-readme make-log logs add-log log-ls cat-log \ log-header-field changelog log-for-merge merge-points \ new-on-branch import commit get get-patch lock-branch \ lock-revision push-mirror build-config update-config replay-config \ record-config show-config config-history update replay delta-patch \ star-merge tag prepare-branch finish-branch join-branch \ whats-missing what-changed file-diffs pristines lock-pristine \ my-revision-library library-find library-add library-remove \ library-archives library-categories library-branches \ library-versions library-revisions library-log library-file \ touched-files-prereqs patch-set-web update-distributions \ distribution-name notify my-notifier mail-new-categories \ mail-new-branches mail-new-versions mail-new-revisions \ notify-library notify-browser push-new-revisions sendmail-mailx' \ "$cur")) fi } && complete -F _larch -o default larch # ex: filetype=sh bash-completion-2.11/completions/lastlog000066400000000000000000000011101370676621500204530ustar00rootroot00000000000000# lastlog(8) completion -*- shell-script -*- _lastlog() { local cur prev words cword split _init_completion -s || return case $prev in --before | --help | --time | -!(-*)@([bt]|h*)) return ;; --user | -!(-*)u) COMPREPLY=($(compgen -u -- "$cur")) return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _lastlog lastlog # ex: filetype=sh bash-completion-2.11/completions/ldapsearch000066400000000000000000000105541370676621500211300ustar00rootroot00000000000000# bash completion for openldap -*- shell-script -*- _ldap_uris() { COMPREPLY=($(compgen -W 'ldap:// ldaps://' -- "$cur")) } _ldap_protocols() { COMPREPLY=($(compgen -W '2 3' -- "$cur")) } _ldapsearch() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*T) _filedir -d return ;; -*[fy]) _filedir return ;; -*s) COMPREPLY=($(compgen -W 'base one sub children' -- "$cur")) return ;; -*a) COMPREPLY=($(compgen -W 'never always search find' -- "$cur")) return ;; -*P) _ldap_protocols return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur")) fi } && complete -F _ldapsearch ldapsearch _ldapaddmodify() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*[Sfy]) _filedir return ;; -*P) _ldap_protocols return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur")) fi } && complete -F _ldapaddmodify ldapadd ldapmodify _ldapdelete() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*[fy]) _filedir return ;; -*P) _ldap_protocols return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur")) fi } && complete -F _ldapdelete ldapdelete _ldapcompare() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*y) _filedir return ;; -*P) _ldap_protocols return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur")) fi } && complete -F _ldapcompare ldapcompare _ldapmodrdn() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*[fy]) _filedir return ;; -*P) _ldap_protocols return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -ZZ -MM' -- "$cur")) fi } && complete -F _ldapmodrdn ldapmodrdn _ldapwhoami() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*[fy]) _filedir return ;; -*P) _ldap_protocols return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur")) fi } && complete -F _ldapwhoami ldapwhoami _ldappasswd() { local cur prev words cword _init_completion || return case $prev in -*h) _known_hosts_real -- "$cur" return ;; -*H) _ldap_uris return ;; -*[tTy]) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur")) fi } && complete -F _ldappasswd ldappasswd # ex: filetype=sh bash-completion-2.11/completions/ldapvi000066400000000000000000000025331370676621500202770ustar00rootroot00000000000000# bash completion for ldapvi -*- shell-script -*- _ldapvi() { local cur prev words cword _init_completion || return case $prev in --host | -!(-*)h) _known_hosts_real -- "$cur" return ;; --sasl-mech | -!(-*)Y) COMPREPLY=($(compgen -W 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN ANONYMOUS' -- "$cur")) return ;; --bind) COMPREPLY=($(compgen -W 'simple sasl' -- "$cur")) return ;; --bind-dialog) COMPREPLY=($(compgen -W 'never auto always' -- "$cur")) return ;; --scope) COMPREPLY=($(compgen -W 'base one sub' -- "$cur")) return ;; --deref) COMPREPLY=($(compgen -W 'never searching finding always' \ -- "$cur")) return ;; --encoding) COMPREPLY=($(compgen -W 'ASCII UTF-8 binary' -- "$cur")) return ;; --tls) COMPREPLY=($(compgen -W 'never allow try strict' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _ldapvi ldapvi # ex: filetype=sh bash-completion-2.11/completions/lftp000066400000000000000000000011511370676621500177600ustar00rootroot00000000000000# lftp(1) completion -*- shell-script -*- _lftp() { local cur prev words cword _init_completion || return case $prev in -!(-*)f) _filedir return ;; --help | --version | -!(-*)[chveups]) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi COMPREPLY=($(compgen -W '$("$1" -c "bookmark list" 2>/dev/null)' -- "$cur")) _known_hosts_real -- "$cur" } && complete -F _lftp lftp # ex: filetype=sh bash-completion-2.11/completions/lftpget000066400000000000000000000004621370676621500204640ustar00rootroot00000000000000# lftpget(1) completion -*- shell-script -*- _lftpget() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-c -d -v' -- "$cur")) fi } && complete -F _lftpget lftpget # ex: filetype=sh bash-completion-2.11/completions/lilo000066400000000000000000000031251370676621500177550ustar00rootroot00000000000000# bash completion for lilo(8) -*- shell-script -*- _lilo_labels() { COMPREPLY=($(compgen -W "$(awk -F= '$1 ~ /^[ \t]*label$/ {print $2}' \ ${1:-/etc/lilo.conf} 2>/dev/null | command sed -e 's/\"//g')" \ -- "$cur")) } _lilo() { local cur prev words cword _init_completion || return case $prev in -C | -i | -m | -s | -S) _filedir return ;; -r) _filedir -d return ;; -I | -D | -R) # label completion local i conf for i in "${!words[@]}"; do if [[ ${words[i]} == -C ]]; then conf=${words[i + 1]} break fi done _lilo_labels $conf return ;; -A | -b | -M | -u | -U) # device completion cur=${cur:=/dev/} _filedir return ;; -T) # topic completion COMPREPLY=($(compgen -W 'help ChRul EBDA geom geom= table= video' -- "$cur")) return ;; -B) _filedir bmp return ;; -E) _filedir '@(bmp|dat)' return ;; esac if [[ $cur == -* ]]; then # relevant options completion COMPREPLY=($(compgen -W '-A -B -b -c -C -d -E -f -g -i -I -l -L -m -M -p -P -q -r -R -s -S -t -T -u -U -v -V -w -x -z' -- "$cur")) fi } && complete -F _lilo lilo # ex: filetype=sh bash-completion-2.11/completions/links000066400000000000000000000063271370676621500201450ustar00rootroot00000000000000# bash completion for links -*- shell-script -*- _links() { local cur prev words cword _init_completion -n : || return case $prev in -html-t-text-color | -html-t-link-color) COMPREPLY=($(compgen -W '{0..15}' -- "$cur")) return ;; -http.fake-firefox | -html-[gt]-ignore-document-color) COMPREPLY=($(compgen -W '0 1' -- "$cur")) return ;; --help | -help | -mode | -display | -source | -dump | -width | -max-connections | \ -max-connections-to-host | -retries | -receive-timeout | \ -unrestartable-receive-timeout | -*-size | -*-proxy | \ -append-text-to-dns-lookups | -ssl.client-cert-passwd | -http.fake-* | \ -http.extra-header | -ftp.anonymous-passwd | -*-color | -*-gamma | \ -bfu-aspect | -html-image-scale | -html-margin) return ;; -lookup) _known_hosts_real -- "$cur" return ;; -driver) local drivers=$("$1" -driver foo 2>&1 | command sed -ne '$!d' -e '/^[a-z0-9, ]\{1,\}$/s/,/ /gp') [[ $drivers ]] || drivers='x svgalib fb directfb pmshell atheos' COMPREPLY=($(compgen -W "$drivers" -- "$cur")) return ;; -codepage | -bookmarks-codepage | -http-assume-codepage) _xfunc iconv _iconv_charsets return ;; -download-dir) _filedir -d return ;; -bind-address) _ip_addresses return ;; -bind-address-ipv6) _ip_addresses -6 __ltrim_colon_completions "$cur" return ;; -async-dns | -download-utime | -aggressive-cache | -only-proxies | \ -http-bugs.* | -http.do-not-track | -ftp.use-* | -ftp.fast | -ftp.set-iptos | \ -smb.allow-hyperlinks-to-smb | -save-url-history | -dither-letters | \ -dither-images | -overwrite-instead-of-scroll | -html-*) COMPREPLY=($(compgen -W '0 1' -- "$cur")) return ;; -address-preference | -http.referer) COMPREPLY=($(compgen -W '{0..4}' -- "$cur")) return ;; -ssl-certificates | -display-optimize | -gamma-correction) COMPREPLY=($(compgen -W '{0..2}' -- "$cur")) return ;; -ssl.client-cert-key) _filedir '@(key|pem)' return ;; -ssl.client-cert-crt) _filedir '@(c?(e)rt|cer|pem|der)' return ;; -bookmarks-file) _filedir html return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" | command grep -vF -- "->")' -- "$cur")) return fi local dir for dir in .links .links2; do if [[ -r ~/$dir/links.his ]]; then COMPREPLY+=($(compgen -W '$(cat ~/$dir/links.his)' -- "$cur")) __ltrim_colon_completions "$cur" fi done _filedir '@(htm|html)' } && complete -F _links links links2 # ex: filetype=sh bash-completion-2.11/completions/lintian000066400000000000000000000123731370676621500204610ustar00rootroot00000000000000# bash completion for lintian(1) and lintian-info(1) -*- shell-script -*- _lintian_tags() { local match search tags tags=$(awk '/^Tag/ { print $2 }' /usr/share/lintian/checks/*.desc) if [[ $cur == *, ]]; then search=${cur//,/ } for item in $search; do match=$(command grep -nE "^Tag: $item$" \ /usr/share/lintian/checks/*.desc | cut -d: -f1) tags=$(command sed -e "s/\<$item\>//g" <<<$tags) done COMPREPLY+=($(compgen -W "$tags")) elif [[ $cur == *,* ]]; then COMPREPLY+=($(compgen -P "${cur%,*}," -W "$tags" -- "${cur##*,}")) else COMPREPLY+=($(compgen -W "$tags" -- "$cur")) fi } _lintian_checks() { local match search todisable checks checks=$(awk '/^(Check-Script|Abbrev)/ { print $2 }' \ /usr/share/lintian/checks/*.desc) if [[ $cur == *, ]]; then search=${cur//,/ } for item in $search; do match=$(command grep -nE "^(Check-Script|Abbrev): $item$" \ /usr/share/lintian/checks/*.desc | cut -d: -f1) todisable=$(awk '/^(Check-Script|Abbrev)/ { print $2 }' $match) for name in $todisable; do checks=$(command sed -e "s/\<$name\>//g" <<<$checks) done done COMPREPLY+=($(compgen -W "$checks")) elif [[ $cur == *,* ]]; then COMPREPLY+=($(compgen -P "${cur%,*}," -W "$checks" -- "${cur##*,}")) else COMPREPLY+=($(compgen -W "$checks" -- "$cur")) fi } _lintian_infos() { local match search infos infos=$(awk '/^Collector/ { print $2 }' \ /usr/share/lintian/collection/*.desc) if [[ $cur == *, ]]; then search=${cur//,/ } for item in $search; do match=$(command grep -nE "^Collector: $item$" \ /usr/share/lintian/collection/*.desc | cut -d: -f1) infos=$(command sed -e "s/\<$item\>//g" <<<$infos) done COMPREPLY+=($(compgen -W "$infos")) elif [[ $cur == *,* ]]; then COMPREPLY+=($(compgen -P "${cur%,*}," -W "$infos" -- "${cur##*,}")) else COMPREPLY+=($(compgen -W "$infos" -- "$cur")) fi } _lintian() { local cur prev words cword _init_completion || return local lint_actions general_opts behaviour_opts configuration_opts lint_actions="--setup-lab --remove-lab --check --check-part --tags --tags-from-file --ftp-master-rejects --dont-check-part --unpack --remove" general_opts="--help --version --print-version --verbose --debug --quiet" behaviour_opts="--info --display-info --display-experimental --pedantic --display-level --suppress-tags --suppress-tags-from-file --no-override --show-overrides --color --unpack-info --md5sums --checksums --allow-root --fail-on-warnings --keep-lab" configuration_opts="--cfg --lab --archivedir --dist --area --section --arch --root" if [[ $prev == -* ]]; then case $prev in -C | --check-part | -X | --dont-check-part) _lintian_checks ;; -T | --tags | --suppress-tags) _lintian_tags ;; --tags-from-file | --suppress-tags-from-file | --cfg | -p | \ --packages-file) _filedir ;; --lab | --archivedir | --dist | --root) _filedir -d ;; --color) COMPREPLY=($(compgen -W "never always auto html" -- "$cur")) ;; -U | --unpack-info) _lintian_infos ;; --area | --section) COMPREPLY=($(compgen -W "main contrib non-free" -- "$cur")) ;; --arch) ;; esac fi case "$cur" in --*) COMPREPLY=($(compgen -W "$lint_actions $general_opts $behaviour_opts $configuration_opts" -- "$cur")) ;; *,) # If we're here, the user is trying to complete on # --action tag,tag, # Only few actions permit that, re-complete them now. case "$prev" in -C | --check-part | -X | --dont-check-part) _lintian_checks ;; -T | --tags | --suppress-tags) _lintian_tags ;; -U | --unpack-info) _lintian_infos ;; esac ;; *) # in Ubuntu, dbgsym packages end in .ddeb, lintian >= 2.57.0 groks _filedir '@(?(u|d)deb|changes|dsc|buildinfo)' ;; esac return 0 } && complete -F _lintian lintian _lintian_info() { local cur prev words cword _init_completion || return case "$prev" in --help | --profile) return ;; -t | --tags) _lintian_tags return ;; --include-dir) _filedir -d return ;; esac case "$cur" in --*) COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) ;; *) _filedir ;; esac return 0 } && complete -F _lintian_info lintian-info # ex: filetype=sh bash-completion-2.11/completions/lisp000066400000000000000000000012011370676621500177560ustar00rootroot00000000000000# -*- shell-script -*- # bash programmable completion for various Common Lisp implementations by # Nikodemus Siivola _lisp() { local cur prev words cword _init_completion || return # completing an option (may or may not be separated by a space) if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-core -lib -batch -quit -edit -eval -init -dynamic-space-size -hinit -noinit -nositeinit -load -slave' \ -- "$cur")) else _filedir fi } && complete -F _lisp -o default lisp # ex: filetype=sh bash-completion-2.11/completions/list_admins000066400000000000000000000006011370676621500213200ustar00rootroot00000000000000# mailman list_admins completion -*- shell-script -*- _list_admins() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--all-vhost --all --help' -- "$cur")) else _xfunc list_lists _mailman_lists fi } && complete -F _list_admins list_admins # ex: filetype=sh bash-completion-2.11/completions/list_lists000066400000000000000000000007171370676621500212130ustar00rootroot00000000000000# mailman list_lists completion -*- shell-script -*- _mailman_lists() { COMPREPLY=($(compgen -W '$(list_lists -b 2>/dev/null)' -- "$cur")) } _list_lists() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--advertised --virtual-host-overview --bare --help' -- "$cur")) fi } && complete -F _list_lists list_lists # ex: filetype=sh bash-completion-2.11/completions/list_members000066400000000000000000000015261370676621500215060ustar00rootroot00000000000000# mailman list_members completion -*- shell-script -*- _list_members() { local cur prev words cword split _init_completion -s || return case $prev in -o | --output) _filedir return ;; -d | --digest) COMPREPLY=($(compgen -W 'mime plain' -- "$cur")) return ;; -n | --nomail) COMPREPLY=($(compgen -W 'byadmin byuser bybounce unknown' \ -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--output --regular --digest --nomail --fullnames --preserve --help' -- "$cur")) else _xfunc list_lists _mailman_lists fi } && complete -F _list_members list_members # ex: filetype=sh bash-completion-2.11/completions/list_owners000066400000000000000000000006331370676621500213670ustar00rootroot00000000000000# mailman list_owners completion -*- shell-script -*- _list_owners() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--with-listnames --moderators --help' \ -- "$cur")) else _xfunc list_lists _mailman_lists fi } && complete -F _list_owners list_owners # ex: filetype=sh bash-completion-2.11/completions/locale-gen000066400000000000000000000013131370676621500210210ustar00rootroot00000000000000# locale-gen(8) completion -*- shell-script -*- _locale_gen() { local cur prev words cword split _init_completion -s || return case $prev in --help | -h) return ;; --aliases) _filedir alias return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi COMPREPLY=($(compgen -W \ '$(awk "{ print \$1 }" /usr/share/i18n/SUPPORTED 2>/dev/null)' \ -- "$cur")) } && complete -F _locale_gen locale-gen # ex: filetype=sh bash-completion-2.11/completions/lpq000066400000000000000000000011161370676621500176100ustar00rootroot00000000000000# lpq(1) completion -*- shell-script -*- _lpq() { local cur prev words cword _init_completion || return case $prev in -P) COMPREPLY=($(compgen -W "$(lpstat -a 2>/dev/null | cut -d' ' -f1)" -- "$cur")) return ;; -U) COMPREPLY=($(compgen -u -- "$cur")) return ;; esac if [[ $cur == - ]]; then COMPREPLY=($(compgen -W '-E -P -U -a -h -l' -- "$cur")) return fi _filedir } && complete -F _lpq lpq # ex: filetype=sh bash-completion-2.11/completions/lpr000066400000000000000000000016051370676621500176140ustar00rootroot00000000000000# lpr(1) completion -*- shell-script -*- _lpr() { local cur prev words cword _init_completion || return case $prev in -P) COMPREPLY=($(compgen -W "$(lpstat -a 2>/dev/null | cut -d' ' -f1)" -- "$cur")) return ;; -U) COMPREPLY=($(compgen -u -- "$cur")) return ;; -o) COMPREPLY=($(compgen -W "media= landscape orientation-requested= sides= fitplot number-up= scaling= cpi= lpi= page-bottom= page-top= page-left= page-right=" -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return ;; esac if [[ $cur == - ]]; then COMPREPLY=($(compgen -W '-E -H -C -J -T -P -U -h -l -m -o -p -q -r' -- "$cur")) return fi _filedir } && complete -F _lpr lpr # ex: filetype=sh bash-completion-2.11/completions/lrzip000066400000000000000000000021251370676621500201550ustar00rootroot00000000000000# lrzip(1) completion -*- shell-script -*- _lrzip() { local cur prev words cword _init_completion || return local xspec="*.lrz" case $prev in -*@([wSm]|[Vh?]*)) return ;; -*d) xspec="!"$xspec ;; -*o) _filedir return ;; -*O) _filedir -d return ;; -*L) COMPREPLY=($(compgen -W '{1..9}' -- "$cur")) return ;; -*N) COMPREPLY=($(compgen -W '{-20..19}' -- "$cur")) return ;; -*p) COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi _tilde "$cur" || return local IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -f -X "$xspec" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _lrzip lrzip # ex: filetype=sh bash-completion-2.11/completions/lsof000066400000000000000000000026031370676621500177610ustar00rootroot00000000000000# lsof(8) completion -*- shell-script -*- _lsof() { local cur prev words cword _init_completion || return case $prev in -'?' | -h | +c | -c | -d | -F | -i | +r | -r | -s | -S | -T) return ;; -A | -k | -m | +m | -o) _filedir return ;; +d | +D) _filedir -d return ;; -D) COMPREPLY=($(compgen -W '? b i r u' -- "$cur")) return ;; -f) COMPREPLY=($(compgen -W 'c f g G n' -- "$cur")) return ;; -g) # TODO: handle ^foo exclusions, comma separated lists _pgids return ;; -p) # TODO: handle ^foo exclusions, comma separated lists _pids return ;; -u) # TODO: handle ^foo exclusions, comma separated lists COMPREPLY=($(compgen -u -- "$cur")) return ;; esac if [[ $cur == [-+]* ]]; then COMPREPLY=($(compgen -W '-h -a -A -b -c +c -C +d -d +D -D +f -f -F -g -i -k -l +L -L +m -m +M -M -n -N -o -O -p -P +r -r -R -s -S -T -t -u -U -v -V +w -w -x -X -z -Z' -- "$cur")) return fi _filedir } && complete -F _lsof lsof # ex: filetype=sh bash-completion-2.11/completions/lspci000066400000000000000000000015321370676621500201300ustar00rootroot00000000000000# lspci(8) completion -*- shell-script -*- _lspci() { local cur prev words cword _init_completion || return case $prev in -*[sDO]) return ;; -*i) _filedir ids return ;; -*p) _filedir pcimap return ;; -*A) COMPREPLY+=($(compgen -W '$($1 -A help | command grep -vF :)' \ -- "$cur")) return ;; -*H) COMPREPLY+=($(compgen -W "1 2" -- "$cur")) return ;; -*F) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _lspci lspci # ex: filetype=sh bash-completion-2.11/completions/lsscsi000066400000000000000000000011221370676621500203110ustar00rootroot00000000000000# lsscsi(8) completion -*- shell-script -*- _lsscsi() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | -!(-*)[hV]*) return ;; --sysfsroot | -!(-*)y) _filedir -d return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _lsscsi lsscsi # ex: filetype=sh bash-completion-2.11/completions/lsusb000066400000000000000000000006471370676621500201540ustar00rootroot00000000000000# lsusb(8) completion -*- shell-script -*- _lsusb() { local cur prev words cword _init_completion || return case $prev in --help | --version | -!(-*)@([sD]|[hV]*)) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _lsusb lsusb # ex: filetype=sh bash-completion-2.11/completions/lua000066400000000000000000000006661370676621500176060ustar00rootroot00000000000000# lua(1) completion -*- shell-script -*- _lua() { local cur prev words cword _init_completion || return case $prev in -e | -l | -v | -) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W "$(_parse_help "$1")" -- "$cur")) return fi _filedir 'l@(ua|?(ua)c)' } && complete -F _lua lua # ex: filetype=sh bash-completion-2.11/completions/luac000066400000000000000000000007461370676621500177500ustar00rootroot00000000000000# luac(1) completion -*- shell-script -*- _luac() { local cur prev words cword _init_completion || return case $prev in -v | -) return ;; -o) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W "$(_parse_help "$1")" -- "$cur")) return fi _filedir lua } && complete -F _luac luac # ex: filetype=sh bash-completion-2.11/completions/luseradd000066400000000000000000000020361370676621500206210ustar00rootroot00000000000000# luseradd(1) and lusermod(1) completion -*- shell-script -*- _luseradd() { local cur prev words cword split _init_completion -s || return case $prev in --help | --usage | --gecos | --uid | --login | --plainpassword | --password | \ --commonname | --givenname | --surname | --roomnumber | --telephonenumber | \ --homephone | -!(-*)@([culPp]|[?]*)) return ;; --directory | --skeleton | -!(-*)[dk]) _filedir -d return ;; --shell | -!(-*)s) _shells return ;; --gid | -!(-*)g) _gids return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi [[ ${1##*/} == luseradd ]] || COMPREPLY=($(compgen -u -- "$cur")) } && complete -F _luseradd luseradd lusermod # ex: filetype=sh bash-completion-2.11/completions/luserdel000066400000000000000000000007351370676621500206410ustar00rootroot00000000000000# luserdel(1) completion -*- shell-script -*- _luserdel() { local cur prev words cword _init_completion || return case $prev in --help | --usage | -!(-*)[?]*) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) return fi COMPREPLY=($(compgen -u -- "$cur")) } && complete -F _luserdel luserdel # ex: filetype=sh bash-completion-2.11/completions/lvm000066400000000000000000000460151370676621500176210ustar00rootroot00000000000000# bash completion for lvm -*- shell-script -*- _lvm_filedir() { cur=${cur:-/dev/} _filedir } _lvm_volumegroups() { COMPREPLY=($(compgen -W "$(vgscan 2>/dev/null | command sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p')" -- "$cur")) } _lvm_physicalvolumes_all() { COMPREPLY=($(compgen -W "$(pvscan 2>/dev/null | command sed -n -e 's|^.*PV \([^ ]*\) .*|\1|p')" -- "$cur")) } _lvm_physicalvolumes() { COMPREPLY=($(compgen -W "$(pvscan 2>/dev/null | command sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p')" -- "$cur")) } _lvm_logicalvolumes() { COMPREPLY=($(compgen -W "$(lvscan 2>/dev/null | command sed -n -e "s|^.*'\(.*\)'.*$|\1|p")" -- "$cur")) if [[ $cur == /dev/mapper/* ]]; then _filedir local i for i in "${!COMPREPLY[@]}"; do [[ ${COMPREPLY[i]} == */control ]] && unset 'COMPREPLY[i]' done fi } _lvm_units() { COMPREPLY=($(compgen -W 'h s b k m g t H K M G T' -- "$cur")) } _lvm_sizes() { COMPREPLY=($(compgen -W 'k K m M g G t T' -- "$cur")) } # @param $1 glob matching args known to take an argument _lvm_count_args() { args=0 local offset=1 if [[ ${words[0]} == lvm ]]; then offset=2 fi local i prev=${words[offset - 1]} for ((i = offset; i < cword; i++)); do # shellcheck disable=SC2053 if [[ ${words[i]} != -* && $prev != $1 ]]; then ((args++)) fi prev=${words[i]} done } _lvmdiskscan() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) fi } && complete -F _lvmdiskscan lvmdiskscan _pvscan() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) fi } && complete -F _pvscan pvscan _pvs() { local cur prev words cword _init_completion || return case $prev in --options | --sort | -!(-*)[oO]) COMPREPLY=($(compgen -W 'pv_fmt pv_uuid pv_size pv_free pv_used pv_name pv_attr pv_pe_count pv_pe_alloc_count' -- "$cur")) return ;; --units) _lvm_units return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_physicalvolumes_all fi } && complete -F _pvs pvs _pvdisplay() { local cur prev words cword _init_completion || return case $prev in --units) _lvm_units return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_physicalvolumes_all fi } && complete -F _pvdisplay pvdisplay _pvchange() { local cur prev words cword _init_completion || return case $prev in --autobackup | --allocatable | -!(-*)[Ax]) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_physicalvolumes_all fi } && complete -F _pvchange pvchange _pvcreate() { local cur prev words cword _init_completion || return case $prev in --restorefile) _filedir return ;; --metadatatype | -!(-*)M) COMPREPLY=($(compgen -W '1 2' -- "$cur")) return ;; --metadatacopies) COMPREPLY=($(compgen -W '0 1 2' -- "$cur")) return ;; --metadatasize | --setphysicalvolumesize) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_filedir fi } && complete -F _pvcreate pvcreate _pvmove() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --name | -!(-*)n) _lvm_logicalvolumes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_physicalvolumes fi } && complete -F _pvmove pvmove _pvremove() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_physicalvolumes_all fi } && complete -F _pvremove pvremove _vgscan() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) fi } && complete -F _vgscan vgscan _vgs() { local cur prev words cword _init_completion || return case $prev in --options | --sort | -!(-*)[oO]) COMPREPLY=($(compgen -W 'vg_fmt vg_uuid vg_name vg_attr vg_size vg_free vg_sysid vg_extent_size vg_extent_count vg_free_count max_lv max_pv pv_count lv_count snap_count vg_seqno' \ -- "$cur")) return ;; --units) _lvm_units return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgs vgs _vgdisplay() { local cur prev words cword _init_completion || return case $prev in --units) _lvm_units return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgdisplay vgdisplay _vgchange() { local cur prev words cword _init_completion || return case $prev in --available | --autobackup | --resizeable | -!(-*)[aAx]) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgchange vgchange _vgcreate() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --metadatatype | -!(-*)M) COMPREPLY=($(compgen -W '1 2' -- "$cur")) return ;; --physicalextentsize | -!(-*)s) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|--autobackup|-M|--metadatatype|-s|--physicalextentsize)' if ((args == 0)); then _lvm_volumegroups else _lvm_physicalvolumes_all fi fi } && complete -F _vgcreate vgcreate _vgremove() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgremove vgremove _vgrename() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgrename vgrename _vgreduce() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|--autobackup)' if ((args == 0)); then _lvm_volumegroups else _lvm_physicalvolumes fi fi } && complete -F _vgreduce vgreduce _vgextend() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --size | -!(-*)L) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|--autobackup|-L|--size)' if ((args == 0)); then _lvm_volumegroups else _lvm_physicalvolumes_all fi fi } && complete -F _vgextend vgextend _vgport() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgport vgimport vgexport _vgck() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgck vgck _vgconvert() { local cur prev words cword _init_completion || return case $prev in --metadatatype | -!(-*)M) COMPREPLY=($(compgen -W '1 2' -- "$cur")) return ;; --metadatacopies) COMPREPLY=($(compgen -W '0 1 2' -- "$cur")) return ;; --metadatasize) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgconvert vgconvert _vgcfgbackup() { local cur prev words cword _init_completion || return case $prev in --file | -!(-*)f) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgcfgbackup vgcfgbackup _vgcfgrestore() { local cur prev words cword _init_completion || return case $prev in --file | -!(-*)f) _filedir return ;; --metadatatype | -!(-*)M) COMPREPLY=($(compgen -W '1 2' -- "$cur")) return ;; --name | -!(-*)n) _lvm_volumegroups return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgcfgrestore vgcfgrestore _vgmerge() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgmerge vgmerge _vgsplit() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --metadatatype | -!(-*)M) COMPREPLY=($(compgen -W '1 2' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|--autobackup|-M|--metadatatype)' if ((args == 0 || args == 1)); then _lvm_volumegroups else _lvm_physicalvolumes fi fi } && complete -F _vgsplit vgsplit _vgmknodes() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_volumegroups fi } && complete -F _vgmknodes vgmknodes _lvscan() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) fi } && complete -F _lvscan lvscan _lvs() { local cur prev words cword _init_completion || return case $prev in --options | --sort | -!(-*)[oO]) COMPREPLY=($(compgen -W 'lv_uuid lv_name lv_attr lv_minor lv_size seg_count origin snap_percent segtype stripes stripesize chunksize seg_start seg_size' -- "$cur")) return ;; --units) _lvm_units return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_logicalvolumes fi } && complete -F _lvs lvs _lvdisplay() { local cur prev words cword _init_completion || return case $prev in --units) _lvm_units return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_logicalvolumes fi } && complete -F _lvdisplay lvdisplay _lvchange() { local cur prev words cword _init_completion || return case $prev in --available | --autobackup | --contiguous | --persistent | -!(-*)[aACM]) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --permission | -!(-*)p) COMPREPLY=($(compgen -W 'r rw' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_logicalvolumes fi } && complete -F _lvchange lvchange _lvcreate() { local cur prev words cword _init_completion || return case $prev in --autobackup | --contiguous | --persistent | --zero | -!(-*)[ACMZ]) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --size | -!(-*)L) _lvm_sizes return ;; --permission | -!(-*)p) COMPREPLY=($(compgen -W 'r rw' -- "$cur")) return ;; --name | -!(-*)n) _lvm_logicalvolumes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|-C|-M|-Z|--autobackup|--contiguous|--persistent|--zero|-L|--size|-p|--permission|-n|--name)' if ((args == 0)); then _lvm_volumegroups else _lvm_physicalvolumes fi fi } && complete -F _lvcreate lvcreate _lvremove() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_logicalvolumes fi } && complete -F _lvremove lvremove _lvrename() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_logicalvolumes fi } && complete -F _lvrename lvrename _lvreduce() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --size | -!(-*)L) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else _lvm_logicalvolumes fi } && complete -F _lvreduce lvreduce _lvresize() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --size | -!(-*)L) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|--autobackup|-L|--size)' if ((args == 0)); then _lvm_logicalvolumes else _lvm_physicalvolumes fi fi } && complete -F _lvresize lvresize _lvextend() { local cur prev words cword _init_completion || return case $prev in --autobackup | -!(-*)A) COMPREPLY=($(compgen -W 'y n' -- "$cur")) return ;; --size | -!(-*)L) _lvm_sizes return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) else local args _lvm_count_args '@(-A|--autobackup|-L|--size)' if ((args == 0)); then _lvm_logicalvolumes else _lvm_physicalvolumes fi fi } && complete -F _lvextend lvextend _lvm() { local cur prev words cword _init_completion || return if ((cword == 1)); then COMPREPLY=($(compgen -W 'dumpconfig help lvchange lvcreate lvdisplay lvextend lvmchange lvmdiskscan lvmsadc lvmsar lvreduce lvremove lvrename lvresize lvs lvscan pvchange pvcreate pvdata pvdisplay pvmove pvremove pvresize pvs pvscan vgcfgbackup vgcfgrestore vgchange vgck vgconvert vgcreate vgdisplay vgexport vgextend vgimport vgmerge vgmknodes vgreduce vgremove vgrename vgs vgscan vgsplit version' -- "$cur")) else case "${words[1]}" in pvchange | pvcreate | pvdisplay | pvmove | pvremove | pvresize | pvs | pvscan | \ vgcfgbackup | vgcfgrestore | vgchange | vgck | vgconvert | vgcreate | \ vgdisplay | vgexport | vgextend | vgimport | vgmerge | vgmknodes | vgreduce | \ vgremove | vgrename | vgs | vgscan | vgsplit | lvchange | lvcreate | lvdisplay | \ lvextend | lvreduce | lvremove | lvrename | lvresize | lvscan) _${words[1]} ;; esac fi } && complete -F _lvm lvm # ex: filetype=sh bash-completion-2.11/completions/lz4000066400000000000000000000022221370676621500175240ustar00rootroot00000000000000# lz4 completion -*- shell-script -*- _lz4() { local cur prev words cword _init_completion || return case $prev in -b) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -X '-*#*' -W \ '$(_parse_help "$1" -h) -B{4..7} -i{1..9}' -- "$cur")) return fi local args word xspec="*.?(t)lz4" _count_args ((args > 2)) && return for word in "${words[@]}"; do case $word in -*[dt]*) case $args in 1) xspec="!"$xspec ;; 2) [[ $word == *t* ]] && return ;; esac break ;; -z) case $args in 1) xspec= ;; 2) xspec="!"$xspec ;; esac break ;; esac done _tilde "$cur" || return local IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -f -X "$xspec" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _lz4 lz4 lz4c # ex: filetype=sh bash-completion-2.11/completions/lzip000066400000000000000000000021671370676621500200010ustar00rootroot00000000000000# lzip(1) completion -*- shell-script -*- _lzip() { local cur prev words cword split _init_completion -s || return local decompress=false case $prev in --help | --version | --member-size | --match-length | --dictionary-size | \ --volume-size | --data-size | -!(-*)@([bmsSB]|[hV]*)) return ;; --decompress-!(-*)d) decompress=true ;; --threads-!(-*)n) COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur")) return ;; --output-!(-*)o) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") {-1..-9}' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi if $decompress; then _filedir lz return fi local IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -f -X "*.lz" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _lzip clzip lzip pdlzip plzip # ex: filetype=sh bash-completion-2.11/completions/lzma000066400000000000000000000016231370676621500177620ustar00rootroot00000000000000# lzma(1) completion -*- shell-script -*- # by Per Øyvind Karlsen _lzma() { local cur prev words cword split _init_completion -s || return $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1") -{1..9}' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi local IFS=$'\n' xspec="*.@(lzma|tlz)" if [[ $prev == --* ]]; then [[ $prev == --@(decompress|list|test) ]] && xspec="!"$xspec [[ $prev == --compress ]] && xspec= elif [[ $prev == -* ]]; then [[ $prev == -*[dt]* ]] && xspec="!"$xspec [[ $prev == -*z* ]] && xspec= fi _tilde "$cur" || return compopt -o filenames COMPREPLY=($(compgen -f -X "$xspec" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _lzma lzma # ex: filetype=sh bash-completion-2.11/completions/lzop000066400000000000000000000027111370676621500200020ustar00rootroot00000000000000# lzop(1) completion -*- shell-script -*- _lzop() { local cur prev words cword _init_completion || return case $prev in --output | -!(-*)o) _filedir return ;; --path) _filedir -d return ;; --suffix | -!(-*)S) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '-1 -2 -3 -4 -5 -6 -7 -8 -9 -P --fast --best --decompress --extract --test --list --ls --info --sysinfo --license --help --version --stdout --output --path --force --no-checksum --no-name --name --no-mode --no-time --suffix --keep --delete --crc32 --no-warn --ignore-warn --quiet --verbose --no-stdin --filter --checksum --no-color --mono --color' \ -- "$cur")) return fi local xspec="*.?(t)lzo" case $prev in --decompress | --uncompress | --extract | --list | --ls | --info | --test) xspec="!"$xspec ;; --force) xspec= ;; --*) ;; -*f*) xspec= ;; -*[dltx]*) xspec="!"$xspec ;; esac _tilde "$cur" || return local IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -f -X "$xspec" -- "$cur") $(compgen -d -- "$cur")) } && complete -F _lzop lzop # ex: filetype=sh bash-completion-2.11/completions/macof000066400000000000000000000006501370676621500201030ustar00rootroot00000000000000# macof completion -*- shell-script -*- _macof() { local cur prev words cword _init_completion || return case $prev in -i) _available_interfaces -a return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) fi } && complete -F _macof macof # ex: filetype=sh bash-completion-2.11/completions/mailmanctl000066400000000000000000000007171370676621500211430ustar00rootroot00000000000000# mailmanctl completion -*- shell-script -*- _mailmanctl() { local cur prev words cword _init_completion || return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--no-restart --run-as-user --stale-lock-cleanup --quiet --help' -- "$cur")) else COMPREPLY=($(compgen -W 'start stop restart reopen' -- "$cur")) fi } && complete -F _mailmanctl mailmanctl # ex: filetype=sh bash-completion-2.11/completions/make000066400000000000000000000140501370676621500177320ustar00rootroot00000000000000# bash completion for GNU make -*- shell-script -*- _make_target_extract_script() { local mode="$1" shift local prefix="$1" local prefix_pat=$(command sed 's/[][\,.*^$(){}?+|/]/\\&/g' <<<"$prefix") local basename=${prefix##*/} local dirname_len=$((${#prefix} - ${#basename})) if [[ $mode == -d ]]; then # display mode, only output current path component to the next slash local output="\2" else # completion mode, output full path to the next slash local output="\1\2" fi cat <