/usr/share/bash-completion/completions
NameSizeModeActions
addpart4470644editdlrm
blkdiscard6390644editdlrm
blkid20940644editdlrm
blkzone9710644editdlrm
blockdev7260644editdlrm
bootctl19370644editdlrm
busctl80150644editdlrm
bwrap9190644editdlrm
cal4260644editdlrm
cfdisk5460644editdlrm
chcpu15100644editdlrm
chfn4450644editdlrm
chmem5010644editdlrm
chrt9200644editdlrm
chsh5040644editdlrm
cloud-init33000644editdlrm
col4600644editdlrm
colcrt4840644editdlrm
colrm5090644editdlrm
column7250644editdlrm
coredumpctl37150644editdlrm
cpupower35030644editdlrm
ctrlaltdel3350644editdlrm
delpart5260644editdlrm
devlink274040644editdlrm
dmesg11820644editdlrm
dnf102120644editdlrm
dracut35800644editdlrm
eject11890644editdlrm
ethtool240750644editdlrm
fallocate7210644editdlrm
fdformat5660644editdlrm
fdisk18340644editdlrm
fincore9160644editdlrm
findfs6950644editdlrm
findmnt31540644editdlrm
firewall-cmd106040644editdlrm
flock8740644editdlrm
fsck7870644editdlrm
fsck.cramfs6840644editdlrm
fsck.minix3830644editdlrm
fsfreeze5240644editdlrm
fstrim6770644editdlrm
fwupdmgr98310644editdlrm
fwupdtool84380644editdlrm
gapplication13890644editdlrm
gdbus9350644editdlrm
getopt8150644editdlrm
grub116810644editdlrm
gsettings28290644editdlrm
hexdump10070644editdlrm
hostnamectl22810644editdlrm
hwclock9380644editdlrm
imunify360-agent125220644editdlrm
ionice11610644editdlrm
ipcmk5760644editdlrm
ipcrm14230644editdlrm
ipcs5140644editdlrm
isosize5290644editdlrm
journalctl58920644editdlrm
kernel-install18100644editdlrm
kmod32350644editdlrm
last9490644editdlrm
ldattach14720644editdlrm
localectl37390644editdlrm
logger15530644editdlrm
loginctl42510644editdlrm
look6830644editdlrm
losetup17210644editdlrm
lsblk19610644editdlrm
lscpu10180644editdlrm
lsinitrd19830644editdlrm
lsipc13100644editdlrm
lslocks10690644editdlrm
lslogins17040644editdlrm
lsmem10540644editdlrm
lsns11670644editdlrm
mcookie5990644editdlrm
mesg4120644editdlrm
mkfs6380644editdlrm
mkfs.cramfs8210644editdlrm
mkfs.minix7140644editdlrm
mkswap8410644editdlrm
mokutil11770644editdlrm
more5280644editdlrm
mountpoint4870644editdlrm
namei5000644editdlrm
nmcli38410644editdlrm
nsenter11710644editdlrm
p11-kit5200644editdlrm
partx12490644editdlrm
pip32860644editdlrm
pivot_root3870644editdlrm
portablectl39860644editdlrm
prlimit13290644editdlrm
raw4820644editdlrm
readprofile6790644editdlrm
rename6550644editdlrm
renice7840644editdlrm
resizepart5680644editdlrm
resolvectl70660644editdlrm
rev4320644editdlrm
rfkill9290644editdlrm
rtcwake10810644editdlrm
runuser8640644editdlrm
script6670644editdlrm
scriptreplay6250644editdlrm
setarch7900644editdlrm
setpriv23700644editdlrm
setsebool18160644editdlrm
setsid4400644editdlrm
setterm25910644editdlrm
sfdisk20120644editdlrm
stunnel.bash5690644editdlrm
su8640644editdlrm
swaplabel6350644editdlrm
swapoff7430644editdlrm
swapon15290644editdlrm
syspurpose7200644editdlrm
systemctl135750644editdlrm
systemd-analyze67880644editdlrm
systemd-cat19110644editdlrm
systemd-cgls23440644editdlrm
systemd-cgtop20960644editdlrm
systemd-delta19510644editdlrm
systemd-detect-virt13610644editdlrm
systemd-path19010644editdlrm
systemd-resolve31890644editdlrm
systemd-run48690644editdlrm
taskset12070644editdlrm
timedatectl29840644editdlrm
trust20400644editdlrm
tuned-adm6040644editdlrm
udevadm37660644editdlrm
udisksctl8570644editdlrm
ul6550644editdlrm
unshare8090644editdlrm
utmpdump4750644editdlrm
uuidgen6570644editdlrm
uuidparse7270644editdlrm
wall6340644editdlrm
wdctl13710644editdlrm
whereis5350644editdlrm
wipefs11920644editdlrm
write4310644editdlrm
zramctl12730644editdlrm
Edit: /usr/share/bash-completion/completions/nmcli (3841B)
# nmcli(1) completion _nmcli_array_delete_at() { eval "local ARRAY=(\"\${$1[@]}\")" local i local tmp=() local lower=$2 local upper=${3:-$lower} # for some reason the following fails. So this clumsy workaround... # A=(a "") # echo " >> ${#A[@]}" # >> 2 # A=("${A[@]:1}") # echo " >> ${#A[@]}" # >> 0 # ... seriously??? for i in "${!ARRAY[@]}"; do if [[ "$i" -lt "$2" || "$i" -gt "${3-$2}" ]]; then tmp=("${tmp[@]}" "${ARRAY[$i]}") fi done eval "$1=(\"\${tmp[@]}\")" } _nmcli() { local cur prev words cword i output _init_completion || return # we don't care about any arguments after the current cursor position # because we only parse from left to right. So, if there are some arguments # right of the cursor, just ignore them. Also don't care about ${words[0]}. _nmcli_array_delete_at words $((cword+1)) ${#words[@]} _nmcli_array_delete_at words 0 # _init_completion returns the words with all the quotes and escaping # characters. We don't care about them, drop them at first. for i in ${!words[@]}; do words[i]="$(printf '%s' "${words[i]}" | xargs printf '%s\n' 2>/dev/null || true)" done # In case the cursor is not at the end of the line, # $cur consists of spaces that we want do remove. # For example: `nmcli connection modify id lo` if [[ "$cur" =~ ^[[:space:]]+ ]]; then cur='' fi output="$(nmcli --complete-args "${words[@]}" 2>/dev/null)" # Bail out early if we're completing a file name if [ $? = 65 ]; then compopt -o default COMPREPLY=() return 0 fi local IFS=$'\n' COMPREPLY=( $( compgen -W '$output' -- $cur ) ) # Now escape special characters (spaces, single and double quotes), # so that the argument is really regarded a single argument by bash. # See http://stackoverflow.com/questions/1146098/properly-handling-spaces-and-quotes-in-bash-completion local escaped_single_quote="'\''" local i=0 local entry for entry in ${COMPREPLY[*]} do if [[ "${cur:0:1}" == "'" ]]; then # started with single quote, escaping only other single quotes # [']bla'bla"bla\bla bla --> [']bla'\''bla"bla\bla bla COMPREPLY[$i]="${entry//\'/${escaped_single_quote}}" elif [[ "${cur:0:1}" == '"' ]]; then # started with double quote, escaping all double quotes and all backslashes # ["]bla'bla"bla\bla bla --> ["]bla'bla\"bla\\bla bla entry="${entry//\\/\\\\}" entry="${entry//\"/\\\"}" entry="${entry//!/\"\\!\"}" COMPREPLY[$i]="$entry" else # no quotes in front, escaping _everything_ # [ ]bla'bla"bla\bla bla --> [ ]bla\'bla\"bla\\bla\ bla entry="${entry//\\/\\\\}" entry="${entry//\'/\\\'}" entry="${entry//\"/\\\"}" entry="${entry// /\\ }" entry="${entry//\(/\\(}" entry="${entry//)/\\)}" entry="${entry//!/\\!}" entry="${entry//&/\\&}" COMPREPLY[$i]="$entry" fi (( i++ )) done # Work-around bash_completion issue where bash interprets a colon # as a separator. # Colon is escaped here. Change "\\:" back to ":". # See also: # http://stackoverflow.com/questions/28479216/how-to-give-correct-suggestions-to-tab-complete-when-my-words-contains-colons # http://stackoverflow.com/questions/2805412/bash-completion-for-maven-escapes-colon/12495727 i=0 for entry in ${COMPREPLY[*]} do entry="${entry//\\\\:/:}" COMPREPLY[$i]=${entry} (( i++ )) done } && complete -F _nmcli nmcli # ex: ts=4 sw=4 et filetype=sh