# bash completion for rpm -*- shell-script -*- # helper functions _rpm_installed_packages() { if [[ -r /var/log/rpmpkgs && \ /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]]; then # using RHL 7.2 or later - this is quicker than querying the DB COMPREPLY=( $( compgen -W "$( sed -ne \ 's|^\([^[:space:]]\{1,\}\)-[^[:space:]-]\{1,\}-[^[:space:]-]\{1,\}\.rpm$|\1|p' \ /var/log/rpmpkgs )" -- "$cur" ) ) elif type rpmqpack &>/dev/null ; then # SUSE's rpmqpack is faster than rpm -qa COMPREPLY=( $( compgen -W '$( rpmqpack )' -- "$cur" ) ) else COMPREPLY=( $( ${1:-rpm} -qa --nodigest --nosignature \ --queryformat='%{NAME} ' "$cur*" 2>/dev/null ) ) fi } _rpm_groups() { local IFS=$'\n' COMPREPLY=( $( compgen -W "$( ${1:-rpm} -qa --nodigest --nosignature \ --queryformat='%{GROUP}\n' 2>/dev/null )" -- "$cur" ) ) } _rpm_macros() { # get a list of macros COMPREPLY=( $( compgen -W "$( ${1:-rpm} --showrc | sed -ne \ 's/^-\{0,1\}[0-9]\{1,\}[:=][[:space:]]\{1,\}\([^[:space:](]\{3,\}\).*/%\1/p' )" \ -- "$cur" ) ) } _rpm_buildarchs() { COMPREPLY=( $( compgen -W "$( ${1:-rpm} --showrc | sed -ne \ 's/^\s*compatible\s\s*build\s\s*archs\s*:\s*\(.*\)/\1/ p' )" \ -- "$cur" ) ) } # rpm(8) completion # _rpm() { local cur prev words cword split _init_completion -s || return if [[ $cword -eq 1 ]]; then # first parameter on line case $cur in --*) COMPREPLY=( $( compgen -W '--help --version --initdb --checksig --addsign --delsign --rebuilddb --showrc --setperms --setugids --eval --install --upgrade --query --freshen --erase --verify --querytags --import' \ -- "$cur" ) ) ;; *) COMPREPLY=( $( compgen -W '-e -E -F -i -q -t -U -V' \ -- "$cur" ) ) ;; esac return 0 fi case $prev in --dbpath|--excludepath|--prefix|--relocate|--root|-r) _filedir -d return 0 ;; --eval|-E) _rpm_macros $1 return 0 ;; --pipe) compopt -o filenames COMPREPLY=( $( compgen -c -- "$cur" ) ) return 0 ;; --rcfile) _filedir return 0 ;; --specfile) # complete on .spec files _filedir spec return 0 ;; --whatprovides) if [[ "$cur" == */* ]]; then _filedir else # complete on capabilities local IFS=$'\n' COMPREPLY=( $( compgen -W "$( $1 -qa --nodigest --nosignature \ --queryformat='%{PROVIDENAME}\n' 2>/dev/null )" \ -- "$cur" ) ) fi return 0 ;; --whatrequires) if [[ "$cur" == */* ]]; then _filedir else # complete on capabilities local IFS=$'\n' COMPREPLY=( $( compgen -W "$( $1 -qa --nodigest --nosignature \ --queryformat='%{REQUIRENAME}\n' 2>/dev/null )" \ -- "$cur" ) ) fi return 0 ;; --define|-D|--fileid|--hdrid|--pkgid) # argument required but no completions available return 0 ;; esac $split && return 0 # options common to all modes local opts="--define= --eval= --macros= --nodigest --nosignature --rcfile= --quiet --pipe --verbose" case ${words[1]} in -[iFU]*|--install|--freshen|--upgrade) if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --percent --force --test --replacepkgs --replacefiles --root --excludedocs --includedocs --noscripts --ignorearch --dbpath --prefix= --ignoreos --nodeps --allfiles --ftpproxy --ftpport --justdb --httpproxy --httpport --noorder --relocate= --badreloc --notriggers --excludepath= --ignoresize --oldpackage --queryformat --repackage --nosuggests" -- "$cur" ) ) else _filedir '[rs]pm' fi ;; -e|--erase) if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --allmatches --noscripts --notriggers --nodeps --test --repackage" -- "$cur" ) ) else _rpm_installed_packages $1 fi ;; -q*|--query) # options common to all query types opts+=" --changelog --configfiles --conflicts --docfiles --dump --enhances --filesbypkg --filecaps --fileclass --filecolor --fileprovide --filerequire --filesbypkg --info --list --obsoletes --pipe --provides --queryformat= --requires --scripts --suggests --triggers --xml" if [[ ${words[@]} == *\ -@(*([^ -])f|-file )* ]]; then # -qf completion if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --dbpath --fscontext --last --root --state" -- "$cur" ) ) else _filedir fi elif [[ ${words[@]} == *\ -@(*([^ -])g|-group )* ]]; then # -qg completion _rpm_groups $1 elif [[ ${words[@]} == *\ -@(*([^ -])p|-package )* ]]; then # -qp; uninstalled package completion if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --ftpport --ftpproxy --httpport --httpproxy --nomanifest" -- "$cur" ) ) else _filedir '[rs]pm' fi else # -q; installed package completion if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --all --file --fileid --dbpath --fscontext --ftswalk --group --hdrid --last --package --pkgid --root= --specfile --state --triggeredby --whatprovides --whatrequires" \ -- "$cur" ) ) elif [[ ${words[@]} != *\ -@(*([^ -])a|-all )* ]]; then _rpm_installed_packages $1 fi fi ;; -K*|--checksig) if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --nopgp --nogpg --nomd5" \ -- "$cur" ) ) else _filedir '[rs]pm' fi ;; -[Vy]*|--verify) if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts --root= --dbpath --nodeps --nogroup --nolinkto --nomode --nomtime --nordev --nouser --nofiles --noscripts --nomd5 --querytags --specfile --whatrequires --whatprovides" -- "$cur" ) ) # check whether we're doing file completion elif [[ ${words[@]} == *\ -@(*([^ -])f|-file )* ]]; then _filedir elif [[ ${words[@]} == *\ -@(*([^ -])g|-group )* ]]; then _rpm_groups $1 elif [[ ${words[@]} == *\ -@(*([^ -])p|-package )* ]]; then _filedir '[rs]pm' else _rpm_installed_packages $1 fi ;; --resign|--addsign|--delsign) _filedir '[rs]pm' ;; --setperms|--setgids) _rpm_installed_packages $1 ;; --import|--dbpath|--root) if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W '--import --dbpath --root=' \ -- "$cur" ) ) else _filedir fi ;; esac [[ $COMPREPLY == *= ]] && compopt -o nospace return 0 } && complete -F _rpm rpm _rpmbuild() { local cur prev words cword split _init_completion -s || return local rpm="${1%build*}" [[ $rpm == $1 ]] || ! type $rpm &>/dev/null && rpm= case $prev in --buildroot|--root|-r|--dbpath) _filedir -d return 0 ;; --target) _rpm_buildarchs return 0 ;; --eval|-E) _rpm_macros $rpm return 0 ;; --macros|--rcfile) _filedir return 0 ;; --buildpolicy) local cfgdir=$( $rpm --eval '%{_rpmconfigdir}' 2>/dev/null ) if [[ $cfgdir ]]; then COMPREPLY=( $( compgen -W "$( command ls $cfgdir 2>/dev/null \ | sed -ne 's/^brp-//p' )" -- "$cur" ) ) fi ;; --define|-D|--with|--without) return 0 ;; esac $split && return 0 if [[ $cur == -* ]]; then COMPREPLY=( $( compgen -W "$( _parse_help "$1" )" -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace return 0 fi # Figure out file extensions to complete local word ext for word in ${words[@]}; do case $word in -b?) ext=spec break ;; -t?|--tarbuild) ext='@(t?(ar.)@([gx]z|bz?(2))|tar?(.@(lzma|Z)))' break ;; --rebuild|--recompile) ext='@(?(no)src.r|s)pm' break ;; esac done [[ -n $ext ]] && _filedir $ext } && complete -F _rpmbuild rpmbuild rpmbuild-md5 # 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 |
|