# bash completion for yum _yum_helper() { local IFS=$'\n' if [[ -n "$YUM_CACHEDIR" && "$1 $2" == "list available" ]]; then for db in $(find "$YUM_CACHEDIR" -name primary_db.sqlite); do COMPREPLY+=( $( sqlite3 "$db" \ "SELECT name||'.'||arch FROM packages WHERE name LIKE '$3%'" ) ) done return fi COMPREPLY+=( $( /usr/share/yum-cli/completion-helper.py -d 0 -C "$@" 2>/dev/null ) ) } _yum_list() { # Fail fast for things that look like paths or options. [[ $2 == */* || $2 == [.~-]* ]] && return # Listing all available packages takes way too long [[ $1 != "installed" && ${#2} -lt 1 ]] && return _yum_helper list "$@" } # arguments: # 1 = 1 or 0 to list enabled or disabled plugins # 2 = current word to be completed _yum_plugins() { local val [[ $1 -eq 1 ]] && val='\(1\|yes\|true\|on\)' || val='\(0\|no\|false\|off\)' COMPREPLY+=( $( compgen -W '$( command grep -il "^\s*enabled\s*=\s*$val" \ /etc/yum/pluginconf.d/*.conf 2>/dev/null \ | sed -ne "s|^.*/\([^/]\{1,\}\)\.conf$|\1|p" )' -- "$2" ) ) } # arguments: # 1 = current word to be completed _yum_binrpmfiles() { COMPREPLY+=( $( compgen -f -o plusdirs -X '!*.rpm' -- "$1" ) ) COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -X '*.src.rpm' ) ) COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -X '*.nosrc.rpm' ) ) } _yum_baseopts() { local opts='--help --tolerant --cacheonly --config --randomwait --debuglevel --showduplicates --errorlevel --rpmverbosity --quiet --verbose --assumeyes --assumeno --version --installroot --enablerepo --disablerepo --exclude --disableexcludes --obsoletes --noplugins --nogpgcheck --skip-broken --color --releasever --setopt --downloadonly --downloaddir --disableincludes' [[ $COMP_LINE == *--noplugins* ]] || \ opts+=" --disableplugin --enableplugin" printf %s "$opts" } _yum_transactions() { COMPREPLY+=( $( compgen -W "$( $yum -d 0 -C history 2>/dev/null | \ sed -ne 's/^[[:space:]]*\([0-9]\{1,\}\).*/\1/p' )" -- "$cur" ) ) } _yum_atgroups() { if [[ $1 == \@* ]]; then _yum_helper groups list all "${1:1}" COMPREPLY=( "${COMPREPLY[@]/#/@}" ) return 0 fi return 1 } # arguments: # 1 = current word to be completed # 2 = previous word # return 0 if no more completions should be sought, 1 otherwise _yum_complete_baseopts() { case $2 in -d|--debuglevel|-e|--errorlevel) COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- "$1" ) ) return 0 ;; --rpmverbosity) COMPREPLY=( $( compgen -W 'info critical emergency error warn debug' -- "$1" ) ) return 0 ;; -c|--config) COMPREPLY=( $( compgen -f -o plusdirs -X "!*.conf" -- "$1" ) ) return 0 ;; --installroot|--downloaddir) COMPREPLY=( $( compgen -d -- "$1" ) ) return 0 ;; --enablerepo) _yum_helper repolist disabled "$1" return 0 ;; --disablerepo) _yum_helper repolist enabled "$1" return 0 ;; --disableexcludes|--disableincludes) _yum_helper repolist all "$1" local main= [[ $2 == *excludes ]] && main=main COMPREPLY=( $( compgen -W '${COMPREPLY[@]} all $main' -- "$1" ) ) return 0 ;; --enableplugin) _yum_plugins 0 "$1" return 0 ;; --disableplugin) _yum_plugins 1 "$1" return 0 ;; --color) COMPREPLY=( $( compgen -W 'always auto never' -- "$1" ) ) return 0 ;; -R|--randomwait|-x|--exclude|-h|--help|--version|--releasever|--cve|\ --bz|--advisory|--tmprepo|--verify-filenames|--setopt) return 0 ;; --download-order) COMPREPLY=( $( compgen -W 'default smallestfirst largestfirst' \ -- "$1" ) ) return 0 ;; --override-protection) _yum_list installed "$1" return 0 ;; --verify-configuration-files) COMPREPLY=( $( compgen -W '1 0' -- "$1" ) ) return 0 ;; esac return 1 } _yum() { COMPREPLY=() local yum=$1 cur=$2 prev=$3 words=("${COMP_WORDS[@]}") declare -F _get_comp_words_by_ref &>/dev/null && \ _get_comp_words_by_ref -n = cur prev words # Commands offered as completions local cmds=( check check-update clean deplist distro-sync downgrade groups help history info install list load-transaction makecache provides reinstall remove repolist search shell update upgrade version ) local i c cmd subcmd for (( i=1; i < ${#words[@]}-1; i++ )) ; do [[ -n $cmd ]] && subcmd=${words[i]} && break # Recognize additional commands and aliases for c in ${cmds[@]} check-rpmdb distribution-synchronization erase \ group groupinfo groupinstall grouplist groupremove groupupdate \ grouperase install-na load-ts localinstall localupdate whatprovides ; do [[ ${words[i]} == $c ]] && cmd=$c && break done done case $cmd in check|check-rpmdb) COMPREPLY=( $( compgen -W 'dependencies duplicates all' \ -- "$cur" ) ) return 0 ;; check-update|makecache|resolvedep) return 0 ;; clean) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -W 'expire-cache packages headers metadata cache dbcache all' -- "$cur" ) ) return 0 ;; deplist) COMPREPLY=( $( compgen -f -o plusdirs -X '!*.[rs]pm' -- "$cur" ) ) _yum_list all "$cur" return 0 ;; distro-sync|distribution-synchronization) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -W 'full different' -- "$cur" ) ) _yum_list installed "$cur" return 0 ;; downgrade|reinstall) if ! _yum_atgroups "$cur" ; then _yum_binrpmfiles "$cur" _yum_list installed "$cur" fi return 0 ;; erase|remove) _yum_atgroups "$cur" || _yum_list installed "$cur" return 0 ;; group*) if [[ ($cmd == groups || $cmd == group) && $prev == $cmd ]] ; then COMPREPLY=( $( compgen -W 'info install list remove summary' \ -- "$cur" ) ) else _yum_helper groups list all "$cur" fi return 0 ;; help) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" ) ) return 0 ;; history) if [[ $prev == $cmd ]] ; then COMPREPLY=( $( compgen -W 'info list packages-list packages-info summary addon-info redo undo rollback new sync stats' -- "$cur" ) ) return 0 fi case $subcmd in undo|repeat|addon|addon-info|rollback) if [[ $prev == $subcmd ]]; then COMPREPLY=( $( compgen -W "last" -- "$cur" ) ) _yum_transactions fi ;; redo) case $prev in redo) COMPREPLY=( $( compgen -W "force-reinstall force-remove last" -- "$cur" ) ) _yum_transactions ;; reinstall|force-reinstall|remove|force-remove) COMPREPLY=( $( compgen -W "last" -- "$cur" ) ) _yum_transactions ;; esac ;; package-list|pkg|pkgs|pkg-list|pkgs-list|package|packages|\ packages-list|pkg-info|pkgs-info|package-info|packages-info) _yum_list available "$cur" ;; info|list|summary) if [[ $subcmd != info ]] ; then COMPREPLY=( $( compgen -W "all" -- "$cur" ) ) [[ $cur != all ]] && _yum_list available "$cur" else _yum_list available "$cur" fi _yum_transactions ;; sync|synchronize) _yum_list installed "$cur" ;; esac return 0 ;; info) _yum_list all "$cur" return 0 ;; install) if ! _yum_atgroups "$cur" ; then _yum_binrpmfiles "$cur" _yum_list available "$cur" fi return 0 ;; install-na) _yum_list available "$cur" return 0 ;; list) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -W 'all available updates installed extras obsoletes recent' -- "$cur" ) ) return 0 ;; load-transaction|load-ts) COMPREPLY=( $( compgen -f -o plusdirs -X '!*.yumtx' -- "$cur" ) ) return 0 ;; localinstall|localupdate) _yum_binrpmfiles "$cur" return 0 ;; provides|whatprovides) COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) ) return 0 ;; repolist) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -W 'all enabled disabled' -- "$cur" ) ) return 0 ;; search) [[ $prev == $cmd ]] && COMPREPLY=( $( compgen -W 'all' -- "$cur" ) ) return 0 ;; shell) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) ) return 0 ;; update|upgrade) if ! _yum_atgroups "$cur" ; then _yum_binrpmfiles "$cur" _yum_list updates "$cur" fi return 0 ;; version) [[ $prev == $cmd ]] && \ COMPREPLY=( $( compgen -W 'all installed available nogroups grouplist groupinfo' -- "$cur" ) ) return 0 ;; esac local split=false declare -F _split_longopt &>/dev/null && _split_longopt && split=true _yum_complete_baseopts "$cur" "$prev" && return 0 $split && return 0 if [[ $cur == -* ]] ; then COMPREPLY=( $( compgen -W '$( _yum_baseopts )' -- "$cur" ) ) return 0 fi COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" ) ) } && complete -F _yum -o filenames yum yummain.py # Local variables: # mode: shell-script # sh-basic-offset: 4 # sh-indent-comment: t # indent-tabs-mode: nil # End: # ex: ts=4 sw=4 et filetype=sh
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
addpart | File | 520 B | 0644 |
|
blkdiscard | File | 651 B | 0644 |
|
blkid | File | 1.47 KB | 0644 |
|
blockdev | File | 761 B | 0644 |
|
bootctl | File | 1.79 KB | 0644 |
|
busctl | File | 7.54 KB | 0644 |
|
cal | File | 404 B | 0644 |
|
cfdisk | File | 736 B | 0644 |
|
chcpu | File | 1.18 KB | 0644 |
|
chfn | File | 445 B | 0644 |
|
chrt | File | 800 B | 0644 |
|
chsh | File | 506 B | 0644 |
|
col | File | 460 B | 0644 |
|
colcrt | File | 484 B | 0644 |
|
colrm | File | 509 B | 0644 |
|
column | File | 725 B | 0644 |
|
coredumpctl | File | 3.34 KB | 0644 |
|
ctrlaltdel | File | 335 B | 0644 |
|
delpart | File | 649 B | 0644 |
|
dmesg | File | 1.03 KB | 0644 |
|
dracut | File | 3.5 KB | 0644 |
|
eject | File | 1.16 KB | 0644 |
|
fallocate | File | 593 B | 0644 |
|
fdformat | File | 414 B | 0644 |
|
fdisk | File | 1.05 KB | 0644 |
|
findmnt | File | 2.77 KB | 0644 |
|
firewall-cmd | File | 10.1 KB | 0644 |
|
flock | File | 860 B | 0644 |
|
fsck | File | 789 B | 0644 |
|
fsck.cramfs | File | 508 B | 0644 |
|
fsck.minix | File | 403 B | 0644 |
|
fsfreeze | File | 524 B | 0644 |
|
fstrim | File | 626 B | 0644 |
|
gapplication | File | 1.36 KB | 0644 |
|
gdbus | File | 935 B | 0644 |
|
getopt | File | 815 B | 0644 |
|
grub | File | 11.41 KB | 0644 |
|
gsettings | File | 2.76 KB | 0644 |
|
hexdump | File | 659 B | 0644 |
|
hostnamectl | File | 2.16 KB | 0644 |
|
hwclock | File | 937 B | 0644 |
|
ionice | File | 837 B | 0644 |
|
ipcrm | File | 1.39 KB | 0644 |
|
ipcs | File | 514 B | 0644 |
|
isosize | File | 426 B | 0644 |
|
journalctl | File | 5.4 KB | 0644 |
|
kernel-install | File | 1.75 KB | 0644 |
|
kmod | File | 3.16 KB | 0644 |
|
ldattach | File | 1.23 KB | 0644 |
|
localectl | File | 3.36 KB | 0644 |
|
logger | File | 1.13 KB | 0644 |
|
loginctl | File | 4.03 KB | 0644 |
|
look | File | 572 B | 0644 |
|
losetup | File | 1.47 KB | 0644 |
|
lsblk | File | 1.44 KB | 0644 |
|
lscpu | File | 829 B | 0644 |
|
lsinitrd | File | 2.05 KB | 0644 |
|
lslocks | File | 1002 B | 0644 |
|
machinectl | File | 3.12 KB | 0644 |
|
mcookie | File | 502 B | 0644 |
|
mkfs | File | 692 B | 0644 |
|
mkfs.cramfs | File | 821 B | 0644 |
|
mkfs.minix | File | 716 B | 0644 |
|
mkswap | File | 765 B | 0644 |
|
more | File | 528 B | 0644 |
|
mountpoint | File | 570 B | 0644 |
|
namei | File | 500 B | 0644 |
|
nmcli | File | 3.74 KB | 0644 |
|
nsenter | File | 955 B | 0644 |
|
partx | File | 1.07 KB | 0644 |
|
pivot_root | File | 387 B | 0644 |
|
prlimit | File | 1.16 KB | 0644 |
|
raw | File | 482 B | 0644 |
|
readprofile | File | 679 B | 0644 |
|
rename | File | 632 B | 0644 |
|
renice | File | 812 B | 0644 |
|
resizepart | File | 691 B | 0644 |
|
rev | File | 432 B | 0644 |
|
rpm | File | 9.77 KB | 0644 |
|
rtcwake | File | 841 B | 0644 |
|
runuser | File | 864 B | 0644 |
|
script | File | 667 B | 0644 |
|
scriptreplay | File | 592 B | 0644 |
|
semanage | File | 6.42 KB | 0644 |
|
setarch | File | 775 B | 0644 |
|
setpriv | File | 1.97 KB | 0644 |
|
setsebool | File | 1.77 KB | 0644 |
|
setsid | File | 433 B | 0644 |
|
setterm | File | 2.24 KB | 0644 |
|
sfdisk | File | 1.41 KB | 0644 |
|
su | File | 864 B | 0644 |
|
swaplabel | File | 635 B | 0644 |
|
swapon | File | 1.32 KB | 0644 |
|
systemctl | File | 12.29 KB | 0644 |
|
systemd-analyze | File | 3.9 KB | 0644 |
|
systemd-cat | File | 1.87 KB | 0644 |
|
systemd-cgls | File | 1.75 KB | 0644 |
|
systemd-cgtop | File | 1.32 KB | 0644 |
|
systemd-delta | File | 1.91 KB | 0644 |
|
systemd-detect-virt | File | 1.29 KB | 0644 |
|
systemd-nspawn | File | 5.74 KB | 0644 |
|
systemd-run | File | 3.51 KB | 0644 |
|
tailf | File | 530 B | 0644 |
|
taskset | File | 1.06 KB | 0644 |
|
tc | File | 26.41 KB | 0644 |
|
timedatectl | File | 2.52 KB | 0644 |
|
tuned-adm | File | 511 B | 0644 |
|
udevadm | File | 3.64 KB | 0644 |
|
ul | File | 655 B | 0644 |
|
unshare | File | 496 B | 0644 |
|
utmpdump | File | 466 B | 0644 |
|
uuidgen | File | 384 B | 0644 |
|
wdctl | File | 1.17 KB | 0644 |
|
whereis | File | 535 B | 0644 |
|
wipefs | File | 760 B | 0644 |
|
write | File | 494 B | 0644 |
|
yum | File | 11.23 KB | 0644 |
|
yummain.py | File | 11.23 KB | 0644 |
|
zramctl | File | 1.18 KB | 0644 |
|