I have just noticed, that LC_ALL isn’t empty as it might seem from the commands above.
It actually is filled with a huge bunch of garbage.
While examing this, I found that there is a big problem with environment variables (at the end):
set
BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="0")
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="11")
BASH_LINENO=()
BASH_REMATCH=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="0" [2]="18" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='5.0.18(1)-release'
COLORTERM=truecolor
COLUMNS=132
COMP_WORDBREAKS=$' \t\n"\'><=;|&(:'
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=xfce
DIRSTACK=()
DISPLAY=:0.0
EDITOR=/usr/bin/nano
EUID=1000
GDMSESSION=xfce
GROUPS=()
GTK2_RC_FILES=/home/ladmin/.gtkrc-2.0
GTK_MODULES=canberra-gtk-module:canberra-gtk-module
HISTFILE=/home/ladmin/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/home/ladmin
HOSTNAME=elite.bnetza.lan
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=de.DE.UTF-8
LC_MESSAGES=de_DE.utf8
LINES=63
LOGNAME=ladmin
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'
MACHTYPE=x86_64-pc-linux-gnu
MAIL=/var/spool/mail/ladmin
MAILCHECK=60
MOTD_SHOWN=pam
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PANEL_GDK_CORE_DEVICE_EVENTS=0
PATH=/home/ladmin/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin
PIPESTATUS=([0]="0")
PPID=2355
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"'
PS1='C:`msdos_pwd`> '
PS2='> '
PS4='+ '
PWD=/home/ladmin
QT_AUTO_SCREEN_SCALE_FACTOR=0
QT_QPA_PLATFORMTHEME=qt5ct
SESSION_MANAGER=local/elite.bnetza.lan:@/tmp/.ICE-unix/1156,unix/elite.bnetza.lan:/tmp/.ICE-unix/1156
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SSH_AGENT_PID=1217
SSH_AUTH_SOCK=/tmp/ssh-gW8tsBg7iJUE/agent.1216
TERM=xterm-256color
UID=1000
USER=ladmin
VTE_VERSION=6003
WINDOWID=109051911
XAUTHORITY=/home/ladmin/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg
XDG_CURRENT_DESKTOP=XFCE
XDG_DATA_DIRS=/home/ladmin/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ladmin
XDG_MENU_PREFIX=xfce-
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_ID=1
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7
_=set
_backup_glob='@(#*#|*@(~|.@(bak|orig|rej|swp|dpkg*|rpm@(orig|new|save))))'
_xspecs=([lokalize]="!*.po" [acroread]="!*.[pf]df" [lbzcat]="!*.?(t)bz?(2)" [mpg321]="!*.mp3" [bzcat]="!*.?(t)bz?(2)" [oocalc]="!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)" [tex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [unlzma]="!*.@(tlz|lzma)" [sxemacs]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [aviplay]="!*.@(avi|asf|wmv)" [lbunzip2]="!*.?(t)bz?(2)" [dragon]="!*@(.@(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))" [freeamp]="!*.@(mp3|ogg|pls|m3u)" [rgvim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [ooimpress]="!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)" [gqmpeg]="!*.@(mp3|ogg|pls|m3u)" [texi2html]="!*.texi*" [hbpp]="!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [lowriter]="!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)" [qiv]="!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)" [xanim]="!*.@(mpg|mpeg|avi|mov|qt)" [totem]="!*@(.@(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))" [ps2pdfwr]="!*.@(?(e)ps|pdf)" [harbour]="!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [jadetex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lodraw]="!*.@(sxd|std|sda|sdd|?(f)odg|otg)" [dvitype]="!*.dvi" [lobase]="!*.odb" [rpm2cpio]="!*.[rs]pm" [xine]="!*@(.@(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))" [lualatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [localc]="!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)" [hbrun]="!*.[Hh][Rr][Bb]" [amaya]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [gv]="!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [unpigz]="!*.@(Z|[gGdz]z|t[ag]z)" [mozilla]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [epdfview]="!*.pdf" [dvips]="!*.dvi" [pdfunite]="!*.pdf" [ps2pdf14]="!*.@(?(e)ps|pdf)" [kid3]="!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)" [vi]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [ps2pdf]="!*.@(?(e)ps|pdf)" [gpdf]="!*.[pf]df" [lilypond]="!*.ly" [texi2dvi]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [modplug123]="!*.@(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)" [znew]="*.Z" [ps2pdf13]="!*.@(?(e)ps|pdf)" [ps2pdf12]="!*.@(?(e)ps|pdf)" [kwrite]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [latex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [kate]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [pbzcat]="!*.?(t)bz?(2)" [poedit]="!*.po" [view]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [kid3-qt]="!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)" [luatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [bunzip2]="!*.?(t)bz?(2)" [dvipdfm]="!*.dvi" [kbabel]="!*.po" [ly2dvi]="!*.ly" [oodraw]="!*.@(sxd|std|sda|sdd|?(f)odg|otg)" [bzme]="!*.@(zip|z|gz|tgz)" [rgview]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [pdftex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [xemacs]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [zathura]="!*.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)" [unxz]="!*.@(?(t)xz|tlz|lzma)" [rvim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [madplay]="!*.mp3" [xetex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [gvim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [kaffeine]="!*@(.@(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))" [dviselect]="!*.dvi" [kpdf]="!*.@(?(e)ps|pdf)" [bibtex]="!*.aux" [realplay]="!*.@(rm?(j)|ra?(m)|smi?(l))" [mpg123]="!*.mp3" [netscape]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [lzegrep]="!*.@(tlz|lzma)" [gview]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [kdvi]="!*.@(dvi|DVI)?(.@(gz|Z|bz2))" [xv]="!*.@(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)" [lzfgrep]="!*.@(tlz|lzma)" [playmidi]="!*.@(mid?(i)|cmf)" [lzless]="!*.@(tlz|lzma)" [elinks]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [timidity]="!*.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)" [xdvi]="!*.@(dvi|DVI)?(.@(gz|Z|bz2))" [xfig]="!*.fig" [xpdf]="!*.[pf]df" [lomath]="!*.@(sxm|smf|mml|odf)" [lzcat]="!*.@(tlz|lzma)" [compress]="*.Z" [pdfjadetex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [kghostview]="!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [zcat]="!*.@(Z|[gGd]z|t[ag]z)" [pbunzip2]="!*.?(t)bz?(2)" [oobase]="!*.odb" [cdiff]="!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))" [gtranslator]="!*.po" [lynx]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [emacs]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [zipinfo]="!*.@(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)" [xelatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [uncompress]="!*.Z" [xzcat]="!*.@(?(t)xz|tlz|lzma)" [unzip]="!*.@(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)" [rview]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [ogg123]="!*.@(og[ag]|m3u|flac|spx)" [lrunzip]="!*.lrz" [lzgrep]="!*.@(tlz|lzma)" [slitex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [vim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [ggv]="!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [ee]="!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)" [oomath]="!*.@(sxm|smf|mml|odf)" [aaxine]="!*@(.@(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))" [dvipdfmx]="!*.dvi" [advi]="!*.dvi" [gunzip]="!*.@(Z|[gGd]z|t[ag]z)" [makeinfo]="!*.texi*" [gharbour]="!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [okular]="!*.@(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)))" [galeon]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [pdflatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lzmore]="!*.@(tlz|lzma)" [portecle]="!@(*.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|p7b|pkipath|pem|p10|csr|crl)|cacerts)" [oowriter]="!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)" [loimpress]="!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)" [epiphany]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [modplugplay]="!*.@(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)" [dvipdf]="!*.dvi" [dillo]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [fbxine]="!*@(.@(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))" )
__expand_tilde_by_ref ()
{
if [[ ${!1-} == \~* ]]; then
eval $1="$(printf ~%q "${!1#\~}")";
fi
}
__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};
if [[ $index -gt 0 && ( -n $lead && -n ${lead//[[:space:]]/} ) ]]; then
cur=$COMP_LINE;
for ((i = 0; i <= cword; ++i))
do
while [[ ${#cur} -ge ${#words[i]} && ${cur:0:${#words[i]}} != "${words[i]-}" ]]; do
cur="${cur:1}";
((index > 0)) && ((index--));
done;
if ((i < cword)); then
local old_size=${#cur};
cur="${cur#"${words[i]}"}";
local new_size=${#cur};
((index -= old_size - new_size));
fi;
done;
[[ -n $cur && ! -n ${cur//[[:space:]]/} ]] && cur=;
((index < 0)) && index=0;
fi;
local "$2" "$3" "$4" && _upvars -a${#words[@]} $2 ${words+"${words[@]}"} -v $3 "$cword" -v $4 "${cur:0:index}"
}
__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}";
$(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";
if [[ -f $compfile ]] && . "$compfile" &> /dev/null; then
[[ -n $backslash ]] && $(complete -p "$cmd") "\\$cmd";
return 0;
fi;
done;
done;
[[ -v _xspecs[$cmd] ]] && complete -F _filedir_xspec "$cmd" "$backslash$cmd" && return 0;
return 1
}
__ltrim_colon_completions ()
{
if [[ $1 == *:* && $COMP_WORDBREAKS == *:* ]]; then
local colon_word=${1%"${1##*:}"};
local i=${#COMPREPLY[*]};
while ((i-- > 0)); do
COMPREPLY[i]=${COMPREPLY[i]#"$colon_word"};
done;
fi
}
__parse_options ()
{
local option option2 i IFS='
,/|';
option=;
local -a array=($1);
for i in "${array[@]}";
do
case "$i" in
---*)
break
;;
--?*)
option=$i;
break
;;
-?*)
[[ -n $option ]] || option=$i
;;
*)
break
;;
esac;
done;
[[ -n $option ]] || return 0;
IFS='
';
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/=*/=}"
}
__reassemble_comp_words_by_ref ()
{
local exclude i j line ref;
if [[ -n $1 ]]; then
exclude="[${1//[^$COMP_WORDBREAKS]/}]";
fi;
printf -v "$3" %s "$COMP_CWORD";
if [[ -v exclude ]]; then
line=$COMP_LINE;
for ((i = 0, j = 0; i < ${#COMP_WORDS[@]}; i++, j++))
do
while [[ $i -gt 0 && ${COMP_WORDS[i]} == +($exclude) ]]; do
[[ $line != [[:blank:]]* ]] && ((j >= 2)) && ((j--));
ref="$2[$j]";
printf -v "$ref" %s "${!ref-}${COMP_WORDS[i]}";
((i == COMP_CWORD)) && printf -v "$3" %s "$j";
line=${line#*"${COMP_WORDS[i]}"};
[[ $line == [[:blank:]]* ]] && ((j++));
((i < ${#COMP_WORDS[@]} - 1)) && ((i++)) || break 2;
done;
ref="$2[$j]";
printf -v "$ref" %s "${!ref-}${COMP_WORDS[i]}";
line=${line#*"${COMP_WORDS[i]}"};
((i == COMP_CWORD)) && printf -v "$3" %s "$j";
done;
((i == COMP_CWORD)) && printf -v "$3" %s "$j";
else
for i in "${!COMP_WORDS[@]}";
do
printf -v "$2[i]" %s "${COMP_WORDS[i]}";
done;
fi
}
_allowed_groups ()
{
if _complete_as_root; then
local IFS='
';
COMPREPLY=($(compgen -g -- "$1"));
else
local IFS='
';
COMPREPLY=($(compgen -W "$(id -Gn 2>/dev/null || groups 2>/dev/null)" -- "$1"));
fi
}
_allowed_users ()
{
if _complete_as_root; then
local IFS='
';
COMPREPLY=($(compgen -u -- "${1:-$cur}"));
else
local IFS='
';
COMPREPLY=($(compgen -W "$(id -un 2>/dev/null || whoami 2>/dev/null)" -- "${1:-$cur}"));
fi
}
_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"))
}
_bashcomp_try_faketty ()
{
if type unbuffer &> /dev/null; then
unbuffer -p "$@";
else
if script --version 2>&1 | command grep -qF util-linux; then
script -qaefc "$*" /dev/null;
else
"$@";
fi;
fi
}
_cd ()
{
local cur prev words cword;
_init_completion || return;
local IFS='
' i j k;
compopt -o filenames;
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);
for i in ${CDPATH//:/'
'};
do
k="${#COMPREPLY[@]}";
for j in $(compgen -d -- $i/$cur);
do
if [[ ( -n $mark_symdirs && -L $j || -n $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
}
_cd_devices ()
{
COMPREPLY+=($(compgen -f -d -X "!*/?([amrs])cd*" -- "${cur:-/dev/}"))
}
_command ()
{
local offset i;
offset=1;
for ((i = 1; i <= COMP_CWORD; i++))
do
if [[ ${COMP_WORDS[i]} != -* ]]; then
offset=$i;
break;
fi;
done;
_command_offset $offset
}
_command_offset ()
{
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;
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='
';
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 [[ ! -n $cspec && $cmd == */* ]]; then
cspec=$(complete -p ${cmd##*/} 2>/dev/null);
[[ -n $cspec ]] && compcmd=${cmd##*/};
fi;
if [[ ! -n $cspec ]]; then
compcmd=${cmd##*/};
_completion_loader $compcmd;
cspec=$(complete -p $compcmd 2>/dev/null);
fi;
if [[ -n $cspec ]]; then
if [[ ${cspec#* -F } != "$cspec" ]]; then
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;
local opt;
while [[ $cspec == *" -o "* ]]; do
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;
else
if ((${#COMPREPLY[@]} == 0)); then
_minimal;
fi;
fi;
fi
}
_complete_as_root ()
{
[[ $EUID -eq 0 || -n ${root_command:-} ]]
}
_completion_loader ()
{
local cmd="${1:-_EmptycmD_}";
__load_completion "$cmd" && return 124;
complete -F _minimal -- "$cmd" && return 124
}
_configured_interfaces ()
{
if [[ -f /etc/debian_version ]]; then
COMPREPLY=($(compgen -W "$(command sed -ne 's|^iface \([^ ]\{1,\}\).*$|\1|p' /etc/network/interfaces /etc/network/interfaces.d/* 2>/dev/null)" -- "$cur"));
else
if [[ -f /etc/SuSE-release ]]; then
COMPREPLY=($(compgen -W "$(printf '%s\n' /etc/sysconfig/network/ifcfg-* |
command sed -ne 's|.*ifcfg-\([^*].*\)$|\1|p')" -- "$cur"));
else
if [[ -f /etc/pld-release ]]; then
COMPREPLY=($(compgen -W "$(command ls -B /etc/sysconfig/interfaces |
command sed -ne 's|.*ifcfg-\([^*].*\)$|\1|p')" -- "$cur"));
else
COMPREPLY=($(compgen -W "$(printf '%s\n' /etc/sysconfig/network-scripts/ifcfg-* |
command sed -ne 's|.*ifcfg-\([^*].*\)$|\1|p')" -- "$cur"));
fi;
fi;
fi
}
_count_args ()
{
local i cword words;
__reassemble_comp_words_by_ref "${1-}" words cword;
args=1;
for ((i = 1; i < cword; i++))
do
if [[ ${words[i]} != -* && ${words[i - 1]} != ${2-} || ${words[i]} == ${3-} ]]; then
((args++));
fi;
done
}
_dvd_devices ()
{
COMPREPLY+=($(compgen -f -d -X "!*/?(r)dvd*" -- "${cur:-/dev/}"))
}
_expand ()
{
case ${cur-} in
~*/*)
__expand_tilde_by_ref cur
;;
~*)
_tilde "$cur" || eval COMPREPLY[0]="$(printf ~%q "${COMPREPLY[0]#\~}")";
return ${#COMPREPLY[@]}
;;
esac
}
_filedir ()
{
local IFS='
';
_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='
';
else
local quoted;
_quote_readline_by_ref "${cur-}" quoted;
local xspec=${arg:+"!*.@($arg|${arg^^})"} plusdirs=();
local opts=(-f -X "$xspec");
[[ -n $xspec ]] && plusdirs=(-o plusdirs);
[[ -n ${COMP_FILEDIR_FALLBACK-} || -z ${plusdirs-} ]] || opts+=("${plusdirs[@]}");
reset=$(shopt -po noglob);
set -o noglob;
toks+=($(compgen "${opts[@]}" -- $quoted));
IFS=' ';
$reset;
IFS='
';
[[ -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='
'
};
fi;
if ((${#toks[@]} != 0)); then
compopt -o filenames 2> /dev/null;
COMPREPLY+=("${toks[@]}");
fi
}
_filedir_xspec ()
{
local cur prev words cword;
_init_completion || return;
_tilde "$cur" || return;
local IFS='
' xspec=${_xspecs[${1##*/}]} tmp;
local -a toks;
toks=($(
compgen -d -- "$(quote_readline "$cur")" | {
while read -r tmp; do
printf '%s\n' $tmp
done
}
));
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
}
));
[[ -n ${COMP_FILEDIR_FALLBACK:-} && ${#toks[@]} -lt 1 ]] && {
local reset=$(shopt -po noglob);
set -o noglob;
toks+=($(compgen -f -- "$(quote_readline "$cur")"));
IFS=' ';
$reset;
IFS='
'
};
if ((${#toks[@]} != 0)); then
compopt -o filenames;
COMPREPLY=("${toks[@]}");
fi
}
_fstypes ()
{
local fss;
if [[ -e /proc/filesystems ]]; then
fss="$(cut -d' ' -f2 /proc/filesystems)
$(awk '! /\*/ { print $NF }' /etc/filesystems 2>/dev/null)";
else
fss="$(awk '/^[ \t]*[^#]/ { print $3 }' /etc/fstab 2>/dev/null)
$(awk '/^[ \t]*[^#]/ { print $3 }' /etc/mnttab 2>/dev/null)
$(awk '/^[ \t]*[^#]/ { print $4 }' /etc/vfstab 2>/dev/null)
$(awk '{ print $1 }' /etc/dfs/fstypes 2>/dev/null)
$([[ -d /etc/fs ]] && command ls /etc/fs)";
fi;
[[ -n $fss ]] && COMPREPLY+=($(compgen -W "$fss" -- "$cur"))
}
_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" 1>&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" 1>&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_cword ()
{
local LC_CTYPE=C;
local cword words;
__reassemble_comp_words_by_ref "${1-}" words cword;
if [[ -n ${2-} && -n ${2//[^0-9]/} ]]; then
printf "%s" "${words[cword - $2]}";
else
if ((${#words[cword]} == 0 && COMP_POINT == ${#COMP_LINE})); then
:;
else
local i;
local cur="$COMP_LINE";
local index="$COMP_POINT";
for ((i = 0; i <= cword; ++i))
do
while [[ ${#cur} -ge ${#words[i]} && ${cur:0:${#words[i]}} != "${words[i]}" ]]; do
cur="${cur:1}";
((index > 0)) && ((index--));
done;
if ((i < cword)); then
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
printf "%s" "${words[cword]}";
else
printf "%s" "${cur:0:index}";
fi;
fi;
fi
}
_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
}
_get_pword ()
{
if ((COMP_CWORD >= 1)); then
_get_cword "${@:-}" 1;
fi
}
_gids ()
{
if type getent &> /dev/null; then
COMPREPLY=($(compgen -W '$(getent group | cut -d: -f3)' -- "$cur"));
else
if type perl &> /dev/null; then
COMPREPLY=($(compgen -W '$(perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"')' -- "$cur"));
else
COMPREPLY=($(compgen -W '$(cut -d: -f3 /etc/group)' -- "$cur"));
fi;
fi
}
_have ()
{
PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &> /dev/null
}
_hwloc_annotate ()
{
local OPTIONS=(--ci --ri --cu --cd -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
fi;
_filedir xml
}
_hwloc_bind ()
{
local OPTIONS=(--cpubind --membind --mempolicy --logical -l --physical -p --single --strict --get -e --get-last-cpu-location --nodeset --pid --tid --taskset --restrict --disallowed --whole-system --hbm --no-hbm --no-smt --no-smt=N -f --force -q --quiet -v --verbose --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
case "$prev" in
--mempolicy)
COMPREPLY=(`compgen -W "default firsttouch bind interleave nexttouch" -- "$cur"`)
;;
--pid)
COMPREPLY=("<pid>" "")
;;
--tid)
COMPREPLY=("<tid>" "")
;;
--restrict)
COMPREPLY=("<bitmask>" "")
;;
esac;
fi
}
_hwloc_calc ()
{
local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU");
local OPTIONS=(-N --number-of -I --intersect -H --hierarchical --largest -l --logical -p --physical --li --logical-input --lo --logical-output --pi --physical-input --po --physical-output -n --nodeset --ni --nodeset-input --no --nodeset-output --sep --taskset --single --restrict --disallowed --whole-system --input -i --input-format --if --no-smt --no-smt=N -q --quiet -v --verbose --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
case "$prev" in
-N | --number-of | -I | --intersect)
COMPREPLY=(`compgen -W "${TYPES[*]}" -- "$cur"`)
;;
-H | --hierarchical)
COMPREPLY=("<type1>.<type2>..." "")
;;
--sep)
COMPREPLY=("<separator>" "")
;;
-i | --input)
_filedir xml
;;
--if | --input-format)
COMPREPLY=(`compgen -W "${INPUT_FORMAT[*]}" -- "$cur"`)
;;
--restrict)
COMPREPLY=("<bitmask>" "")
;;
esac;
fi
}
_hwloc_compress_dir ()
{
local OPTIONS=(-R --reverse -v --verbose -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
fi;
_filedir -d
}
_hwloc_diff ()
{
local OPTIONS=(--refname --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
case "$prev" in
--refname)
COMPREPLY=("<reference topology identifier>" "")
;;
esac;
fi;
_filedir xml
}
_hwloc_distrib ()
{
local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU");
local OPTIONS=(--ignore --from --to --at --reverse --restrict --disallowed --whole-system --input -i --input-format --if --single --taskset -v --verbose --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
case "$prev" in
--ignore | --from | --to | --at)
COMPREPLY=(`compgen -W "${TYPES[*]}" -- "$cur"`)
;;
-i | --input)
_filedir xml
;;
--if | --input-format)
COMPREPLY=(`compgen -W "${INPUT_FORMAT[*]}" -- "$cur"`)
;;
--restrict)
COMPREPLY=("<bitmask>" "")
;;
esac;
fi
}
_hwloc_gather_cpuid ()
{
local OPTIONS=(-c -s --silent -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
case "$prev" in
-c)
COMPREPLY=("<index of cpu to operate on>" "")
;;
esac;
fi
}
_hwloc_gather_topology ()
{
local OPTIONS=(--io --dmi --no-cpuid --keep -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
fi
}
_hwloc_info ()
{
local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU");
local FILTERKINDS=("none" "all" "structure" "important");
local OPTIONS=(--objects --topology --support -v --verbose -s --silent --ancestors --ancestor --children --descendants -n --restrict --filter --no-icaches --no-io --no-bridges --whole-io --input -i --input-format --if --thissystem --pid --disallowed --whole-system -l --logical -p --physical --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
if [[ $COMP_CWORD -ge 3 && "${COMP_WORDS[COMP_CWORD-2]}" == "--filter" && "$cur" == ":" ]]; then
COMPREPLY=(`compgen -W "${FILTERKINDS[*]}"`);
else
if [[ $COMP_CWORD -ge 4 && "${COMP_WORDS[COMP_CWORD-3]}" == "--filter" && "$prev" == ":" ]]; then
COMPREPLY=(`compgen -W "${FILTERKINDS[*]}" -- "$cur"`);
else
case "$prev" in
--restrict)
COMPREPLY=(`compgen -W "binding <cpuset>" -- "$cur"`)
;;
-i | --input)
_filedir xml
;;
--if | --input-format)
COMPREPLY=(`compgen -W "${INPUT_FORMAT[*]}" -- "$cur"`)
;;
--pid)
COMPREPLY=("<pid>" "")
;;
--filter)
COMPREPLY=(`compgen -W "${TYPES[*]/%/:} cache: icache: io:" -- "$cur"`) && compopt -o nospace
;;
--ancestor | --descendants)
COMPREPLY=(`compgen -W "${TYPES[*]}" -- "$cur"`)
;;
esac;
fi;
fi;
fi
}
_hwloc_patch ()
{
local OPTIONS=(--R --reverse --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
fi;
_filedir xml
}
_hwloc_ps ()
{
local OPTIONS=(-a --pid --name -l --logical -p --physical -c --cpuset -t --threads -e --get-last-cpu-location --pid-cmd --uid --disallowed --whole-system --json-server --json-port -v --verbose -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
case "$prev" in
--name)
COMPREPLY=("<task name>" "")
;;
--uid)
COMPREPLY=("<uid>" "all" "")
;;
--pid)
COMPREPLY=("<pid>" "")
;;
--pid-cmd)
_filedir
;;
--json-port)
COMPREPLY=("<port>" "")
;;
esac;
fi
}
_included_ssh_config_files ()
{
(($# < 1)) && echo "bash_completion: $FUNCNAME: missing mandatory argument CONFIG" 1>&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;
[[ -n ${included-} ]] || return;
for i in "${included[@]}";
do
if ! [[ $i =~ ^\~.*|^\/.* ]]; then
if [[ $configfile =~ ^\/etc\/ssh.* ]]; then
i="/etc/ssh/$i";
else
i="$HOME/.ssh/$i";
fi;
fi;
__expand_tilde_by_ref i;
set +o noglob;
for f in $i;
do
if [[ -r $f ]]; then
config+=("$f");
_included_ssh_config_files $f;
fi;
done;
$reset;
done
}
_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" 1>&2;
return 1
;;
esac;
done;
COMPREPLY=();
local redir="@(?([0-9])<|?([0-9&])>?(>)|>&)";
_get_comp_words_by_ref -n "$exclude<>&" cur prev words cword;
_variables && return 1;
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;
local i skip;
for ((i = 1; i < ${#words[@]}; 1))
do
if [[ ${words[i]} == $redir* ]]; then
[[ ${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]};
[[ -n ${split-} ]] && _split_longopt && split=true;
return 0
}
_installed_modules ()
{
COMPREPLY=($(compgen -W "$(PATH="$PATH:/sbin" lsmod |
awk '{if (NR != 1) print $1}')" -- "$1"))
}
_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-}"))
}
_kernel_versions ()
{
COMPREPLY=($(compgen -W '$(command ls /lib/modules)' -- "$cur"))
}
_known_hosts ()
{
local cur prev words cword;
_init_completion -n : || return;
local options;
[[ ${1-} == -a || ${2-} == -a ]] && options=-a;
[[ ${1-} == -c || ${2-} == -c ]] && options+=" -c";
_known_hosts_real ${options-} -- "$cur"
}
_known_hosts_real ()
{
local configfile flag prefix="" ifs=$IFS;
local cur suffix="" aliases i host ipv4 ipv6;
local -a kh tmpkh=() khd=() config=();
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" 1>&2;
return 1
;;
esac;
done;
if (($# < OPTIND)); then
echo "bash_completion: $FUNCNAME: missing mandatory argument CWORD" 1>&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)" 1>&2;
return 1;
fi;
[[ $cur == *@* ]] && prefix=$prefix${cur%@*}@ && cur=${cur#*@};
kh=();
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;
if ((${#config[@]} > 0)); then
for i in "${config[@]}";
do
_included_ssh_config_files "$i";
done;
fi;
if ((${#config[@]} > 0)); then
local IFS='
';
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
while [[ $i =~ ^([^\"]*)\"([^\"]*)\"(.*)$ ]]; do
i=${BASH_REMATCH[1]}${BASH_REMATCH[3]};
j=${BASH_REMATCH[2]};
__expand_tilde_by_ref j;
[[ -r $j ]] && kh+=("$j");
done;
for j in $i;
do
__expand_tilde_by_ref j;
[[ -r $j ]] && kh+=("$j");
done;
done;
fi;
if [[ ! -v configfile ]]; then
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 ((${#kh[@]} + ${#khd[@]} > 0)); then
if ((${#kh[@]} > 0)); then
for i in "${kh[@]}";
do
while read -ra tmpkh; do
((${#tmpkh[@]} == 0)) && continue;
set -- "${tmpkh[@]}";
[[ $1 == [\|\#]* ]] && continue;
[[ $1 == @* ]] && shift;
local IFS=,;
for host in $1;
do
[[ $host == *[*?]* ]] && continue;
host="${host#[}";
host="${host%]?(:+([0-9]))}";
COMPREPLY+=($host);
done;
IFS=$ifs;
done < "$i";
done;
COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur"));
fi;
if ((${#khd[@]} > 0)); then
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;
for i in ${!COMPREPLY[*]};
do
COMPREPLY[i]=$prefix${COMPREPLY[i]}$suffix;
done;
fi;
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;
if [[ -n ${COMP_KNOWN_HOSTS_WITH_AVAHI-} ]] && type avahi-browse &> /dev/null; then
COMPREPLY+=($(compgen -P "$prefix" -S "$suffix" -W "$(avahi-browse -cpr _workstation._tcp 2>/dev/null |
awk -F';' '/^=/ { print $7 }' | sort -u)" -- "$cur"));
fi;
if type ruptime &> /dev/null; then
COMPREPLY+=($(compgen -W "$(ruptime 2>/dev/null | awk '!/^ruptime:/ { print $1 }')" -- "$cur"));
fi;
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
[[ -n ${COMPREPLY[i]} ]] || unset -v "COMPREPLY[i]";
done;
fi;
__ltrim_colon_completions "$prefix$cur"
}
_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;
else
if [[ $1 == *@(rmdir|chroot) ]]; then
_filedir -d;
else
[[ $1 == *mkdir ]] && compopt -o nospace;
_filedir;
fi;
fi
}
_lstopo ()
{
local INPUT_FORMAT=(xml synthetic fsroot cpuid);
local OUTPUT_FORMAT=(console ascii fig pdf ps png svg xml synthetic);
local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU");
local FILTERKINDS=("none" "all" "structure" "important");
local OPTIONS=(-l --logical -p --physical --output-format --of -f --force --only -v --verbose -s --silent --distances -c --cpuset -C --cpuset-only --taskset --filter --ignore --no-caches --no-useless-caches --no-icaches --merge --no-collapse --factorize --factorize= --no-factorize --no-factorize= --restrict --restrict-flags --no-io --no-bridges --whole-io --input -i --input-format --if --no-smt --thissystem --pid --disallowed --whole-system --allow --children-order --fontsize --gridsize --linespacing --horiz --horiz= --vert --vert= --rect --rect= --text --text= --no-text --no-text= --index --index= --no-index --no-index= --attrs --attrs= --no-attrs --no-attrs= --no-legend --append-legend --binding-color --disallowed-color --top-color --export-xml-flags --export-synthetic-flags --ps --top --version -h --help);
local cur=${COMP_WORDS[COMP_CWORD]};
local prev=${COMP_WORDS[COMP_CWORD-1]};
if [[ $COMP_CWORD == 1 || $cur == -* ]]; then
COMPREPLY=(`compgen -W "${OPTIONS[*]}" -- "$cur"`);
else
if [[ $COMP_CWORD -ge 3 && "${COMP_WORDS[COMP_CWORD-2]}" == "--filter" && "$cur" == ":" ]]; then
COMPREPLY=(`compgen -W "${FILTERKINDS[*]}"`);
else
if [[ $COMP_CWORD -ge 4 && "${COMP_WORDS[COMP_CWORD-3]}" == "--filter" && "$prev" == ":" ]]; then
COMPREPLY=(`compgen -W "${FILTERKINDS[*]}" -- "$cur"`);
else
if [[ "$cur" == "=" && " --horiz --vert --rect --text --no-text --index --no-index --attrs --no-attrs --no-factorize " =~ " $prev " ]]; then
COMPREPLY=(`compgen -W "${TYPES[*]}"`);
else
if [[ $COMP_CWORD -ge 3 && "$prev" == "=" && " --horiz --vert --rect --text --no-text --index --no-index --attrs --no-attrs --no-factorize --factorize " =~ " ${COMP_WORDS[COMP_CWORD-2]} " ]]; then
COMPREPLY=(`compgen -W "${TYPES[*]}" -- "$cur"`);
else
if [[ "$cur" == "=" && "--factorize" = "$prev" ]]; then
COMPREPLY=(`compgen -W "${TYPES[*]}"` "<N>" "<N,F,L>");
else
case "$prev" in
--of | --output-format)
COMPREPLY=(`compgen -W "${OUTPUT_FORMAT[*]}" -- "$cur"`)
;;
--only | --ignore)
COMPREPLY=(`compgen -W "${TYPES[*]}" -- "$cur"`)
;;
--filter)
COMPREPLY=(`compgen -W "${TYPES[*]/%/:} cache: icache: io:" -- "$cur"`) && compopt -o nospace
;;
--restrict)
COMPREPLY=(`compgen -W "binding <cpuset>" -- "$cur"`)
;;
-i | --input)
_filedir xml
;;
--if | --input-format)
COMPREPLY=(`compgen -W "${INPUT_FORMAT[*]}" -- "$cur"`)
;;
--pid)
COMPREPLY=("<pid>" "")
;;
--allow)
COMPREPLY=(`compgen -W "all local <mask> nodeset=<mask>" -- "$cur"`)
;;
--restrict-flags | --export-xml-flags | --export-synthetic-flags | --fontsize | --gridsize | --linespacing)
COMPREPLY=("<integer>" "")
;;
--append-legend)
COMPREPLY=("<line of text>" "")
;;
--binding-color | --disallowed-color)
COMPREPLY=(`compgen -W "none" -- "$cur"`)
;;
--top-color)
COMPREPLY=(`compgen -W "none <#xxyyzz>" -- "$cur"`)
;;
--children-order)
COMPREPLY=(`compgen -W "plain memoryabove" -- "$cur"`)
;;
esac;
fi;
fi;
fi;
fi;
fi;
fi
}
_mac_addresses ()
{
local re='\([A-Fa-f0-9]\{2\}:\)\{5\}[A-Fa-f0-9]\{2\}';
local PATH="$PATH:/sbin:/usr/sbin";
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"
));
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"));
COMPREPLY+=($(command sed -ne "s/^[[:space:]]*\($re\)[[:space:]].*/\1/p" /etc/ethers 2>/dev/null));
COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur"));
__ltrim_colon_completions "$cur"
}
_minimal ()
{
local cur prev words cword split;
_init_completion -s || return;
$split && return;
_filedir
}
_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"))
}
_ncpus ()
{
local var=NPROCESSORS_ONLN;
[[ $OSTYPE == *linux* ]] && var=_$var;
local n=$(getconf $var 2>/dev/null);
printf %s ${n:-1}
}
_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;
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_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?]))
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
}
_pci_ids ()
{
COMPREPLY+=($(compgen -W "$(PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur"))
}
_pgids ()
{
COMPREPLY=($(compgen -W '$(command ps axo pgid=)' -- "$cur"))
}
_pids ()
{
COMPREPLY=($(compgen -W '$(command ps axo pid=)' -- "$cur"))
}
_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='
';
local -a psout=($(command ps axo command=));
IFS=$ifs;
for line in "${psout[@]}";
do
if ((i == -1)); then
if [[ $line =~ ^(.*[[:space:]])COMMAND([[:space:]]|$) ]]; then
i=${#BASH_REMATCH[1]};
else
break;
fi;
else
line=${line:i};
line=${line%% *};
procs+=($line);
fi;
done;
if ((i == -1)); then
for line in "${psout[@]}";
do
if [[ $line =~ ^[[(](.+)[])]$ ]]; then
procs+=(${BASH_REMATCH[1]});
else
line=${line%% *};
line=${line##@(*/|-)};
procs+=($line);
fi;
done;
fi;
fi;
COMPREPLY=($(compgen -X "<defunct>" -W '${procs[@]}' -- "$cur"))
}
_quote_readline_by_ref ()
{
if [[ $1 == \'* ]]; then
printf -v $2 %s "${1:1}";
else
printf -v $2 %q "$1";
fi;
[[ ${!2} == \$* ]] && eval $2=${!2}
}
_realcommand ()
{
type -P "$1" > /dev/null && {
if type -p realpath > /dev/null; then
realpath "$(type -P "$1")";
else
if type -p greadlink > /dev/null; then
greadlink -f "$(type -P "$1")";
else
if type -p readlink > /dev/null; then
readlink -f "$(type -P "$1")";
else
type -P "$1";
fi;
fi;
fi
}
}
_rl_enabled ()
{
[[ "$(bind -v)" == *$1+([[:space:]])on* ]]
}
_root_command ()
{
local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin;
local root_command=$1;
_command
}
_service ()
{
local cur prev words cword;
_init_completion || return;
((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
}
_services ()
{
local sysvdirs;
_sysvdirs;
local IFS='
' 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"))
}
_shells ()
{
local shell rest;
while read -r shell rest; do
[[ $shell == /* && $shell == "$cur"* ]] && COMPREPLY+=($shell);
done 2> /dev/null < /etc/shells
}
_signals ()
{
local -a sigs=($(compgen -P "${1-}" -A signal "SIG${cur#${1-}}"));
COMPREPLY+=("${sigs[@]/#${1-}SIG/${1-}}")
}
_split_longopt ()
{
if [[ $cur == --?*=* ]]; then
prev="${cur%%?(\\)=*}";
cur="${cur#*=}";
return 0;
fi;
return 1
}
_sysvdirs ()
{
sysvdirs=();
[[ -d /etc/rc.d/init.d ]] && sysvdirs+=(/etc/rc.d/init.d);
[[ -d /etc/init.d ]] && sysvdirs+=(/etc/init.d);
[[ -f /etc/slackware-version ]] && sysvdirs=(/etc/rc.d);
return 0
}
_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"))
}
_tilde ()
{
local result=0;
if [[ ${1-} == \~* && $1 != */* ]]; then
COMPREPLY=($(compgen -P '~' -u -- "${1#\~}"));
result=${#COMPREPLY[@]};
((result > 0)) && compopt -o filenames 2> /dev/null;
fi;
return $result
}
_uids ()
{
if type getent &> /dev/null; then
COMPREPLY=($(compgen -W '$(getent passwd | cut -d: -f3)' -- "$cur"));
else
if type perl &> /dev/null; then
COMPREPLY=($(compgen -W '$(perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"')' -- "$cur"));
else
COMPREPLY=($(compgen -W '$(cut -d: -f3 /etc/passwd)' -- "$cur"));
fi;
fi
}
_upvar ()
{
echo "bash_completion: $FUNCNAME: deprecated function," "use _upvars instead" 1>&2;
if unset -v "$1"; then
if (($# == 2)); then
eval $1=\"\$2\";
else
eval $1=\(\"\$"{@:2}"\"\);
fi;
fi
}
_upvars ()
{
if ! (($#)); then
echo "bash_completion: $FUNCNAME: usage: $FUNCNAME" "[-v varname value] | [-aN varname [value ...]] ..." 1>&2;
return 2;
fi;
while (($#)); do
case $1 in
-a*)
[[ -n ${1#-a} ]] || {
echo "bash_completion: $FUNCNAME:" "\`$1': missing number specifier" 1>&2;
return 1
};
printf %d "${1#-a}" &> /dev/null || {
echo bash_completion: "$FUNCNAME: \`$1': invalid number specifier" 1>&2;
return 1
};
[[ -n "$2" ]] && unset -v "$2" && eval $2=\(\"\$"{@:3:${1#-a}}"\"\) && shift $((${1#-a} + 2)) || {
echo bash_completion: "$FUNCNAME: \`$1${2+ }$2': missing argument(s)" 1>&2;
return 1
}
;;
-v)
[[ -n "$2" ]] && unset -v "$2" && eval $2=\"\$3\" && shift 3 || {
echo "bash_completion: $FUNCNAME: $1:" "missing argument(s)" 1>&2;
return 1
}
;;
*)
echo "bash_completion: $FUNCNAME: $1: invalid option" 1>&2;
return 1
;;
esac;
done
}
_usb_ids ()
{
COMPREPLY+=($(compgen -W "$(PATH="$PATH:/sbin" lsusb | awk '{print $6}')" -- "$cur"))
}
_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
}
_usergroup ()
{
if [[ $cur == *\\\\* || $cur == *:*:* ]]; then
return;
else
if [[ $cur == *\\:* ]]; then
local prefix;
prefix=${cur%%*([^:])};
prefix=${prefix//\\/};
local mycur="${cur#*[:]}";
if [[ ${1-} == -u ]]; then
_allowed_groups "$mycur";
else
local IFS='
';
COMPREPLY=($(compgen -g -- "$mycur"));
fi;
COMPREPLY=($(compgen -P "$prefix" -W "${COMPREPLY[@]}"));
else
if [[ $cur == *:* ]]; then
local mycur="${cur#*:}";
if [[ ${1-} == -u ]]; then
_allowed_groups "$mycur";
else
local IFS='
';
COMPREPLY=($(compgen -g -- "$mycur"));
fi;
else
if [[ ${1-} == -u ]]; then
_allowed_users "$cur";
else
local IFS='
';
COMPREPLY=($(compgen -u -- "$cur"));
fi;
fi;
fi;
fi
}
_userland ()
{
local userland=$(uname -s);
[[ $userland == @(Linux|GNU/*) ]] && userland=GNU;
[[ $userland == "$1" ]]
}
_variables ()
{
if [[ $cur =~ ^(\$(\{[!#]?)?)([A-Za-z0-9_]*)$ ]]; then
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
compopt -o nospace;
COMPREPLY+=(${arrs[*]});
else
COMPREPLY+=(${vars[*]});
fi;
else
COMPREPLY+=($(compgen -A variable -P '$' -- "${BASH_REMATCH[3]}"));
fi;
return 0;
else
if [[ $cur =~ ^(\$\{[#!]?)([A-Za-z0-9_]*)\[([^]]*)$ ]]; then
local IFS='
';
COMPREPLY+=($(compgen -W '$(printf %s\\n "${!'${BASH_REMATCH[2]}'[@]}")' -P "${BASH_REMATCH[1]}${BASH_REMATCH[2]}[" -S ']}' -- "${BASH_REMATCH[3]}"));
if [[ ${BASH_REMATCH[3]} == [@*] ]]; then
COMPREPLY+=("${BASH_REMATCH[1]}${BASH_REMATCH[2]}[${BASH_REMATCH[3]}]}");
fi;
__ltrim_colon_completions "$cur";
return 0;
else
if [[ $cur =~ ^\$\{[#!]?[A-Za-z0-9_]*\[.*\]$ ]]; then
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;
else
if [[ -d ${COMPREPLY[i]} ]]; then
COMPREPLY[i]+=/;
compopt -o nospace;
fi;
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;
fi;
fi;
return 1
}
_xfunc ()
{
set -- "$@";
local srcfile=$1;
shift;
declare -F $1 &> /dev/null || __load_completion "$srcfile";
"$@"
}
_xinetd_services ()
{
local xinetddir=${BASHCOMP_XINETDDIR:-/etc/xinetd.d};
if [[ -d $xinetddir ]]; then
local IFS='
' 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
}
colors ()
{
local fgc bgc vals seq0;
printf "Color escapes are %s\n" '\e[${value};...;${value}m';
printf "Values 30..37 are \e[33mforeground colors\e[m\n";
printf "Values 40..47 are \e[43mbackground colors\e[m\n";
printf "Value 1 gives a \e[1mbold-faced look\e[m\n\n";
for fgc in {30..37};
do
for bgc in {40..47};
do
fgc=${fgc#37};
bgc=${bgc#40};
vals="${fgc:+$fgc;}${bgc}";
vals=${vals%%;};
seq0="${vals:+\e[${vals}m}";
printf " %-9s" "${seq0:-(default)}";
printf " ${seq0}TEXT\e[m";
printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m";
done;
echo;
echo;
done
}
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
ex ()
{
if [ -f $1 ]; then
case $1 in
*.tar.bz2)
tar xjf $1
;;
*.tar.gz)
tar xzf $1
;;
*.bz2)
bunzip2 $1
;;
*.rar)
unrar x $1
;;
*.gz)
gunzip $1
;;
*.tar)
tar xf $1
;;
*.tbz2)
tar xjf $1
;;
*.tgz)
tar xzf $1
;;
*.zip)
unzip $1
;;
*.Z)
uncompress $1
;;
*.7z)
7z x $1
;;
*)
echo "'$1' cannot be extracted via ex()"
;;
esac;
else
echo "'$1' is not a valid file";
fi
}
msdos_pwd ()
{
local dir="`pwd`";
echo $dir | tr '/' '\\'
}
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
quote_readline ()
{
local ret;
_quote_readline_by_ref "$1" ret;
printf %s "$ret"
}
As one can see “XDG_VTNR” is where the garbage starts, and as it’s said to be PAM related, there we got the reason for the sudo problem, I assume.
LC_ALL is inmidst of the script that somehow got copied into the environment variables, so this probably also explains the locale problem.
What happened there? How can I resolve it?