All pastes #1197706 Raw Edit

Mine

public text v1 · immutable
#1197706 ·published 2008-09-09 01:14 UTC
rendered paste body
#   bash_completion - programmable completion functions for bash 3.x#		      (backwards compatible with bash 2.05b)##   $Id: bash_completion,v 1.872 2006/03/01 16:20:18 ianmacd Exp $##   Copyright (C) Ian Macdonald <ian@caliban.org>##   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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.##   The latest version of this software can be obtained here:##   http://www.caliban.org/bash/index.shtml#completion##   RELEASE: 20060301if [[ $- == *v* ]]; then	BASH_COMPLETION_ORIGINAL_V_VALUE="-v"else	BASH_COMPLETION_ORIGINAL_V_VALUE="+v"fiif [[ -n $BASH_COMPLETION_DEBUG ]]; then	set -velse	set +vfi# Alter the following to reflect the location of this file.#[ -n "$BASH_COMPLETION" ] || BASH_COMPLETION=/etc/bash_completion[ -n "$BASH_COMPLETION_DIR" ] || BASH_COMPLETION_DIR=/etc/bash_completion.dreadonly BASH_COMPLETION BASH_COMPLETION_DIR# Set a couple of useful vars#UNAME=$( uname -s )# strip OS type and version under Cygwin (e.g. CYGWIN_NT-5.1 => Cygwin)UNAME=${UNAME/CYGWIN_*/Cygwin}RELEASE=$( uname -r )# features supported by bash 2.05 and higherif [ ${BASH_VERSINFO[0]} -eq 2 ] && [[ ${BASH_VERSINFO[1]} > 04 ]] ||   [ ${BASH_VERSINFO[0]} -gt 2 ]; then	declare -r bash205=$BASH_VERSION 2>/dev/null || :	default="-o default"	dirnames="-o dirnames"	filenames="-o filenames"fi# features supported by bash 2.05b and higherif [ ${BASH_VERSINFO[0]} -eq 2 ] && [[ ${BASH_VERSINFO[1]} = "05b" ]] ||   [ ${BASH_VERSINFO[0]} -gt 2 ]; then	declare -r bash205b=$BASH_VERSION 2>/dev/null || :	nospace="-o nospace"fi# features supported by bash 3.0 and higherif [ ${BASH_VERSINFO[0]} -gt 2 ]; then	declare -r bash3=$BASH_VERSION 2>/dev/null || :	bashdefault="-o bashdefault"	plusdirs="-o plusdirs"fi# Turn on extended globbing and programmable completionshopt -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# Make directory commands see only directoriescomplete -d pushd# The following section lists completions that are redefined later# Do NOT break these over multiple lines.## START exclude -- do NOT remove this linecomplete -f -X '!*.?(t)bz?(2)' bunzip2 bzcat bzcmp bzdiff bzegrep bzfgrep bzgrepcomplete -f -X '!*.@(zip|ZIP|jar|JAR|exe|EXE|pk3|war|wsz|ear|zargo|xpi|sxw|ott)' unzip zipinfocomplete -f -X '*.Z' compress znewcomplete -f -X '!*.@(Z|gz|tgz|Gz|dz)' gunzip zcmp zdiff zcat zegrep zfgrep zgrep zless zmorecomplete -f -X '!*.Z' uncompresscomplete -f -X '!*.@(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)' ee displaycomplete -f -X '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|GIF|JPG|JP?(E)G|TIF?(F)|PNG|P[BGP]M|BMP|X[BP]M|RLE|RGB|PCX|FITS|PM)' xv qivcomplete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostviewcomplete -f -X '!*.@(dvi|DVI)?(.@(gz|Z|bz2))' xdvicomplete -f -X '!*.@(dvi|DVI)?(.@(gz|bz2))' kdvicomplete -f -X '!*.@(dvi|DVI)' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmxcomplete -f -X '!*.@(pdf|PDF)' acroread gpdf xpdfcomplete -f -X '!*.@(?(e)ps|?(E)PS|pdf|PDF)' kpdfcomplete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ)|cb(r|z)|CB(R|Z)|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)' evincecomplete -f -X '!*.@(?(e)ps|?(E)PS)' ps2pdfcomplete -f -X '!*.texi*' makeinfo texi2htmlcomplete -f -X '!*.@(?(la)tex|?(LA)TEX|texi|TEXI|dtx|DTX|ins|INS)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvicomplete -f -X '!*.@(mp3|MP3)' mpg123 mpg321 madplaycomplete -f -X '!*.@(mp?(e)g|MP?(E)G|wma|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|viv|rm|ram|yuv|mov|MOV|qt|QT|wmv|mp3|MP3|m4v|M4V|ogg|OGG|ogm|OGM|mp4|MP4|wav|WAV|asx|ASX|mng|MNG|srt)' xine aaxine fbxine kaffeinecomplete -f -X '!*.@(avi|asf|wmv)' aviplaycomplete -f -X '!*.@(rm?(j)|ra?(m)|smi?(l))' realplaycomplete -f -X '!*.@(mpg|mpeg|avi|mov|qt)' xanimcomplete -f -X '!*.@(ogg|OGG|m3u|flac|spx)' ogg123complete -f -X '!*.@(mp3|MP3|ogg|OGG|pls|m3u)' gqmpeg freeampcomplete -f -X '!*.fig' xfigcomplete -f -X '!*.@(mid?(i)|MID?(I))' playmidicomplete -f -X '!*.@(mid?(i)|MID?(I)|rmi|RMI|rcp|RCP|[gr]36|[GR]36|g18|G18|mod|MOD|xm|XM|it|IT|x3m|X3M)' timiditycomplete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' vi vim gvim rvim view rview rgvim rgview gviewcomplete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' emacscomplete -f -X '!*.@(exe|EXE|com|COM|scr|SCR|exe.so)' winecomplete -f -X '!*.@(zip|ZIP|z|Z|gz|GZ|tgz|TGZ)' bzmecomplete -f -X '!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))' netscape mozilla lynx opera galeon curl dillo elinks amayacomplete -f -X '!*.@(sxw|stw|sxg|sgl|doc|dot|rtf|txt|htm|html|odt|ott|odm)' oowritercomplete -f -X '!*.@(sxi|sti|pps|ppt|pot|odp|otp)' ooimpresscomplete -f -X '!*.@(sxc|stc|xls|xlw|xlt|csv|ods|ots)' oocalccomplete -f -X '!*.@(sxd|std|sda|sdd|odg|otg)' oodrawcomplete -f -X '!*.@(sxm|smf|mml|odf)' oomathcomplete -f -X '!*.odb' oobasecomplete -f -X '!*.rpm' rpm2cpio# FINISH exclude -- do not remove this line# start of section containing compspecs that can be handled within bash# user commands see only userscomplete -u su usermod userdel passwd chage write chfn groups slay w sux# group commands see only groups[ -n "$bash205" ] && complete -g groupmod groupdel newgrp 2>/dev/null# bg completes with stopped jobscomplete -A stopped -P '%' bg# other job commandscomplete -j -P '%' fg jobs disown# readonly and unset complete with shell variablescomplete -v readonly unset# set completes with set optionscomplete -A setopt set# shopt completes with shopt optionscomplete -A shopt shopt# helptopicscomplete -A helptopic help# unalias completes with aliasescomplete -a unalias# bind completes with readline bindings (make this more intelligent)complete -A binding bind# type and which complete on commandscomplete -c command type which# builtin completes on builtinscomplete -b builtin# start of section containing completion functions called by other functions# This function checks whether we have a given program on the system.# No need for bulky functions in memory if we don't.#have(){	unset -v have	PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null &&		have="yes"}# use GNU sed if we have it, since its extensions are still used in our code#[ $UNAME != Linux ] && have gsed && alias sed=gsed# This function checks whether a given readline variable# is `on'.#_rl_enabled() {    [[ "$( bind -v )" = *$1+([[:space:]])on* ]]}# This function shell-quotes the argumentquote(){	echo \'${1//\'/\'\\\'\'}\' #'# Help vim syntax highlighting}# This function quotes the argument in a way so that readline dequoting# results in the original argumentquote_readline(){	local t="${1//\\/\\\\}"	echo \'${t//\'/\'\\\'\'}\' #'# Help vim syntax highlighting}# This function shell-dequotes the argumentdequote(){	eval echo "$1"}# 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 -------->   ^# it will complete just "foo", not "foobar", which is what the user wants.)_get_cword(){	if [[ "${#COMP_WORDS[COMP_CWORD]}" -eq 0 ]] || [[ "$COMP_POINT" == "${#COMP_LINE}" ]]; then		echo "${COMP_WORDS[COMP_CWORD]}"	else		local i		local cur="$COMP_LINE"		local index="$COMP_POINT"		for (( i = 0; i <= COMP_CWORD; ++i )); do			while [[ "${#cur}" -ge ${#COMP_WORDS[i]} ]] && [[ "${cur:0:${#COMP_WORDS[i]}}" != "${COMP_WORDS[i]}" ]]; do				cur="${cur:1}"				index="$(( index - 1 ))"			done			if [[ "$i" -lt "$COMP_CWORD" ]]; then				local old_size="${#cur}"				cur="${cur#${COMP_WORDS[i]}}"				local new_size="${#cur}"				index="$(( index - old_size + new_size ))"			fi		done		if [[ "${COMP_WORDS[COMP_CWORD]:0:${#cur}}" != "$cur" ]]; then			# We messed up! At least return the whole word so things keep working			echo "${COMP_WORDS[COMP_CWORD]}"		else			echo "${cur:0:$index}"		fi	fi}# This function performs file and directory completion. It's better than# simply using 'compgen -f', because it honours spaces in filenames.# If passed -d, it completes only on directories. If passed anything else,# it's assumed to be a file glob to complete on.#_filedir(){	local IFS=$'\t\n' xspec	_expand || return 0	local toks=( ) tmp	while read -r tmp; do		[[ -n $tmp ]] && toks[${#toks[@]}]=$tmp	done < <( compgen -d -- "$(quote_readline "$cur")" )	if [[ "$1" != -d ]]; then		xspec=${1:+"!*.$1"}		while read -r tmp; do			[[ -n $tmp ]] && toks[${#toks[@]}]=$tmp		done < <( compgen -f -X "$xspec" -- "$(quote_readline "$cur")" )	fi	COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" )}# This function completes on signal names#_signals(){	local i	# standard signal completion is rather braindead, so we need	# to hack around to get what we want here, which is to	# complete on a dash, followed by the signal name minus	# the SIG prefix	COMPREPLY=( $( compgen -A signal SIG${cur#-} ))	for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do		COMPREPLY[i]=-${COMPREPLY[i]#SIG}	done}# This function completes on configured network interfaces#_configured_interfaces(){	if [ -f /etc/debian_version ]; then		# Debian system		COMPREPLY=( $( sed -ne 's|^iface \([^ ]\+\).*$|\1|p' \			       /etc/network/interfaces ) )	elif [ -f /etc/SuSE-release ]; then		# SuSE system		COMPREPLY=( $( command ls \			/etc/sysconfig/network/ifcfg-* | \			sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) )	elif [ -f /etc/pld-release ]; then		# PLD Linux		COMPREPLY=( $( command ls -B \			/etc/sysconfig/interfaces | \			sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) )	else		# Assume Red Hat		COMPREPLY=( $( command ls \			/etc/sysconfig/network-scripts/ifcfg-* | \			sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) )	fi}# This function completes on all available network interfaces# -a: restrict to active interfaces only# -w: restrict to wireless interfaces only#_available_interfaces(){	local cmd	if [ "${1:-}" = -w ]; then		cmd="iwconfig"	elif [ "${1:-}" = -a ]; then		cmd="ifconfig"	else		cmd="ifconfig -a"	fi	COMPREPLY=( $( eval $cmd 2>/dev/null | \		sed -ne 's|^\('$cur'[^[:space:][:punct:]]\{1,\}\).*$|\1|p') )}# This function expands tildes in pathnames#_expand(){	# FIXME: Why was this here?	# [ "$cur" != "${cur%\\}" ] && cur="$cur\\"	# expand ~username type directory specifications	if [[ "$cur" == \~*/* ]]; then		eval cur=$cur	elif [[ "$cur" == \~* ]]; then		cur=${cur#\~}		COMPREPLY=( $( compgen -P '~' -u $cur ) )		return ${#COMPREPLY[@]}	fi}# This function completes on process IDs.# AIX and Solaris ps prefers X/Open syntax.[ $UNAME = SunOS -o $UNAME = AIX ] &&_pids(){	COMPREPLY=( $( compgen -W '$( command ps -efo pid | sed 1d )' -- $cur ))} ||_pids(){	COMPREPLY=( $( compgen -W '$( command ps axo pid | sed 1d )' -- $cur ) )}# This function completes on process group IDs.# AIX and SunOS prefer X/Open, all else should be BSD.[ $UNAME = SunOS -o $UNAME = AIX ] &&_pgids(){	COMPREPLY=( $( compgen -W '$( command ps -efo pgid | sed 1d )' -- $cur ))} ||_pgids(){	COMPREPLY=( $( compgen -W '$( command ps axo pgid | sed 1d )' -- $cur ))}# This function completes on user IDs#_uids(){	if type getent &>/dev/null; then	    COMPREPLY=( $( getent passwd | \			    awk -F: '{if ($3 ~ /^'$cur'/) print $3}' ) )	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=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'$cur'/) print $3}'\			    /etc/passwd ) )	fi}# This function completes on group IDs#_gids(){	if type getent &>/dev/null; then	    COMPREPLY=( $( getent group | \			    awk -F: '{if ($3 ~ /^'$cur'/) print $3}' ) )	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=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'$cur'/) print $3}'\			    /etc/group ) )	fi}# This function completes on services#_services(){	local sysvdir famdir	[ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d	famdir=/etc/xinetd.d	COMPREPLY=( $( builtin echo $sysvdir/!(*.rpmsave|*.rpmorig|*~|functions)) )	if [ -d $famdir ]; then		COMPREPLY=( "${COMPREPLY[@]}" $( builtin echo $famdir/!(*.rpmsave|*.rpmorig|*~)) )	fi	COMPREPLY=( $( compgen -W '${COMPREPLY[@]#@($sysvdir|$famdir)/}' -- $cur ) )}# This function complete on modules#_modules(){	local modpath	modpath=/lib/modules/$1	COMPREPLY=( $( command ls -R $modpath | \			sed -ne 's/^\('$cur'.*\)\.k\?o\(\|.gz\)$/\1/p') )}# this function complete on user:group format#_usergroup(){	local IFS=$'\n'	cur=${cur//\\\\ / }	if [[ $cur = *@(\\:|.)* ]] && [ -n "$bash205" ]; then		user=${cur%%*([^:.])}		COMPREPLY=( $(compgen -P ${user/\\\\} -g -- ${cur##*[.:]}) )	elif [[ $cur = *:* ]] && [ -n "$bash205" ]; then		COMPREPLY=( $( compgen -g -- ${cur##*[.:]} ) )	else		COMPREPLY=( $( compgen -S : -u -- $cur ) )	fi}# this function count the number of mandatory args#_count_args(){	args=1	for (( i=1; i < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" != -* ]]; then			args=$(($args+1))		fi	done}# start of section containing completion functions for bash built-ins# bash alias completion#_alias(){	local cur	COMPREPLY=()	cur=${COMP_WORDS[$COMP_CWORD]}	case "$COMP_LINE" in	*[^=])		COMPREPLY=( $( compgen -A alias -S '=' -- $cur ) )		;;	*=)		COMPREPLY=( "$( alias ${cur%=} 2>/dev/null | \			     sed -e 's|^alias '$cur'\(.*\)$|\1|' )" )		;;	esac}complete -F _alias $nospace alias# bash export completion#_export(){	local cur	COMPREPLY=()	cur=${COMP_WORDS[$COMP_CWORD]}	case "$COMP_LINE" in	*=\$*)		COMPREPLY=( $( compgen -v -P '$' -- ${cur#*=\$} ) )		;;	*[^=])		COMPREPLY=( $( compgen -v -S '=' -- $cur ) )		;;	*=)		COMPREPLY=( "$( eval echo -n \"$`echo ${cur%=}`\" |			( echo -n \'			  sed -e 's/'\''/'\''\\\'\'''\''/g'			  echo -n \' ) )" )		;;	esac}complete -F _export $default $nospace export# bash shell function completion#_function(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ $1 == @(declare|typeset) ]]; then		if [ "$prev" = -f ]; then			COMPREPLY=( $( compgen -A function -- $cur ) )		elif [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '-a -f -F -i -r -x -p' -- \				       $cur ) )		fi	elif [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -A function -- $cur ) )	else		COMPREPLY=( "() $( type -- ${COMP_WORDS[1]} | sed -e 1,2d )" )	fi}complete -F _function function declare typeset# bash complete completion#_complete(){	local cur prev options	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		-o)			options="default dirnames filenames"			[ -n "$bash205b" ] && options="$options nospace"			[ -n "$bash3" ] && options="$options bashdefault plusdirs"			COMPREPLY=( $( compgen -W "$options" -- $cur ) )			return 0			;;		-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 0			;;		-C)			COMPREPLY=( $( compgen -A command -- $cur ) )			return 0			;;		-F)			COMPREPLY=( $( compgen -A function -- $cur ) )			return 0			;;		-@(p|r))			COMPREPLY=( $( complete -p | sed -e 's|.* ||' | \					grep "^$cur" ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		# relevant options completion		options="-a -b -c -d -e -f -g -j -k -s -v -u -A -G -W -P -S -X -F -C"		[ -n "$bash205" ] && options="$options -o"		COMPREPLY=( $( compgen -W "$options" -- $cur ) )	else		COMPREPLY=( $( compgen -A command -- $cur ) )	fi}complete -F _complete complete# start of section containing completion functions for external programs# a little help for FreeBSD ports users[ $UNAME = FreeBSD ] && complete -W 'index search fetch fetch-list \	extract patch configure build install reinstall \	deinstall clean clean-depends kernel buildworld' make# 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#{ have service || [ -d /etc/init.d/ ]; } &&_service(){	local cur sysvdir	COMPREPLY=()	prev=${COMP_WORDS[COMP_CWORD-1]}	cur=`_get_cword`	# don't complete for things like killall, ssh and mysql if it's	# the standalone command, rather than the init script	[[ ${COMP_WORDS[0]} != @(*init.d/!(functions|~)|service) ]] && return 0	# don't complete past 2nd token	[ $COMP_CWORD -gt 2 ] && return 0	[ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \				|| sysvdir=/etc/init.d	if [[ $COMP_CWORD -eq 1 ]] && [[ $prev == "service" ]]; then		_services	else		COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \				s/^.*Usage.*{\(.*\)}.*$/\1/p" \				$sysvdir/${prev##*/} 2>/dev/null`' -- $cur ) )	fi	return 0} &&complete -F _service service[ -d /etc/init.d/ ] && complete -F _service $default \	$(for i in /etc/init.d/*; do echo ${i##*/}; done)# chown(1) completion#_chown(){	local cur	cur=`_get_cword`	# options completion	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \		--dereference --no-dereference --from= --silent --quiet \		--reference= --recursive --verbose --help --version' -- $cur ) )	else		_count_args		case $args in			1)				_usergroup				;;			*)				_filedir				;;		esac	fi}complete -F _chown $filenames chown# chgrp(1) completion#_chgrp(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	cur=${cur//\\\\/}	prev=${COMP_WORDS[COMP_CWORD-1]}	# options completion	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \		--dereference --no-dereference --silent --quiet \		--reference= --recursive --verbose --help --version' -- $cur ) )		return 0	fi	# first parameter on line or first since an option?	if [ $COMP_CWORD -eq 1 ] && [[ "$cur" != -* ]] || \	   [[ "$prev" == -* ]] && [ -n "$bash205" ]; then		local IFS=$'\n'		COMPREPLY=( $( compgen -g $cur 2>/dev/null ) )	else		_filedir || return 0	fi	return 0}complete -F _chgrp $filenames chgrp# umount(8) completion. This relies on the mount point being the third# space-delimited field in the output of mount(8)#_umount(){	local cur	COMPREPLY=()	cur=`_get_cword`	OLDIFS="$IFS"	IFS="\n"	COMPREPLY=( $( compgen -W '$( mount | cut -d" " -f 3 )' -- $cur ) )	IFS="$OLDIFS"	return 0}complete -F _umount $dirnames umount# mount(8) completion. 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 i sm host	COMPREPLY=()	cur=`_get_cword`	[[ "$cur" == \\ ]] && cur="/"	for i in {,/usr}/{,s}bin/showmount; do [ -x $i ] && sm=$i && break; done	if [ -n "$sm" ] && [[ "$cur" == *:* ]]; then		COMPREPLY=( $( $sm -e ${cur%%:*} | sed 1d | \			       grep ^${cur#*:} | awk '{print $1}' ) )	elif [[ "$cur" == //* ]]; then		host=${cur#//}		host=${host%%/*}		if [ -n "$host" ]; then			COMPREPLY=( $( compgen -W "$( echo $( smbclient -d 0 -NL $host 2>/dev/null|			sed -ne '/^['"$'\t '"']*Sharename/,/^$/p' |			sed -ne '3,$s|^[^A-Za-z]*\([^'"$'\t '"']*\).*$|//'$host'/\1|p' ) )" -- "$cur" ) )		fi	elif [ -r /etc/vfstab ]; then		# Solaris		COMPREPLY=( $( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' \				/etc/vfstab | grep "^$cur" ) )	elif [ ! -e /etc/fstab ]; then		# probably Cygwin		COMPREPLY=( $( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' \				 | grep "^$cur" ) )	else		# probably Linux		COMPREPLY=( $( awk '! /^[ \t]*#/ {if ($2 ~ /\//) print $2}' \				/etc/fstab | grep "^$cur" ) )	fi	return 0}complete -F _mount $default $filenames mount# Linux rmmod(8) completion. This completes on a list of all currently# installed kernel modules.#have rmmod && {_rmmod(){	local cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( /sbin/lsmod | \		  awk '{if (NR != 1 && $1 ~ /^'$cur'/) print $1}' 2>/dev/null ))	return 0}complete -F _rmmod rmmod# Linux insmod(8), modprobe(8) and modinfo(8) completion. This completes on a# list of all available modules for the version of the kernel currently# running.#_insmod(){	local cur prev modpath	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# behave like lsmod for modprobe -r	if [ $1 = "modprobe" ] &&	   [ "${COMP_WORDS[1]}" = "-r" ]; then		COMPREPLY=( $( /sbin/lsmod | \				awk '{if (NR != 1 && $1 ~ /^'$cur'/) print $1}' ) )		return 0	fi	# do filename completion if we're giving a path to a module	if [[ "$cur" == */* ]]; then		_filedir '@(?(k)o?(.gz))'		return 0	fi	if [ $COMP_CWORD -gt 1 ] && 	   [[ "${COMP_WORDS[COMP_CWORD-1]}" != -* ]]; then		# do module parameter completion		COMPREPLY=( $( /sbin/modinfo -p ${COMP_WORDS[1]} 2>/dev/null | \		       awk '{if ($1 ~ /^parm:/ && $2 ~ /^'$cur'/) { print $2 } \			else if ($1 !~ /:/ && $1 ~ /^'$cur'/) { print $1 }}' ) )	else		_modules $(uname -r)	fi	return 0}complete -F _insmod $filenames insmod modprobe modinfo}# man(1) completion#[ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Darwin \  -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \  -o $UNAME = OpenBSD ] &&_man(){	local cur prev sect manpath UNAME	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	_expand || return 0	# default completion if parameter contains /	if [[ "$cur" == */* ]]; then		_filedir		return 0	fi	UNAME=$( uname -s )	# strip OS type and version under Cygwin	UNAME=${UNAME/CYGWIN_*/Cygwin}	if [ $UNAME = GNU -o $UNAME = Linux -o $UNAME = FreeBSD \	     -o $UNAME = Cygwin ]; then		manpath=$( manpath 2>/dev/null || command man --path )	else		manpath=$MANPATH	fi	if [ -z "$manpath" ]; then		COMPREPLY=( $( compgen -c -- $cur ) )		return 0	fi	# determine manual section to search	[[ "$prev" == [0-9ln] ]] && sect=$prev || sect='*'	manpath=$manpath:	if [ -n "$cur" ]; then		manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }"	else		manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }"	fi			# redirect stderr for when path doesn't exist	COMPREPLY=( $( eval command ls "$manpath" 2>/dev/null ) )	# weed out directory path names and paths to man pages	COMPREPLY=( ${COMPREPLY[@]##*/?(:)} )	# strip suffix from man pages	COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2)} )	COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )	[[ "$prev" != [0-9ln] ]] && _filedir '[0-9ln]'	return 0}[ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Darwin \  -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \  -o $UNAME = OpenBSD ] && \complete -F _man $filenames man apropos whatis# renice(8) completion#_renice(){	local command cur curopt i	COMPREPLY=()	cur=`_get_cword`	command=$1	i=0	# walk back through command line and find last option	while [ $i -le $COMP_CWORD -a ${#COMPREPLY[@]} -eq 0 ]; do		curopt=${COMP_WORDS[COMP_CWORD-$i]}		case "$curopt" in		-u)			COMPREPLY=( $( compgen -u -- $cur ) )			;;		-g)			_pgids			;;		-p|$command)			_pids			;;		esac		i=$(( ++i ))	done}complete -F _renice renice# kill(1) completion#_kill(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then		# return list of available signals		_signals	else		# return list of available PIDs		_pids	fi}complete -F _kill kill# Linux and FreeBSD killall(1) completion.#[ $UNAME = Linux -o $UNAME = FreeBSD ] &&_killall(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then		_signals	else		COMPREPLY=( $( compgen -W '$( command ps axo command | \			      sed -ne "1d; s/^\[\?\([^-][^] ]*\).*$/\1/p" | \			      sed -e "s/.*\///" )' -- $cur ) )	fi	return 0}[ $UNAME = Linux -o $UNAME = FreeBSD ] && complete -F _killall killall pkill# Linux and FreeBSD pgrep(1) completion.#[ $UNAME = Linux -o $UNAME = FreeBSD ] &&_pgrep(){	local cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( compgen -W '$( command ps axo command | \		      sed -ne "1d; s/^\[\?\([^-][^] ]*\).*$/\1/p" | \		      sed -e "s/.*\///" )' -- $cur ) )	return 0}[ $UNAME = Linux -o $UNAME = FreeBSD ] && complete -F _pgrep pgrep# Linux pidof(8) completion.[ $UNAME = Linux ] && complete -F _pgrep pidof# GNU find(1) completion. 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 i exprfound onlyonce	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-@(max|min)depth)		COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- $cur ) )		return 0		;;	-?(a|c)newer|-fls|-fprint?(0|f)|-?(i)?(l)name|-?(i)wholename)		_filedir		return 0		;;	-fstype)		# this is highly non-portable		[ -e /proc/filesystems ] &&		COMPREPLY=( $( cut -d$'\t' -f 2 /proc/filesystems | \				grep "^$cur" ) )		return 0		;;	-gid)		_gids		return 0		;;	-group)		if [ -n "$bash205" ]; then			COMPREPLY=( $( compgen -g -- $cur 2>/dev/null) )		fi		return 0		;;	-?(x)type)		COMPREPLY=( $( compgen -W 'b c d p f l s' -- $cur ) )		return 0		;;	-uid)		_uids		return 0		;;	-user)		COMPREPLY=( $( compgen -u -- $cur ) )		return 0		;;	-exec|-ok)		COMP_WORDS=(COMP_WORDS[0] $cur)		COMP_CWORD=1		_command		return 0		;;	-[acm]min|-[acm]time|-?(i)?(l)name|-inum|-?(i)path|-?(i)regex| \	-links|-perm|-size|-used|-printf)		# do nothing, just wait for a parameter to be given		return 0		;;	esac	_expand || return 0	# set exprfound to 1 if there is already an expression present	for i in ${COMP_WORDS[@]}; do		[[ "$i" = [-\(\),\!]* ]] && exprfound=1 && break	done	# handle case where first parameter is not a dash option	if [ "$exprfound" != 1 ] && [[ "$cur" != [-\(\),\!]* ]]; then		_filedir -d		return 0	fi	# complete using basic options	COMPREPLY=( $( compgen -W '-daystart -depth -follow -help -maxdepth \			-mindepth -mount -noleaf -version -xdev -amin -anewer \			-atime -cmin -cnewer -ctime -empty -false -fstype \			-gid -group -ilname -iname -inum -ipath -iregex \			-wholename \			-links -lname -mmin -mtime -name -newer -nouser \			-nogroup -perm -regex -size -true -type -uid -used \			-user -xtype -exec -fls -fprint -fprint0 -fprintf -ok \			-print -print0 -printf -prune -ls' -- $cur ) )	# 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).	onlyonce=' -daystart -depth -follow -help -maxdepth -mindepth -mount \		   -noleaf -version -xdev '	COMPREPLY=( $( echo "${COMP_WORDS[@]}" | \		       (while read -d ' ' i; do			    [ "$i" == "" ] ||			    [ "${onlyonce/ ${i%% *} / }" == "$onlyonce" ] &&			    continue			    # flatten array with spaces on either side,			    # otherwise we cannot grep on word boundaries of			    # first and last word			    COMPREPLY=" ${COMPREPLY[@]} "			    # remove word from list of completions			    COMPREPLY=( ${COMPREPLY/ ${i%% *} / } )			done			echo "${COMPREPLY[@]}")		  ) )		_filedir		return 0}complete -F _find $filenames find# Linux iwconfig(8) completion#[ $UNAME = Linux ] && have iwconfig &&_iwconfig(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}		case $prev in		mode)			COMPREPLY=( $( compgen -W 'managed ad-hoc master \				repeater secondary monitor' -- $cur ) )			return 0			;;		essid)			COMPREPLY=( $( compgen -W 'on off any' -- $cur ) )			if [ -n "${COMP_IWLIST_SCAN:-}" ]; then				COMPREPLY=( "${COMPREPLY[@]}" \					$( iwlist ${COMP_WORDS[1]} scan | \					awk -F '"' '/ESSID/ {print $2}' | \					grep "^$cur" ))			fi			return 0			;;		nwid)			COMPREPLY=( $( compgen -W 'on off' -- $cur ) )			return 0			;;		channel)			COMPREPLY=( $( iwlist ${COMP_WORDS[1]} channel | \				awk '/^[[:space:]]*Channel/ {print $2}' | \				grep "^$cur" ) )			return 0			;;		freq)			COMPREPLY=( $( iwlist ${COMP_WORDS[1]} channel | \				awk '/^[[:space:]]*Channel/ {print $4"G"}' | \				grep "^$cur" ) )			return 0			;;		ap)			COMPREPLY=( $( compgen -W 'on off any' -- $cur ) )			if [ -n "${COMP_IWLIST_SCAN:-}" ]; then				COMPREPLY=( "${COMPREPLY[@]}" \					$( iwlist ${COMP_WORDS[1]} scan | \					awk -F ': ' '/Address/ {print $2}' | \					grep "^$cur" ) )			fi			return 0			;;		rate)			COMPREPLY=( $( compgen -W 'auto fixed' -- $cur ) )			COMPREPLY=( "${COMPREPLY[@]}" \				$( iwlist ${COMP_WORDS[1]} rate | \				awk '/^[[:space:]]*[0-9]/ {print $1"M"}' | \				grep "^$cur" ) )			return 0			;;		rts)			COMPREPLY=( $( compgen -W 'auto fixed off' -- $cur ) )			return 0			;;		frag)			COMPREPLY=( $( compgen -W 'auto fixed off' -- $cur ) )			return 0			;;		key)			COMPREPLY=( $( compgen -W 'off on open restricted' -- $cur ) )			return 0			;;		enc)			COMPREPLY=( $( compgen -W 'off on open restricted' -- $cur ) )			return 0			;;		power)			COMPREPLY=( $( compgen -W 'period timeout off on' -- $cur ) )			return 0			;;		txpower)			COMPREPLY=( $( compgen -W 'off on auto' -- $cur ) )			return 0			;;		retry)			COMPREPLY=( $( compgen -W 'limit lifetime' -- $cur ) )			return 0			;;	esac	if [ $COMP_CWORD -eq 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# Linux iwlist(8) completion#[ $UNAME = Linux ] && have iwlist &&_iwlist(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}		if [ $COMP_CWORD -eq 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# Linux iwspy(8) completion#[ $UNAME = Linux ] && have iwspy &&_iwspy(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 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# Linux iwpriv(8) completion#[ $UNAME = Linux ] && have iwpriv &&_iwpriv(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		roam)			COMPREPLY=( $( compgen -W 'on off' -- $cur ) )			return 0			;;		port)			COMPREPLY=( $( compgen -W 'ad-hoc managed' -- $cur ) )			return 0			;;	esac	if [ $COMP_CWORD -eq 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# RedHat & Debian GNU/Linux if{up,down} completion#[ $UNAME = Linux ] && { have ifup || have ifdown; } &&_ifupdown(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ]; then		_configured_interfaces		COMPREPLY=( $(compgen -W '${COMPREPLY[@]}' -- "$cur") )       fi       return 0} &&complete -F _ifupdown ifup ifdown[ $UNAME = Linux ] && have ifstatus && complete -F _ifupdown ifstatus# Linux ipsec(8) completion (for FreeS/WAN)#[ $UNAME = Linux ] && have ipsec &&_ipsec(){	local cur	COMPREPLY=()	cur=`_get_cword`		if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -W 'auto barf eroute klipsdebug look \					   manual pluto ranbits rsasigkey \					   setup showdefaults showhostkey spi \					   spigrp tncfg whack' -- $cur ) )		return 0	fi	case ${COMP_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	return 0} &&complete -F _ipsec ipsec# Postfix completion.#have postfix && {# postfix(1)#_postfix(){	local cur prev	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ $cur == '-' ]]; then		COMPREPLY=(-c -D -v)		return 0	fi	if [[ $prev == '-c' ]]; then		_filedir -d		return 0	fi	if [[ $prev == '-D' ]]; then		COMPREPLY=( $( compgen -W 'start' -- "`get_cword`" ) )		return 0	fi	COMPREPLY=( $( compgen -W 'start stop reload abort flush check' -- \		"`get_cword`" ) )}complete -F _postfix postfix# postalias(1) and postmap(1)#_postmap(){	local cur prev len idx	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ $cur == '-' ]]; then		COMPREPLY=(-N -f -i -n -o -p -r -v -w -c -d -q)		return 0	fi	if [[ $prev == '-c' ]]; then		_filedir -d		return 0	fi	if [[ $prev == -[dq] ]]; then		return 0	fi	if [[ "$cur" == *:* ]]; then	       	COMPREPLY=( $( compgen -f -- ${cur#*:} ) )	else		len=${#cur}		idx=0		for pval in $( /usr/sbin/postconf -m ); do			if [[ "$cur" == "${pval:0:$len}" ]]; then				COMPREPLY[$idx]="$pval:"				idx=$(($idx+1))			fi		done		if [[ $idx -eq 0 ]]; then			COMPREPLY=( $( compgen -f -- "$cur" ) )		fi	fi	return 0}complete -F _postmap postmap postalias# postcat(1)#_postcat(){	local cur prev pval len idx qfile	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ $cur == '-' ]]; then		COMPREPLY=(-c -q -v)		return 0	fi	if [[ $prev == '-c' ]]; then		_filedir -d		return 0	fi	qfile=0	for idx in "${COMP_WORDS[@]}"; do		[[ "$idx" = -q ]] && qfile=1 && break	done	if [[ $qfile == 1 ]]; then		len=${#cur}		idx=0		for pval in $( mailq | \			sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* !].*$//' ); do			if [[ "$cur" == "${pval:0:$len}" ]]; then				COMPREPLY[$idx]=$pval				idx=$(($idx+1))			fi		done		return 0	else		_filedir		return 0	fi}complete -F _postcat postcat# postconf(1)#_postconf(){	local cur prev pval len idx eqext	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ $cur == '-' ]]; then		COMPREPLY=(-c -d -e -h -m -l -n -v)		return 0	fi	if [[ $prev == '-c' ]]; then		_filedir -d		return 0	fi	if [[ $prev == '-e' ]]; then		cur=${cur#[\"\']}		eqext='='	fi	len=${#cur}	idx=0	for pval in $( /usr/sbin/postconf | cut -d ' ' -f 1 ); do		if [[ "$cur" == "${pval:0:$len}" ]]; then			COMPREPLY[$idx]="$pval$eqext"			idx=$(($idx+1))		fi	done	return 0}complete -F _postconf postconf# postsuper(1)#_postsuper(){	local cur prev pval len idx	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ $cur == '-' ]]; then		COMPREPLY=(-c -d -h -H -p -r -s -v)		return 0	fi	case $prev in	-[dr])		len=${#cur}		idx=0		for pval in $( echo ALL; mailq | \			sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* !].*$//' ); do			if [[ "$cur" == "${pval:0:$len}" ]]; then				COMPREPLY[$idx]=$pval				idx=$(($idx+1))			fi		done		return 0		;;	-h)		len=${#cur}		idx=0		for pval in $( echo ALL; mailq | \			sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* ].*$//; /!$/d' ); do			if [[ "$cur" == "${pval:0:$len}" ]]; then				COMPREPLY[$idx]=$pval				idx=$(($idx+1))			fi		done		return 0		;;	-H)		len=${#cur}		idx=0		for pval in $( echo ALL; mailq | \			sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; /^[0-9A-Z]*[* ]/d; s/!.*$//' ); do			if [[ "$cur" == "${pval:0:$len}" ]]; then				COMPREPLY[$idx]=$pval				idx=$(($idx+1))			fi		done		return 0		;;	esac	COMPREPLY=( $( compgen -W 'hold incoming active deferred' -- $cur ) )	return 0}complete -F _postsuper postsuper}# cvs(1) completion#have cvs && {set_prefix(){	[ -z ${prefix:-} ] || prefix=${cur%/*}/	[ -r ${prefix:-}CVS/Entries ] || prefix=""}get_entries(){	local IFS=$'\n'	[ -r ${prefix:-}CVS/Entries ] && \	entries=$(cut -d/ -f2 -s ${prefix:-}CVS/Entries)}get_modules(){	if [ -n "$prefix" ]; then 		COMPREPLY=( $( command ls -d ${cvsroot}/${prefix}/!(CVSROOT) ) )	else		COMPREPLY=( $( command ls -d ${cvsroot}/!(CVSROOT) ) )	fi}_cvs(){	local cur count mode i cvsroot cvsroots pwd	local -a flags miss files entries changed newremoved	COMPREPLY=()	cur=`_get_cword`	count=0	for i in "${COMP_WORDS[@]}"; do		[ $count -eq $COMP_CWORD ] && break		# Last parameter was the CVSROOT, now go back to mode selection		if [ "${COMP_WORDS[((count))]}" == "$cvsroot" -a "$mode" == "cvsroot" ]; then			mode=""		fi		if [ -z "$mode" ]; then			case $i in			-d)				mode=cvsroot				cvsroot=${COMP_WORDS[((count+1))]}				;;			@(ad?(d)|new))				mode=add				;;			@(adm?(in)|rcs))				mode=admin				;;			ann?(notate))				mode=annotate				;;			@(checkout|co|get))				mode=checkout				;;			@(com?(mit)|ci))				mode=commit				;;			di?(f?(f)))				mode=diff				;;			ex?(p?(ort)))				mode=export				;;			?(un)edit)				mode=$i				;;			hi?(s?(tory)))				mode=history				;;			im?(p?(ort)))				mode=import				;;			re?(l?(ease)))				mode=release				;;			?(r)log)				mode=log				;;			@(rdiff|patch))				mode=rdiff				;;			@(remove|rm|delete))				mode=remove				;;			@(rtag|rfreeze))				mode=rtag				;;			st?(at?(us)))				mode=status				;;			@(tag|freeze))				mode=tag				;;			up?(d?(ate)))				mode=update				;;			*)				;;			esac		elif [[ "$i" = -* ]]; then			flags=( "${flags[@]}" $i )		fi		count=$((++count))	done	case "$mode" in	add)		if [[ "$cur" != -* ]]; then			set_prefix			if [ $COMP_CWORD -gt 1 -a -r ${prefix:-}CVS/Entries ]; then				get_entries				[ -z "$cur" ] && \				files=$( command ls -Ad !(CVS) ) || \				files=$( command ls -d ${cur}* 2>/dev/null )				for i in "${entries[@]}"; do					files=( ${files[@]/#$i//} )				done				COMPREPLY=( $( compgen -W '${files[@]}' -- \					       $cur ) )			fi		else			COMPREPLY=( $( compgen -W '-k -m' -- $cur ) )		fi		;;	admin)		if [[ "$cur" = -* ]]; then			COMPREPLY=( $( compgen -W '-i -a -A -e -b -c -k -l -u \						   -L -U -m -M -n -N -o -q -I \						   -s -t -t- -T -V -x -z' -- \					$cur ) )		fi		;;	annotate)		if [[ "$cur" = -* ]]; then			COMPREPLY=( $( compgen -W '-D -F -f -l -R -r' -- $cur ) )		else			get_entries			COMPREPLY=( $( compgen -W '${entries[@]}' -- $cur ) )		fi		;;	checkout)		if [[ "$cur" != -* ]]; then			[ -z "$cvsroot" ] && cvsroot=$CVSROOT			COMPREPLY=( $( cvs -d "$cvsroot" co -c 2> /dev/null | \					awk '{print $1}' ) )			COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )		else			COMPREPLY=( $( compgen -W '-A -N -P -R -c -f -l -n -p \						  -s -r -D -d -k -j' -- $cur ) )		fi		;;	commit)		set_prefix		if [[ "$cur" != -* ]] && [ -r ${prefix:-}CVS/Entries ]; 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 | \				sed -ne 's/^Files [^ ]* and \([^ ]*\) differ$/\1/p' ) )				newremoved=( $( cvs -q diff --brief 2>&1 | \				sed -ne 's/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p' ) )				COMPREPLY=( $( compgen -W '${changed[@]:-} \						   ${newremoved[@]:-}' -- $cur ) )			else				_filedir			fi		else			COMPREPLY=( $( compgen -W '-n -R -l -f -F -m -r' -- \				       $cur ) )		fi		;;	cvsroot)		if [ -r ~/.cvspass ]; then			# Ugly escaping because of bash treating ':' specially			cvsroots=$( sed 's/^[^ ]* //; s/:/\\:/g' ~/.cvspass )			COMPREPLY=( $( compgen -W '$cvsroots' -- $cur ) )		fi		;;	export)		if [[ "$cur" != -* ]]; then			[ -z "$cvsroot" ] && cvsroot=$CVSROOT			COMPREPLY=( $( cvs -d "$cvsroot" co -c | awk '{print $1}' ) )			COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )		else			COMPREPLY=( $( compgen -W '-N -f -l -R -n \						  -r -D -d -k' -- $cur ) )		fi		;;	diff)		if [[ "$cur" == -* ]]; then			_longopt diff		else			get_entries			COMPREPLY=( $( compgen -W '${entries[@]:-}' -- $cur ) )		fi		;;	remove)		if [[ "$cur" != -* ]]; then			set_prefix			if [ $COMP_CWORD -gt 1 -a -r ${prefix:-}CVS/Entries ]; then				get_entries				# find out what files are missing				for i in "${entries[@]}"; do					[ ! -r "$i" ] && miss=( "${miss[@]}" $i )				done				COMPREPLY=( $(compgen -W '${miss[@]:-}' -- $cur) )			fi		else			COMPREPLY=( $( compgen -W '-f -l -R' -- $cur ) )		fi		;;	import)		if [[ "$cur" != -* ]]; then			# starts with same algorithm as checkout			[ -z "$cvsroot" ] && cvsroot=$CVSROOT			prefix=${cur%/*}			if [ -r ${cvsroot}/${prefix} ]; then				get_modules				COMPREPLY=( ${COMPREPLY[@]#$cvsroot} )				COMPREPLY=( ${COMPREPLY[@]#\/} )			fi			pwd=$( pwd )			pwd=${pwd##*/}			COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $pwd' -- \				       $cur ) )		else			COMPREPLY=( $( compgen -W '-d -k -I -b -m -W' -- $cur ))		fi		;;	update)		if [[ "$cur" = -* ]]; then			COMPREPLY=( $( compgen -W '-A -P -C -d -f -l -R -p \						   -k -r -D -j -I -W' -- \						   $cur ) )		fi		;;	"")		COMPREPLY=( $( compgen -W 'add admin annotate checkout ci co \					   commit diff delete edit export \					   freeze get history import log new \					   patch rcs rdiff release remove \					   rfreeze rlog rm rtag stat status \					   tag unedit up update -H -Q -q -b \					   -d -e -f -l -n -t -r -v -w -x -z \					   --help --version' -- $cur ) )		;;	*)		;;	esac		return 0}complete -F _cvs $default cvs}have rpm && {# helper functions for rpm completion#_rpm_installed_packages(){	local ver nodig nosig	if [ -r /var/log/rpmpkgs -a \		/var/log/rpmpkgs -nt /var/lib/rpm/Packages ]; then		# using RHL 7.2 or later - this is quicker than querying the DB		COMPREPLY=( $( sed -ne \		's|^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9a-z.@]\+.*\.rpm$|\1|p' \				/var/log/rpmpkgs ) )	else		nodig=""		nosig=""		ver=$(rpm --version)		ver=${ver##* }	  		if [[ "$ver" > "4.0.4" ]]; then			nodig="--nodigest"		fi		if [[ "$ver" > "4.0.99" ]]; then			nosig="--nosignature"		fi		COMPREPLY=( $( rpm -qa $nodig $nosig | sed -ne \		's|^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9a-z.@]\+$|\1|p' ) )	fi}_rpm_groups(){	local IFS=$'\t'	# remove trailing backslash, or grep will complain	cur=${cur%"\\"}	COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat '%{group}\n' | \		       grep "^$cur" ) )	# backslash escape spaces and translate newlines to tabs	COMPREPLY=( $( echo "${COMPREPLY[@]}" | sed 's/ /\\ /g' | tr '\n' '\t' ) )}# rpm(8) completion# _rpm(){	local cur prev ver nodig nosig	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	nodig=""	nosig=""	ver=$(rpm --version); ver=${ver##* }  	if [[ "$ver" > "4.0.4" ]]; then		nodig="--nodigest"	fi	if [[ "$ver" > "4.0.99" ]]; then		nosig="--nosignature"	fi	if [ $COMP_CWORD -eq 1 ]; then		# first parameter on line		case "$cur" in		-b*)			COMPREPLY=( $( compgen -W '-ba -bb -bc -bi -bl -bp -bs'\				       -- $cur ) )			;;		-t*)			COMPREPLY=( $( compgen -W '-ta -tb -tc -ti -tl -tp -ts'\				       -- $cur ) )			;;		--*)			COMPREPLY=( $( compgen -W '--help --version --initdb \			--checksig --recompile --rebuild --resign --addsign \			--rebuilddb --showrc --setperms --setugids --tarbuild \			--eval --install --upgrade --query --freshen --erase \			--verify --querytags --rmsource --rmspec --clean \			--import' -- $cur ) )			;;		*)			COMPREPLY=( $( compgen -W '-b -e -F -i -q -t -U -V' \				       -- $cur ) )			;;		esac	return 0	fi	case "$prev" in	--@(@(db|exclude)path|prefix|relocate|root))		_filedir -d		return 0		;;	--eval)		# get a list of macros		COMPREPLY=( $( sed -ne 's|^\(%'${cur#\%}'[^ '$'\t'']*\).*$|\1|p' \			       /usr/lib/rpm/macros ) )		return 0		;;	--pipe)		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			COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat \					'%{providename}\n' | grep "^$cur" ) )		fi		return 0		;;	--whatrequires)		# complete on capabilities		COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat \				'%{requirename}\n' | grep "^$cur" ) )		return 0		;;	esac	case "${COMP_WORDS[1]}" in	-@([iFU]*|-install|-freshen|-upgrade))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--percent --force --test \			--replacepkgs --replacefiles --root --excludedocs \			--includedocs --noscripts --rcfile --ignorearch \			--dbpath --prefix --ignoreos --nodeps --allfiles \			--ftpproxy --ftpport --justdb --httpproxy --httpport \			--noorder --relocate --badreloc --notriggers \			--excludepath --ignoresize --oldpackage --define \			--eval --pipe --queryformat --repackage --nosuggests \			--nodigest --nosignature' -- $cur ) )		else			_filedir 'rpm'		fi		;;	-@(e|-erase))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--allmatches --noscripts \			--notriggers --nodeps --test --repackage' -- $cur ) )		else			_rpm_installed_packages		fi		;;	-@(q*|-query))		# check whether we're doing file completion		if [ "${COMP_LINE#* -*([^ -])f}" != "$COMP_LINE" ]; then		    if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--scripts --root \				--rcfile --requires --ftpport --ftpproxy \				--httpproxy --httpport --provides --triggers \				--dump --changelog --dbpath \				--last --filesbypkg \				--info --list --state \				--docfiles --configfiles --queryformat \				--conflicts --obsoletes \				--nodigest --nosignature \				--triggerscripts' -- $cur ) )		    else			_filedir		    fi		elif [ "${COMP_LINE#* -*([^ -])g}" != "$COMP_LINE" ]; then			_rpm_groups		elif [ "${COMP_LINE#* -*([^ -])p}" != "$COMP_LINE" ]; then			# uninstalled package completion			if [[ "$cur" == -* ]]; then				COMPREPLY=( $( compgen -W '--scripts --root \				--rcfile --whatprovides --whatrequires \				--requires --triggeredby --ftpport --ftpproxy \				--httpproxy --httpport --provides --triggers \				--dump --changelog --dbpath --filesbypkg \				--define --eval --pipe --showrc --info --list \				--state --docfiles --configfiles --queryformat\				--conflicts --obsoletes --nodigest \				--nosignature' -- $cur ) )			else				_filedir 'rpm'			fi		else			# installed package completion			if [[ "$cur" == -* ]]; then				COMPREPLY=( $( compgen -W '--scripts --root \				--rcfile --whatprovides --whatrequires \				--requires --triggeredby --ftpport --ftpproxy \				--httpproxy --httpport --provides --triggers \				--dump --changelog --dbpath --specfile \				--querybynumber --last --filesbypkg --define \				--eval --pipe --showrc --info --list --state \				--docfiles --configfiles --queryformat \				--conflicts --obsoletes --pkgid --hdrid \				--fileid --tid --nodigest --nosignature \				--triggerscripts' -- $cur ) )			elif [ "${COMP_LINE#* -*([^ -])a}" == "$COMP_LINE" ]; then				_rpm_installed_packages			fi		fi		;;	-@(K*|-checksig))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--nopgp --nogpg --nomd5 \					--nodigest --nosignature' -- $cur ) )		else			_filedir 'rpm'		fi		;;	-@([Vy]*|-verify))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--root --rcfile --dbpath \			--nodeps --nogroup --nolinkto --nomode --nomtime \			--nordev --nouser --nofiles --noscripts --nomd5 \			--querytags --specfile --whatrequires --whatprovides \			--nodigest --nosignature' -- $cur ) )		# check whether we're doing file completion		elif [ "${COMP_LINE#* -*([^ -])f}" != "$COMP_LINE" ]; then			_filedir		elif [ "${COMP_LINE#* -*([^ -])g}" != "$COMP_LINE" ]; then			_rpm_groups		elif [ "${COMP_LINE#* -*([^ -])p}" != "$COMP_LINE" ]; then			_filedir 'rpm'		else			_rpm_installed_packages		fi		;;	-[bt]*)		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--short-circuit --timecheck \			--clean --rmsource --rmspec --test --sign --buildroot \			--target -- buildarch --buildos --nobuild --nodeps \			--nodirtokens' -- $cur ) )		elif [[ ${COMP_WORDS[1]} == -b* ]]; then			_filedir 'spec'		else			_filedir '@(tgz|tar.@(gz|bz2))'		fi		;;	--re@(build|compile))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--nodeps --rmsource \			  --rmspec --sign --nodirtokens --target' -- $cur ) )		else			_filedir '?(no)src.rpm'		fi		;;	--tarbuild)		_filedir '@(tgz|tar.@(gz|bz2))'		;;	--@(re|add)sign)		_filedir 'rpm'		;;	--set@(perms|gids))		_rpm_installed_packages		;;	--@(clean|rms@(ource|pec)))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--clean --rmsource \					--rmspec' -- $cur ) )		else			_filedir 'spec'		fi		;;	--@(import|dbpath|root))		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--import --dbpath --root' \					-- $cur ) )		else			_filedir		fi		;;	esac	return 0}complete -F _rpm $filenames rpm rpmbuild}# Debian apt-get(8) completion.#have apt-get &&_apt_get(){	local cur prev special i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do		if [[ ${COMP_WORDS[i]} == @(install|remove|purge|source|build-dep) ]]; then			special=${COMP_WORDS[i]}		fi	done	if [ -n "$special" ]; then		case $special in		remove|purge)			if [ -f /etc/debian_version ]; then				# Debian system				COMPREPLY=( $( _comp_dpkg_installed_packages \						$cur ) )			else				# assume RPM based				_rpm_installed_packages			fi			return 0			;;		*)			COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )			return 0			;;		esac	fi	case "$prev" in	    -@(c|-config-file)) 		     _filedir		     return 0		     ;;	    -@(t|-target-release|-default-release))		     COMPREPLY=( $( apt-cache policy | \				    grep "release.o=Debian,a=$cur" | \				    sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )		     return 0		     ;; 	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y \				-u -t -b -c -o --download-only --fix-broken \				--help --version --ignore-missing \				--fix-missing --no-download --quiet --simulate \				--just-print --dry-run --recon --no-act --yes \				--assume-yes --show-upgraded --only-source \				--compile --build --ignore-hold \				--target-release --no-upgrade --force-yes \				--print-uris --purge --reinstall \				--list-cleanup --default-release \				--trivial-only --no-remove --diff-only \				--tar-only --config-file --option --auto-remove' -- $cur ) )	else		COMPREPLY=( $( compgen -W 'update upgrade dselect-upgrade \				dist-upgrade install remove purge source \				build-dep check clean autoclean autoremove' \				-- $cur ) )	fi	return 0} &&complete -F _apt_get $filenames apt-get# Debian apt-cache(8) completion.#have apt-cache &&_apt_cache(){	local cur prev special i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}		if [ "$cur" != show ]; then	    for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do		if [[ ${COMP_WORDS[i]} == @(add|depends|dotty|policy|rdepends|madison|show?(pkg|src|)) ]]; then		    special=${COMP_WORDS[i]}		fi	    done	fi	if [ -n "$special" ]; then	    case $special in		add)		    _filedir		    return 0		    ;;		 		*)		    COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )		    return 0		    ;;			    esac	fi	case "$prev" in	     -@(c|p|s|-config-file|-@(pkg|src)-cache))		     _filedir		     return 0		     ;;	     search)		     if [[ "$cur" != -* ]]; then			    return 0		     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' -- $cur ) )	else		COMPREPLY=( $( compgen -W 'add gencaches show showpkg showsrc \				stats dump dumpavail unmet search search \				depends rdepends pkgnames dotty xvcg \				policy madison' -- $cur ) )	fi	return 0} &&complete -F _apt_cache $filenames apt-cache# Debian aptitude(1) completion#have aptitude && {have grep-status && {_comp_dpkg_hold_packages(){	grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package}} || {_comp_dpkg_hold_packages(){	grep -B 2 'hold' /var/lib/dpkg/status | grep "Package: $1" \		| cut -d\  -f2}}_aptitude(){	local cur dashoptions prev special i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	dashoptions='-S -u -i -h --help --version -s --simulate -d \		     --download-only -P --prompt -y --assume-yes -F \		     --display-format -O --sort -w --width -f -r -g \		     --with-recommends --with-suggests -R -G \		     --without-recommends --without-suggests -t \		     --target-release -V --show-versions -D --show-deps\		     -Z -v --verbose --purge-unused'	for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do	    if [[ ${COMP_WORDS[i]} == @(install|reinstall|hold|unhold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|forbid-version|purge|remove|changelog|why|why-not|keep|keep-all) ]]; then		special=${COMP_WORDS[i]}	    fi	    #exclude some mutually exclusive options	    [[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i}	    [[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u}	done	if [[ -n "$special" ]]; then	   case $special in	       @(install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|changelog|why|why-not))		   COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )		   return 0		   ;;	       @(purge|remove|reinstall|forbid-version))  		   COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )		   return 0		   ;;	       unhold)  		   COMPREPLY=( $( _comp_dpkg_hold_packages $cur ) )		   return 0		   ;;	   esac	fi	case $prev in	    # don't complete anything if these options are found	    @(autoclean|clean|forget-new|search|upgrade|safe-upgrade|update|keep-all))		return 0		;;	    -S)		_filedir		return 0		;;	    -@(t|-target-release|-default-release))		COMPREPLY=( $( apt-cache policy | \		    grep "release.o=Debian,a=$cur" | \		    sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) )		return 0		;;	esac	if [[ "$cur" == -* ]]; then	    COMPREPLY=( $( compgen -W "$dashoptions" -- $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-all' -- $cur ) )	fi	return 0}complete -F _aptitude $default aptitude}# Debian apt-build(1) completion.#have apt-build &&_apt_build(){	local cur prev special i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do		if [[ ${COMP_WORDS[i]} == @(install|remove|source|info|clean) ]]; then			special=${COMP_WORDS[i]}		fi	done	if [ -n "$special" ]; then		case $special in		@(install|source|info))			COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )			return 0			;;		remove)			COMPREPLY=( $( _comp_dpkg_installed_packages \					$cur ) )			return 0			;;		*)			return 0			;;		esac	fi	case "$prev" in	     --@(patch|build-dir|repository-dir))		   _filedir		   return 0		   ;; 	     -@(h|-help))		   return 0		   ;;	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	return 0} &&complete -F _apt_build $filenames apt-build# chsh(1) completion#_chsh(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [ "$prev" = "-s" ]; then	  if [ -f /etc/debian_version ]; then	    COMPREPLY=( $( </etc/shells ) )	  else	    COMPREPLY=( $( chsh -l | grep "^$cur" ) )	  fi	else	  COMPREPLY=( $( compgen -u -- $cur ) )	fi	return 0}complete -F _chsh chsh# chkconfig(8) completion#have chkconfig &&_chkconfig(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	@([1-6]|--@(list|add|del)))		_services		return 0		;;	--level)		COMPREPLY=( $( compgen -W '1 2 3 4 5 6' -- $cur ) )		return 0		;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--list --add --del --level' -- $cur ) )	else		if [ $COMP_CWORD -eq 2 -o $COMP_CWORD -eq 4 ]; then			COMPREPLY=( $( compgen -W 'on off reset' -- $cur ) )		else			_services		fi	fi} &&complete -F _chkconfig chkconfig# This function provides simple user@host completion#_user_at_host() {	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ $cur == *@* ]]; then		_known_hosts	else		COMPREPLY=( $( compgen -u -- "$cur" ) )	fi	return 0}shopt -u hostcomplete && complete -F _user_at_host $nospace talk ytalk finger# This function performs host completion based on ssh's known_hosts files,# defaulting to standard host completion if they don't exist.#_known_hosts(){       local cur curd ocur user suffix aliases global_kh user_kh hosts i host       local -a kh khd config	COMPREPLY=()	cur=`_get_cword`	ocur=$cur	[ "$1" = -a ] || [ "$2" = -a ] && aliases='yes'	[ "$1" = -c ] || [ "$2" = -c ] && suffix=':'	[[ $cur == *@* ]] && user=${cur%@*}@ && cur=${cur#*@}	kh=()	# ssh config files	[ -r /etc/ssh/ssh_config ] &&	  config=( "${config[@]}" "/etc/ssh/ssh_config" )	[ -r "${HOME}/.ssh/config" ] &&	  config=( "${config[@]}" "${HOME}/.ssh/config" )	[ -r "${HOME}/.ssh2/config" ] &&	  config=( "${config[@]}" "${HOME}/.ssh2/config" )	if [ ${#config[@]} -gt 0 ]; then	    # expand path (if present) to global known hosts file	    global_kh=$( eval echo $( sed -ne 's/^[ \t]*[Gg][Ll][Oo][Bb][Aa][Ll][Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee]['"$'\t '"']*\(.*\)$/\1/p' "${config[@]}" ) )	    # expand path (if present) to user known hosts file	    user_kh=$( eval echo $( sed -ne 's/^[ \t]*[Uu][Ss][Ee][Rr][Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee]['"$'\t '"']*\(.*\)$/\1/p' "${config[@]}" ) )	fi	# Global known_hosts files	[ -r "$global_kh" ] &&	    kh=( "${kh[@]}" "$global_kh" )	[ -r /etc/ssh/ssh_known_hosts ] &&	    kh=( "${kh[@]}" /etc/ssh/ssh_known_hosts )	[ -r /etc/ssh/ssh_known_hosts2 ] &&	    kh=( "${kh[@]}" /etc/ssh/ssh_known_hosts2 )	[ -r /etc/known_hosts ] &&	    kh=( "${kh[@]}" /etc/known_hosts )	[ -r /etc/known_hosts2 ] &&	    kh=( "${kh[@]}" /etc/known_hosts2 )	[ -d /etc/ssh2/knownhosts ] &&	    khd=( "${khd[@]}" /etc/ssh2/knownhosts/*pub )	# User known_hosts files	[ -r "$user_kh" ] &&	    kh=( "${kh[@]}" "$user_kh" )	[ -r ~/.ssh/known_hosts ] &&	    kh=( "${kh[@]}" ~/.ssh/known_hosts )	[ -r ~/.ssh/known_hosts2 ] &&	    kh=( "${kh[@]}" ~/.ssh/known_hosts2 )	[ -d ~/.ssh2/hostkeys ] &&	    khd=( "${khd[@]}" ~/.ssh2/hostkeys/*pub )	# If we have known_hosts files to use	if [ ${#kh[@]} -gt 0 -o ${#khd[@]} -gt 0 ]; then	    # Escape slashes and dots in paths for awk	    cur=${cur//\//\\\/}	    cur=${cur//\./\\\.}	    curd=$cur	    if [[ "$cur" == [0-9]*.* ]]; then		# Digits followed by a dot - just search for that		cur="^$cur.*"	    elif [[ "$cur" == [0-9]* ]]; then		# Digits followed by no dot - search for digits followed		# by a dot		cur="^$cur.*\."	    elif [ -z "$cur" ]; then		# A blank - search for a dot or an alpha character		cur="[a-z.]"	    else		cur="^$cur"	    fi	    if [ ${#kh[@]} -gt 0 ]; then		# FS needs to look for a comma separated list		COMPREPLY=( $( awk 'BEGIN {FS=","}				/^[^|]/ {for (i=1; i<=2; ++i) { \				       gsub(" .*$", "", $i); \				       if ($i ~ /'$cur'/) {print $i} \				}}' "${kh[@]}" 2>/dev/null ) )	    fi	    if [ ${#khd[@]} -gt 0 ]; then		# Needs to look for files called		# .../.ssh2/key_22_<hostname>.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_$curd*.pub ]] && [ -r "$i" ] ; then			host=${i/#*key_22_/}			host=${host/%.pub/}			COMPREPLY=( "${COMPREPLY[@]}" $host )		    fi		done	    fi	    # append any available aliases from config files	    if [ ${#config[@]} -gt 0 ] && [ -n "$aliases" ]; then		local host_aliases=$( sed -ne 's/^[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\?['"$'\t '"']\+\([^*?]*\)$/\2/p' "${config[@]}" )		hosts=$( compgen -W "$host_aliases" -- $ocur )		COMPREPLY=( "${COMPREPLY[@]}" $hosts )	    fi	    # Now add results of normal hostname completion	    COMPREPLY=( "${COMPREPLY[@]}" $( compgen -A hostname -- $ocur ) )	    # apply suffix	    for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do		COMPREPLY[i]=$user${COMPREPLY[i]}$suffix	    done	else	    # Just do normal hostname completion	    COMPREPLY=( $( compgen -A hostname -S "$suffix" -- $cur ) )	fi	return 0}complete -F _known_hosts traceroute traceroute6 tracepath tracepath6 \	ping ping6 fping fping6 telnet host nslookup rsh rlogin ftp dig ssh-installkeys mtr# ssh(1) completion#have ssh && {_ssh(){	local cur prev	local -a config	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-*c)	    COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \			   arcfour cast128-cbc' -- $cur ) )	    ;;	-*i)	    _filedir	    ;;	-*l)	    COMPREPLY=( $( compgen -u -- $cur ) )	    ;;	*)	    _known_hosts -a	    [ $COMP_CWORD -eq 1 ] || \		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- $cur ) )	esac	return 0}shopt -u hostcomplete && complete -F _ssh ssh slogin sftp xhost autossh# scp(1) completion#_scp(){	local cur userhost path	COMPREPLY=()	cur=`_get_cword`	_expand || return 0	if [[ "$cur" == *:* ]]; then		local IFS=$'\t\n'		# remove backslash escape from :		cur=${cur/\\:/:}		userhost=${cur%%?(\\):*}		path=${cur#*:}		# unescape spaces		path=${path//\\\\\\\\ / }		if [ -z "$path" ]; then			# default to home dir of specified user on remote host			path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null)		fi		# escape spaces; remove executables, aliases, pipes and sockets;		# add space at end of file names		COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \			       command ls -aF1d "$path*" 2>/dev/null | \			       sed -e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\\\\\\\\\&/g" \				   -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) )		return 0	fi	[[ "$cur" == */* ]] || _known_hosts -c -a		local IFS=$'\t\n'		COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* \			    2>/dev/null | sed \			    -e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\&/g" \			    -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) )	return 0}complete -F _scp $nospace scp}# rsync(1) completion#have rsync &&_rsync(){	local cur prev shell i userhost path 	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	_expand || return 0	case "$prev" in	--@(config|password-file|include-from|exclude-from))		_filedir		return 0		;;	-@(T|-temp-dir|-compare-dest))		_filedir -d		return 0		;;	-@(e|-rsh))		COMPREPLY=( $( compgen -W 'rsh ssh' -- $cur ) )		return 0		;;	esac 	case "$cur" in	-*)		COMPREPLY=( $( compgen -W '-v -q  -c -a -r -R -b -u -l -L -H \				-p -o -g -D -t -S -n -W -x -B -e -C -I -T -P \				-z -h -4 -6 --verbose --quiet --checksum \				--archive --recursive --relative --backup \				--backup-dir --suffix= --update --links \				--copy-links --copy-unsafe-links --safe-links \				--hard-links --perms --owner --group --devices\				--times --sparse --dry-run --whole-file \				--no-whole-file --one-file-system \				--block-size= --rsh= --rsync-path= \				--cvs-exclude --existing --ignore-existing \				--delete --delete-excluded --delete-after \				--ignore-errors --max-delete= --partial \				--force --numeric-ids --timeout= \				--ignore-times --size-only --modify-window= \				--temp-dir= --compare-dest= --compress \				--exclude= --exclude-from= --include= \				--include-from= --version --daemon --no-detach\				--address= --config= --port= --blocking-io \				--no-blocking-io --stats --progress \				--log-format= --password-file= --bwlimit= \				--write-batch= --read-batch= --help' -- $cur ))		;;	*:*)		# find which remote shell is used		shell=rsh		for (( i=1; i < COMP_CWORD; i++ )); do			if [[ "${COMP_WORDS[i]}" == -@(e|-rsh) ]]; then				shell=${COMP_WORDS[i+1]}				break			fi		done		if [[ "$shell" == ssh ]]; then			# remove backslash escape from :			cur=${cur/\\:/:}			userhost=${cur%%?(\\):*}			path=${cur#*:}			# unescape spaces			path=${path//\\\\\\\\ / }			if [ -z "$path" ]; then				# default to home dir of specified				# user on remote host				path=$(ssh -o 'Batchmode yes' \					$userhost pwd 2>/dev/null)			fi			# escape spaces; remove executables, aliases, pipes			# and sockets; add space at end of file names			COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \				command ls -aF1d "$path*" 2>/dev/null | \				sed -e 's/ /\\\\\\\ /g' -e 's/[*@|=]$//g' \				-e 's/[^\/]$/& /g' ) )		fi		;;	*)		_known_hosts -c -a		_filedir		;;	esac 	return 0} &&complete -F _rsync $nospace $filenames rsync# Linux route(8) completion#[ $UNAME = Linux ] &&_route(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [ "$prev" = dev ]; then	    COMPREPLY=( $( ifconfig -a | sed -ne 's|^\('$cur'[^ ]*\).*$|\1|p' ))	    return 0	fi	COMPREPLY=( $( compgen -W 'add del -host -net netmask metric mss \				   window irtt reject mod dyn reinstate dev \				   default gw' -- $cur ) )	COMPREPLY=( $( echo " ${COMP_WORDS[@]}" | \		       (while read -d ' ' i; do			   [ "$i" == "" ] && continue			   # flatten array with spaces on either side,			   # otherwise we cannot grep on word			   # boundaries of first and last word			   COMPREPLY=" ${COMPREPLY[@]} "			   # remove word from list of completions			   COMPREPLY=( ${COMPREPLY/ $i / } )			done		       echo "${COMPREPLY[@]}")		  ) )	return 0}[ $UNAME = Linux ] && complete -F _route route# GNU make(1) completion#have make || have gmake || have gnumake || have pmake &&_make(){	local file makef makef_dir="." makef_inc cur prev i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# --name value style option	case $prev in		-@(f|o|W))			_filedir			return 0			;;		-@(I|C))			_filedir -d			return 0			;;	esac	# --name=value style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case "$prev" in			--@(file|makefile))				_filedir				return 0				;;			--@(directory|include-dir))				_filedir -d				return 0				;;		esac	fi	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-b -m -B -C -d -e -f -h -i -I\			-j -l -k -n -o -p -q -r -R - s -S -t -v -w -W \			--always-make --directory= --debug \			--environment-overrides --file= --makefile= --help \			--ignore-errors --include-dir= --jobs --load-average \			--max-load --keep-going --just-print --dry-run \			--recon --old-file= --assume-old= --print-data-base \			--question --no-builtin-rules --no-builtin-variables \			--silent --quiet --no-keep-goind --stop --touch \			--version --print-directory --no-print-directory \			--what-if= --new-file= --assume-new= \			--warn-undefined-variables' -- $cur ) )	else		# before we check for makefiles, see if a path was specified		# with -C		for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do			if [[ ${COMP_WORDS[i]} == -C ]]; then				# eval for tilde expansion				eval makef_dir=${COMP_WORDS[i+1]}				break			fi		done		# make reads `GNUmakefile', then `makefile', then `Makefile'		if [ -f ${makef_dir}/GNUmakefile ]; then			makef=${makef_dir}/GNUmakefile		elif [ -f ${makef_dir}/makefile ]; then			makef=${makef_dir}/makefile		elif [ -f ${makef_dir}/Makefile ]; then			makef=${makef_dir}/Makefile		else			makef=${makef_dir}/*.mk	       # local convention		fi		# before we scan for targets, see if a Makefile name was		# specified with -f		for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do			if [[ ${COMP_WORDS[i]} == -f ]]; then				# eval for tilde expansion				eval makef=${COMP_WORDS[i+1]}				break			fi		done		[ ! -f $makef ] && return 0		# deal with included Makefiles 		makef_inc=$( grep -E '^-?include' $makef | sed -e "s,^.* ,"$makef_dir"/," ) 		for file in $makef_inc; do 			[ -f $file ] && makef="$makef $file" 		done		COMPREPLY=( $( awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \				{split($1,A,/ /);for(i in A)print A[i]}' \				$makef 2>/dev/null | command grep "^$cur" ))	fi} &&complete -f -F _make $filenames make gmake gnumake pmake# GNU tar(1) completion#_tar(){	local cur ext regex tar untar	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -W 'c t x u r d A' -- $cur ) )		return 0	fi	case "${COMP_WORDS[1]}" in	?(-)[cr]*f)		_filedir		return 0		;;	+([^IZzjy])f)		ext='t@(ar?(.@(Z|gz|bz?(2)))|gz|bz?(2))'		regex='t\(ar\(\.\(Z\|gz\|bz2\?\)\)\?\|gz\|bz2\?\)'		;;	*[Zz]*f)		ext='t?(ar.)@(gz|Z)'		regex='t\(ar\.\)\?\(gz\|Z\)'		;;	*[Ijy]*f)		ext='t?(ar.)bz?(2)'		regex='t\(ar\.\)\?bz2\?'		;;	*)		_filedir		return 0		;;			esac	if [[ "$COMP_LINE" == *$ext' ' ]]; then		# complete on files in tar file		#		# get name of tar file from command line		tar=$( echo "$COMP_LINE" | \			sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' )		# devise how to untar and list it		untar=t${COMP_WORDS[1]//[^Izjyf]/}		COMPREPLY=( $( compgen -W "$( echo $( tar $untar $tar \				2>/dev/null ) )" -- "$cur" ) )		return 0	fi	# file completion on relevant files	_filedir "$ext"	return 0}[ -n "${COMP_TAR_INTERNAL_PATHS:-}" ] && complete -F _tar $dirnames tar ||	complete -F _tar $filenames tar# jar(1) completion#have jar &&_jar(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD = 1 ]; then		COMPREPLY=( $( compgen -W 'c t x u' -- $cur ) )		return 0	fi	case "${COMP_WORDS[1]}" in		*c*f)			_filedir			;;		*f)			_filedir '?(e|j|w)ar'			;;		*)			_filedir			;;	esac} &&complete -F _jar $filenames jar# Linux iptables(8) completion#have iptables &&_iptables(){	local cur prev table chain	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	chain='s/^Chain \([^ ]\+\).*$/\1/p'	if [[ $COMP_LINE == *-t\ *filter* ]]; then		table="-t filter"	elif [[ $COMP_LINE == *-t\ *nat* ]]; then		table="-t nat"	elif [[ $COMP_LINE == *-t\ *mangle* ]]; then		table="-t mangle"	fi	case "$prev" in	-*[AIDRPFXLZ])		COMPREPLY=( $( compgen -W '`iptables $table -nL | \			    sed -ne "s/^Chain \([^ ]\+\).*$/\1/p"`' -- $cur ) )		;;	-*t)		COMPREPLY=( $( compgen -W 'nat filter mangle' -- $cur ) )		;;	-j)		if [ "$table" = "-t filter" -o "$table" = "" ]; then		    COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \		    `iptables $table -nL | 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 `iptables $table -nL | \		    sed -ne "$chain" -e "s/OUTPUT|PREROUTING|POSTROUTING//"`' \		    -- $cur ) )		elif [ "$table" = "-t mangle" ]; then		    COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \		    MARK TOS `iptables $table -nL | sed -ne "$chain" \		    -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \		    $cur ) )		fi		;;	*)		if [[ "$cur" == -* ]]; then		    COMPREPLY=( $( compgen -W '-i -o -s -d -p -f -m --append \		    --delete --insert --replace --list --flush --zero --new \		    --delete-chain --policy --rename-chain --proto --source \		    --destination --in-interface --jump --match --numeric \		    --out-interface --table --verbose --line-numbers --exact \		    --fragment --modprobe= --set-counters --version' -- "$cur") )		fi		;;	esac} &&complete -F _iptables iptables# tcpdump(8) completion#have tcpdump &&_tcpdump(){	local cur	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(r|w|F))			_filedir			return 0			;;		-i)			_available_interfaces -a			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-a -d -e -f -l -n -N -O -p \			-q -R -S -t -u -v -x -C -F -i -m -r -s -T -w \			-E' -- $cur ) )	fi} &&complete -F _tcpdump tcpdump# autorpm(8) completion#have autorpm &&_autorpm(){	local cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( compgen -W '--notty --debug --help --version \				   auto add fullinfo info help install list \				   remove set' -- $cur ) )} &&complete -F _autorpm autorpm# This meta-cd function observes the CDPATH variable, so that cd additionally# completes on directories under those specified in CDPATH.#_cd(){	local IFS=$'\t\n' cur=`_get_cword` i j k	# try to allow variable completion	if [[ "$cur" == ?(\\)\$* ]]; then		COMPREPLY=( $( compgen -v -P '$' -- "${cur#?(\\)$}" ) )		return 0	fi	# Use standard dir completion if no CDPATH or parameter starts with /,	# ./ or ../	if [ -z "${CDPATH:-}" ] || [[ "$cur" == ?(.)?(.)/* ]]; then		_filedir -d		return 0	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//:/$'\t'}; do		# create an array of matched subdirs		k="${#COMPREPLY[@]}"		for j in $( compgen -d $i/$cur ); do			if [[ ( $mark_symdirs && -h $j || $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then				j="${j}/"			fi			COMPREPLY[k++]=${j#$i/}		done	done	_filedir -d	if [[ ${#COMPREPLY[@]} -eq 1 ]]; then	    i=${COMPREPLY[0]}	    if [ "$i" == "$cur" ] && [[ $i != "*/" ]]; then		COMPREPLY[0]="${i}/"	    fi	fi	    	return 0}if shopt -q cdable_vars; then    complete -v -F _cd $nospace $filenames cdelse    complete -F _cd $nospace $filenames cdfi_remove_comp_word(){	if [[ COMP_CWORD -eq 0 ]]; then		return	elif [[ ${#COMP_WORDS[@]} -ge 2 ]]; then		local old_cw0="${COMP_WORDS[0]}"		local new_cw0="${COMP_WORDS[1]}"		local old_length="${#COMP_LINE}"		COMP_LINE=${COMP_LINE#${old_cw0}}		local head=${COMP_LINE:0:${#new_cw0}}		local i=1		while [[ $head != $new_cw0 ]]; do			COMP_LINE=${COMP_LINE:1}			head=${COMP_LINE:0:${#new_cw0}}			if (( ++i > 10 )); then				break			fi		done		local new_length="${#COMP_LINE}"		COMP_POINT=$(( COMP_POINT + new_length - old_length))		COMP_CWORD=$(( COMP_CWORD - 1 ))		for (( i=0; i < ${#COMP_WORDS[@]} - 1; ++i )); do			COMP_WORDS[i]="${COMP_WORDS[i+1]}"		done		unset COMP_WORDS[${#COMP_WORDS[@]}-1]	else		return	fi}# 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 - currently not quite foolproof (e.g. mount and umount# don't work properly), but still quite useful.#_command(){	local cur func cline cspec noglob cmd done i \	      _COMMAND_FUNC _COMMAND_FUNC_ARGS	_remove_comp_word	COMPREPLY=()	cur=`_get_cword`	# If the the first arguments following our meta-command-invoker are	# switches, get rid of them. Most definitely not foolproof.	done=	while [ -z $done ] ; do	    cmd=${COMP_WORDS[0]}	    if [[ "$cmd" == -* ]] && [ $COMP_CWORD -ge 1 ]; then	        _remove_comp_word	    elif [[ "$cmd" == -* ]] && [[ $COMP_CWORD -eq 0 ]]; then		return	    else 		done=1	    fi	done	if [ $COMP_CWORD -eq 0 ]; then		COMPREPLY=( $( compgen -c -- $cur ) )	elif complete -p $cmd &>/dev/null; then		cspec=$( complete -p $cmd )		if [ "${cspec#* -F }" != "$cspec" ]; then			# COMP_CWORD and COMP_WORDS() are not read-only,			# so we can set them before handing off to regular			# completion routine			# get function name			func=${cspec#*-F }			func=${func%% *}			if [[ ${#COMP_WORDS[@]} -ge 2 ]]; then				$func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}" "${COMP_WORDS[${#COMP_WORDS[@]}-2]}"			else				$func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}"			fi			# remove any \: generated by a command that doesn't			# default to filenames or dirnames (e.g. sudo chown)			# FIXME: I'm pretty sure this does not work!			if [ "${cspec#*-o }" != "$cspec" ]; then				cspec=${cspec#*-o }				cspec=${cspec%% *}				if [[ "$cspec" != @(dir|file)names ]]; then					COMPREPLY=("${COMPREPLY[@]//\\\\:/:}")				fi			fi		elif [ -n "$cspec" ]; then			cspec=${cspec#complete};			cspec=${cspec%%$cmd};			COMPREPLY=( $( eval compgen "$cspec" -- "$cur" ) );		fi	fi	[ ${#COMPREPLY[@]} -eq 0 ] && _filedir}complete -F _command $filenames nohup exec nice eval strace time ltrace then \	else do vsound command xargs_root_command(){	PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin _command $1 $2 $3}complete -F _root_command $filenames sudo fakeroot really# ant(1) completion#have ant && {_ant(){	local cur prev buildfile i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-buildfile|-f)			_filedir 'xml'			return 0			;;		-logfile)			_filedir			return 0			;;	esac	if [[ "$cur" == -* ]]; then		# relevant options completion		COMPREPLY=( $( compgen -W '-help -projecthelp -version -quiet \			       -verbose -debug -emacs -logfile -logger \			       -listener -buildfile -f -D -find' -- $cur ) )	else		# available targets completion		# find which buildfile to use		buildfile=build.xml		for (( i=1; i < COMP_CWORD; i++ )); do			if [[ "${COMP_WORDS[i]}" == -buildfile ]]; then				buildfile=${COMP_WORDS[i+1]}				break			fi		done		[ ! -f $buildfile ] && return 0		# parse buildfile for targets		COMPREPLY=( $( awk -F'"' '/<target name="/ {print $2}' \				$buildfile | grep "^$cur" )			    $( awk -F"'" "/<target name='/ "'{print $2}' \				$buildfile | grep "^$cur" )			    $( awk -F'"' '/<target [^n]/ {if ($1 ~ /name=/) { print $2 } else if ($3 ~ /name=/) {print $4} else if ($5 ~ /name=/) {print $6}}' \				$buildfile | grep "^$cur" ) )	fi}have complete-ant-cmd.pl && \     complete -C complete-ant-cmd.pl -F _ant $filenames ant || \     complete -F _ant $filenames ant}have nslookup &&_nslookup(){	local cur	COMPREPLY=()	cur=${COMP_WORDS[COMP_CWORD]#-}	COMPREPLY=( $( compgen -P '-' -W 'all class= debug d2 domain= \			       srchlist= defname search port= querytype= \			       type= recurse retry root timeout vc \			       ignoretc' -- $cur ) )} &&complete -F _nslookup nslookup# mysqladmin(1) completion#have mysqladmin &&_mysqladmin(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-u)		COMPREPLY=( $( compgen -u -- $cur ) )		return 0		;;	*)		;;	esac	COMPREPLY=( $( compgen -W '-# -f -? -C -h -p -P -i -r -E -s -S -t -u \					      -v -V -w' -- $cur ) )	COMPREPLY=( "${COMPREPLY[@]}" \		    $( compgen -W 'create drop extended-status flush-hosts \				   flush-logs flush-status flush-tables \				   flush-threads flush-privileges kill \				   password ping processlist reload refresh \				   shutdown status variables version' \		       -- $cur ) )} &&complete -F _mysqladmin mysqladmin# gzip(1) completion#have gzip &&_gzip(){	local cur prev xspec IFS=$'\t\n'	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c -d -f \			-h -l -L -n -N -q -r -S -t -v -V \			-1 -2 -3 -4 -5 -6 -7 -8 -9 \			--stdout --decompress --force --help --list \			--license --no-name --name --quiet --recursive \			--suffix --test --verbose --version --fast \			--best' -- $cur ) )		return 0	fi	xspec="*.?(t)gz"	if [[ "$prev" == --* ]]; then		[[ "$prev" == --decompress || \			"$prev" == --list || \			"$prev" == --test ]] && xspec="!"$xspec		[[ "$prev" == --force ]] && xspec=	elif [[ "$prev" == -* ]]; then		[[ "$prev" == -*[dlt]* ]] && xspec="!"$xspec		[[ "$prev" == -*f* ]] && xspec=	elif [ "$prev" = '>' ]; then		xspec=	elif [ "$prev" = '<' ]; then		xspec=	fi	_expand || return 0	COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \		    $( compgen -d -- $cur ) )} &&complete -F _gzip $filenames gzip# bzip2(1) completion#have bzip2 &&_bzip2(){	local cur prev xspec IFS=$'\t\n'	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c -d -f -h -k -L -q -s \			-t -v -V -z -1 -2 -3 -4 -5 -6 -7 -8 -9 \			--help --decompress --compress --keep --force \			--test --stdout --quiet --verbose --license \			--version --small --fast --best' -- $cur ) )		return 0	fi	xspec="*.bz2"	if [[ "$prev" == --* ]]; then		[[ "$prev" == --decompress || \			"$prev" == --list || \			"$prev" == --test ]] && xspec="!"$xspec		[[ "$prev" == --compress ]] && xspec=	elif [[ "$prev" == -* ]]; then		[[ "$prev" == -*[dt]* ]] && xspec="!"$xspec		[[ "$prev" == -*z* ]] && xspec=	fi	_expand || return 0	COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \		    $( compgen -d -- $cur ) )} &&complete -F _bzip2 $filenames bzip2# openssl(1) completion#have openssl && {_openssl_sections(){	local config	config=/etc/ssl/openssl.cnf	[ ! -f $config ] && config=/usr/share/ssl/openssl.cnf	for (( i=2; i < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" == -config ]]; then			config=${COMP_WORDS[i+1]}			break		fi	done	[ ! -f $config ] && return 0	COMPREPLY=( $( awk '/\[.*\]/ {print $2} ' $config | grep "^$cur" ) )}_openssl(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -W 'asn1parse ca ciphers crl crl2pkcs7 \			dgst dh dhparam dsa dsaparam enc errstr gendh gendsa \			genrsa nseq passwd pkcs12 pkcs7 pkcs8 rand req rsa \			rsautl s_client s_server s_time sess_id smime speed \			spkac verify version x509 md2 md4 md5 mdc2 rmd160 sha \			sha1 base64 bf bf-cbc bf-cfb bf-ecb bf-ofb cast \			cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des \			des-cbc des-cfb des-ecb des-ede des-ede-cbc \			des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc \			des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 \			rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb \			rc4 rc4-40' -- $cur ) )	else		prev=${COMP_WORDS[COMP_CWORD-1]}		case ${COMP_WORDS[1]} in			asn1parse)				case $prev in					-inform)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out|oid))						_filedir						return 0						;;					esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -in -out -noout -offset \						-length -i -oid -strparse' -- $cur ) )				fi				;;			ca)				case $prev in					-@(config|revoke|cert|in|out|spkac|ss_cert))						_filedir						return 0						;;					-outdir)						_filedir -d						return 0						;;					-@(name|crlexts|extensions))						_openssl_sections						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-verbose -config -name \						-gencrl -revoke -crldays -crlhours -crlexts \						-startdate -enddate -days -md -policy -keyfile \						-key -passin -cert -in -out -notext -outdir \						-infiles -spkac -ss_cert -preserveDN -batch \						-msie_hack -extensions' -- $cur ) )				fi				;;			ciphers)				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-v -ssl2 -ssl3 -tls1' -- $cur ) )				fi				;;			crl)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out|CAfile))						_filedir						return 0						;;					-CAPath)						_filedir -d						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -text -in -out -noout \						-hash -issuer -lastupdate -nextupdate -CAfile -CApath' -- $cur ) )				fi				;;			crl2pkcs7)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -out -print_certs' -- $cur ) )				fi				;;			dgst)				case $prev in					-@(out|sign|verify|prvrify|signature))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-md5 -md4 -md2 -sha1 -sha -mdc2 -ripemd160 -dss1 \						-c -d -hex -binary -out -sign -verify -prverify -signature' -- $cur ) )				else						_filedir				fi			       ;;			dsa)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -passin -out -passout -des -des3 -idea -text -noout \						-modulus -pubin -pubout' -- $cur ) )				fi				;;			dsaparam)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out|rand))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -out -noout \						-text -C -rand -genkey' -- $cur ) )				fi				;;			enc)				case $prev in					-@(in|out|kfile))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-ciphername -in -out -pass \						-e -d -a -A -k -kfile -S -K -iv -p -P -bufsize -debug' -- $cur ) )				fi				;;			dhparam)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out|rand))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -out -dsaparam -noout \						-text -C -2 -5 -rand' -- $cur ) )				fi				;;			gendsa)				case $prev in					-@(out|rand))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-out -des -des3 -idea -rand' -- $cur ) )				else						_filedir				fi				;;			genrsa)				case $prev in					-@(out|rand))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-out -passout -des -des3 -idea -f4 -3 -rand' -- $cur ) )				fi				;;			pkcs7)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -out -print_certs -text -noout' -- $cur ) )				fi				;;			rand)				case $prev in					-@(out|rand))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-out -rand -base64' -- $cur ) )				fi				;;			req)				case "$prev" in					-@(in|out|key)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out|rand|key|keyout|config))						_filedir						return 0						;;					-extensions)						_openssl_sections						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in \						-passin -out -passout -text -noout -verify \						-modulus -new -rand -newkey -newkey -nodes \						-key -keyform -keyout -md5 -sha1 -md2 -mdc2 \						-config -x509 -days -asn1-kludge -newhdr \						-extensions -reqexts section' -- $cur ) )				fi				;;			rsa)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER NET PEM' -- $cur ) )						return 0						;;					-@(in|out))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -passin -out -passout \						-sgckey -des -des3 -idea -text -noout -modulus -check -pubin \						-pubout -engine' -- $cur ) )				fi				;;			rsautl)				case $prev in					-@(in|out|inkey))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-in -out -inkey -pubin -certin -sign -verify \						-encrypt -decrypt -pkcs -ssl -raw -hexdump -asn1parse' -- $cur ) )				fi				;;			s_client)				case $prev in					-connect)						_known_hosts						return 0						;;					-@(cert|key|CAfile|rand))						_filedir						return 0						;;					-CApath)						_filedir -d						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-connect -verify -cert -key -CApath -CAfile \						-reconnect -pause -showcerts -debug -msg -nbio_test -state -nbio \						-crlf -ign_eof -quiet -ssl2 -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 \						-bugs -cipher -starttls -engine -rand' -- $cur ) )				fi				;;			s_server)				case $prev in					-@(cert|key|dcert|dkey|dhparam|CAfile|rand))						_filedir						return 0						;;					-CApath)						_filedir -d						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-accept -context -verify -Verify -cert -key \						 -dcert -dkey -dhparam -nbio -nbio_test -crlf -debug -msg -state -CApath \						 -CAfile -nocert -cipher -quiet -no_tmp_rsa -ssl2 -ssl3 -tls1 -no_ssl2 \						 -no_ssl3 -no_tls1 -no_dhe -bugs -hack -www -WWW -HTTP -engine -id_prefix \						 -rand' -- $cur ) )				 fi				 ;;			s_time)				case $prev in					-connect)						_known_hosts						return 0						;;					-@(cert|key|CAfile))						_filedir						return 0						;;					-CApath)						_filedir -d						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-connect -www -cert -key -CApath -CAfile -reuse \						-new -verify -nbio -time -ssl2 -ssl3 -bugs -cipher' -- $cur ) )				fi				;;			sess_id) 				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-@(in|out))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform -in -out -text -noout \						-context ID' -- $cur ) )				fi				;;			smime)				case $prev in					-@(in|out)form)						COMPREPLY=( $( compgen -W 'SMIME DER PEM' -- $cur ) )						return 0						;;					-@(in|out|certfile|signer|recip|inkey|content|rand))						_filedir						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-encrypt -decrypt -sign -verify -pk7out -des -des3 \						-rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -in -certfile -signer \						-recip -inform -passin -inkey -out -outform -content -to -from -subject \						-text -rand' -- $cur ) )				else						_filedir				fi				;;			speed)				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-engine' -- $cur ) )				else					COMPREPLY=( $( compgen -W 'md2 mdc2 md5 hmac sha1 rmd160 idea-cbc \						rc2-cbc rc5-cbc bf-cbc des-cbc des-ede3 rc4 rsa512 rsa1024 rsa2048 \						rsa4096 dsa512 dsa1024 dsa2048 idea rc2 des rsa blowfish' -- $cur ) )				fi				;;			verify)				case $prev in					-@(CAfile|untrusted))						_filedir						return 0						;;					-CApath)						_filedir -d						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-CApath -CAfile -purpose -untrusted -help -issuer_checks \						-verbose -certificates' -- $cur ) )				else						_filedir				fi				;;			x509)				case "$prev" in					-@(in|out|CA|CAkey|CAserial|extfile))						_filedir						return 0						;;					-@(in|out)form)						COMPREPLY=( $( compgen -W 'DER PEM NET' -- $cur ) )						return 0						;;					-@(key|CA|CAkey)form)						COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )						return 0						;;					-extensions)						_openssl_sections						return 0						;;				esac				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-inform -outform \						-keyform -CAform -CAkeyform -in -out \						-serial -hash -subject -issuer -nameopt \						-email -startdate -enddate -purpose \						-dates -modulus -fingerprint -alias \						-noout -trustout -clrtrust -clrreject \						-addtrust -addreject -setalias -days \						-set_serial -signkey -x509toreq -req \						-CA -CAkey -CAcreateserial -CAserial \						-text -C -md2 -md5 -sha1 -mdc2 -clrext \						-extfile -extensions -engine' -- $cur ) )				fi				;;			@(md5|md4|md2|sha1|sha|mdc2|ripemd160))				if [[ "$cur" == -* ]]; then					COMPREPLY=( $( compgen -W '-c -d' -- $cur ) )				else						_filedir				fi				;;		esac	fi	return 0}complete -F _openssl $default openssl}# screen(1) completion#have screen &&_screen(){	local cur prev preprev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	[ "$COMP_CWORD" -ge 2 ] && preprev=${COMP_WORDS[COMP_CWORD-2]}	if [ "$preprev" = "-d" -o "$preprev" = "-D" -a "$prev" = "-r" -o \	     "$prev" = "-R" ]; then		# list all		COMPREPLY=( $( command screen -ls | \				sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*$|\1|p' ) )	else		case "$prev" in		-[rR])			# list detached			COMPREPLY=( $( command screen -ls | \					sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Detached.*$|\1|p' ) )			;;		-[dDx])			# list attached			COMPREPLY=( $( command screen -ls | \					sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Attached.*$|\1|p' ) )			;;		-s)			# shells			COMPREPLY=( $( grep ^${cur:-[^#]} /etc/shells ) )			;;		*)			;;		esac	fi	return 0} &&complete -F _screen $default screen# lftp(1) bookmark completion#have lftp &&_lftp(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ] && [ -f ~/.lftp/bookmarks ]; then	    COMPREPLY=( $( compgen -W '$( sed -ne "s/^\(.*\)'$'\t''.*$/\1/p" \			   ~/.lftp/bookmarks )' -- $cur ) )	fi	return 0} &&complete -F _lftp $default lftp# ncftp(1) bookmark completion#have ncftp &&_ncftp(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ] && [ -f ~/.ncftp/bookmarks ]; then	    COMPREPLY=( $( compgen -W '$( sed -ne "s/^\([^,]\{1,\}\),.*$/\1/p" \			   ~/.ncftp/bookmarks )' -- $cur ) )	fi	return 0} &&complete -F _ncftp $default ncftp# gdb(1) completion#have gdb &&_gdb(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -c -- $cur ) )	elif [ $COMP_CWORD -eq 2 ]; then		prev=${prev##*/}		COMPREPLY=( $( compgen -fW "$( command ps axo comm,pid | \				awk '{if ($1 ~ /^'"$prev"'/) print $2}' ) )" \				-- "$cur" ) )	fi} &&complete -F _gdb $filenames gdb# Postgresql completion#have psql && {_pg_databases() {	return	COMPREPLY=( $( psql -l 2>/dev/null | \			sed -e '1,/^-/d' -e '/^(/,$d' | \			awk '{print $1}' | grep "^$cur" ) )}_pg_users(){	#COMPREPLY=( $( psql -qtc 'select usename from pg_user' template1 2>/dev/null | \	#		grep "^ $cur" ) )	#[ ${#COMPREPLY[@]} -eq 0 ] &&	COMPREPLY=( $( compgen -u -- $cur ) )}# createdb(1) completion#_createdb() {	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-@(h|-host=)) 		_known_hosts		return 0		;;	-@(U|-username=))		_pg_users		return 0		;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-D -T -E -h -p -U -W -e -q \			--location= --template= --encoding= --host= --port= \			--username= --password --echo --quiet --help' -- $cur ))	else		_pg_databases	fi}complete -F _createdb $default createdb# dropdb(1) completion#_dropdb() {	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-@(h|-host=)) 		_known_hosts		return 0		;;	-@(U|-username=))		_pg_users		return 0		;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-h -p -U -W -e -q \				--host= --port= --username= --password \				--interactive --echo --quiet --help' -- $cur ) )	else		_pg_databases	fi}complete -F _dropdb $default dropdb# psql(1) completion#_psql() {	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-h|--host) 		_known_hosts		return 0		;;	-U|--username)		_pg_users		return 0		;;	-d|--dbname)		_pg_databases		return 0		;;	-@(o|f)|--output|--file)		_filedir		return 0		;;	esac	if [[ "$cur" == -* ]]; then		# return list of available options		COMPREPLY=( $( compgen -W '-a --echo-all -A --no-align \			-c --command -d --dbname -e --echo-queries \			-E --echo-hidden -f --file -F --filed-separator \			-h --host -H --html -l --list -n -o --output \			-p --port -P --pset -q -R --record-separator \			-s --single-step -S --single-line -t --tuples-only \			-T --table-attr -U --username -v --variable \			-V --version -W --password -x --expanded -X --nopsqlrc \			-? --help ' -- $cur ) )	else		# return list of available databases		_pg_databases	fi}complete -F _psql $default psql}_longopt(){	local cur opt	cur=`_get_cword`	if [[ "$cur" == --*=* ]]; then		opt=${cur%%=*}		# cut backslash that gets inserted before '=' sign		opt=${opt%\\*}		cur=${cur#*=}		_filedir		COMPREPLY=( $( compgen -P "$opt=" -W '${COMPREPLY[@]}' -- $cur))		return 0	fi	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( $1 --help 2>&1 | sed -e '/--/!d' \				-e 's/.*\(--[-A-Za-z0-9]\+=\?\).*/\1/' | \			       command grep "^$cur" | sort -u ) )	elif [[ "$1" == @(mk|rm)dir ]]; then		_filedir -d	else		_filedir	fi}# makeinfo and texi2dvi are defined elsewhere.for i in a2ps autoconf automake bc gprof ld nm objcopy objdump readelf strip \	 bison cpio diff patch enscript cp df dir du ln ls mkfifo mknod mv rm \	 touch vdir awk gperf grep grub indent less m4 sed shar date \	 tee who texindex cat csplit cut expand fmt fold head \	 md5sum nl od paste pr ptx sha1sum sort split tac tail tr unexpand \	 uniq wc ldd bash id irb mkdir rmdir; do  have $i && complete -F _longopt $filenames $idone# These commands use filenames, so '-o filenames' is not needed.for i in env netstat seq uname units wget; do  have $i && complete -F _longopt $default $idoneunset i# gcc(1) completion## The only unusual feature is that we don't parse "gcc --help -v" output# directly, because that would include the options of all the other backend# tools (linker, assembler, preprocessor, etc) without any indication that# you cannot feed such options to the gcc driver directly.  (For example, the# linker takes a -z option, but you must type -Wl,-z for gcc.)  Instead, we# ask the driver ("g++") for the name of the compiler ("cc1"), and parse the# --help output of the compiler.#have gcc &&_gcc(){	local cur cc backend	COMPREPLY=()	cur=`_get_cword`	_expand || return 0	case "$1" in	gcj)		backend=jc1		;;	gpc)		backend=gpc1		;;	*77)		backend=f771		;;	*)		backend=cc1	# (near-)universal backend		;;	esac	if [[ "$cur" == -* ]]; then		cc=$( $1 -print-prog-name=$backend )		# sink stderr:		# for C/C++/ObjectiveC it's useless		# for FORTRAN/Java it's an error		COMPREPLY=( $( $cc --help 2>/dev/null | tr '\t' ' ' | \			       sed -e '/^  *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \			       command grep "^$cur" | sort -u ) )	else		_filedir	fi} &&complete $filenames -F _gcc gcc g++ c++ g77 gcj gpc[ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Cygwin ] && \[ -n "${have:-}" ] && complete $filenames -F _gcc cc# Linux cardctl(8) completion#have cardctl &&_cardctl(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -W 'status config ident suspend \					   resume reset eject insert scheme' \			       -- $cur ) )	fi} &&complete -F _cardctl cardctl# This function is required by _dpkg() and _dpkg-reconfigure()#have dpkg && {_comp_dpkg_installed_packages(){	grep -A 1 "Package: $1" /var/lib/dpkg/status | \		grep -B 1 -E "ok installed|half-installed|unpacked| \       			      half-configured|config-files" | \	        grep "Package: $1" | cut -d\  -f2}# Debian dpkg(8) completion#_dpkg(){	local cur prev i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	i=$COMP_CWORD	_expand || return 0	# find the last option flag	if [[ $cur != -* ]]; then		while [[ $prev != -* && $i != 1 ]]; do			i=$((i-1))			prev=${COMP_WORDS[i-1]}		done	fi	case "$prev" in 	-@(c|i|A|I|f|e|x|X|-@(install|unpack|record-avail|contents|info|fsys-tarfile|field|control|extract)))		_filedir '?(u)deb'		return 0		;;	-@(b|-build))		_filedir -d		return 0		;;   	-@(s|p|l|-@(status|print-avail|list)))		COMPREPLY=( $( apt-cache pkgnames $cur 2>/dev/null ) )		return 0		;;	-@(S|-search))		_filedir		return 0		;;	-@(r|L|P|-@(remove|purge|listfiles)))		COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )		return 0		;;	*)	COMPREPLY=( $( compgen -W '-i --install --unpack -A --record-avail \			--configure -r --remove -P --purge --get-selections \			--set-selections --update-avail --merge-avail \			--clear-avail  --command-fd --forget-old-unavail -s \			--status -p --print-avail -L --listfiles -l --list \			-S --search -C --audit --print-architecture \			--print-gnu-build-architecture \			--print-installation-architecture \			--compare-versions --help --version --force-help \			--force-all --force-auto-select --force-downgrade \			--force-configure-any --force-hold --force-bad-path \			--force-not-root --force-overwrite \			--force-overwrite-diverted --force-bad-verify \			--force-depends-version --force-depends \			--force-confnew --force-confold --force-confdef \			--force-confmiss --force-conflicts --force-architecture\			--force-overwrite-dir --force-remove-reinstreq \			--force-remove-essential -Dh \			--debug=help --licence --admindir= --root= --instdir= \			-O --selected-only -E --skip-same-version \			-G --refuse-downgrade -B --auto-deconfigure \			--no-debsig --no-act -D --debug= --status-fd \			-b --build -I --info -f --field -c --contents \			-x --extract -X --vextract --fsys-tarfile -e --control \			--ignore-depends= --abort-after' -- $cur ) )		;;	esac}complete -F _dpkg $filenames dpkg dpkg-deb}# Debian GNU dpkg-reconfigure(8) completion#have dpkg-reconfigure &&_dpkg_reconfigure(){	local cur prev opt	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	    -@(f|-frontend))		opt=( $( echo /usr/share/perl5/Debconf/FrontEnd/* ) )		opt=( ${opt[@]##*/} )		opt=( ${opt[@]%.pm} )		COMPREPLY=( $( compgen -W '${opt[@]}' -- $cur ) )		return 0		;;	    -@(p|-priority))  		COMPREPLY=( $( compgen -W 'low medium high critical' -- $cur ) )		return 0		;;	esac	if [[ "$cur" == -* ]]; then	    COMPREPLY=( $( compgen -W '-f --frontend -p --priority -a --all \				       -u --unseen-only -h --help -s --showold \				       --force --terse' -- $cur ) )	else	    COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )	fi} &&complete -F _dpkg_reconfigure $default dpkg-reconfigure# Debian dpkg-source completion#have dpkg-source &&_dpkg_source(){	local cur prev options work i action packopts unpackopts	packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR"	unpackopts="-sp -sn -su"	options=`echo "-x -b $packopts $unpackopts" | xargs echo | sort -u | xargs echo`	COMPREPLY=()	if [ "$1" != "dpkg-source" ]; then		exit 1	fi	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	action="options"	for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do		if [[ ${COMP_WORDS[$i]} == "-x" ]]; then			action=unpack		elif [[ ${COMP_WORDS[$i]} == "-b" ]]; then			action=pack		elif [[ ${COMP_WORDS[$i]} == "-h" ]]; then			action=help		fi	done	# if currently seeing a complete option, return just itself.	for i in $options; do		if [ "$cur" = "$i" ]; then			COMPREPLY=( "$cur" )			return 0		fi	done	case "$action" in		"unpack")			if [ "$cur" = "-" -o "$cur" = "-s" ]; then				COMPREPLY=( $unpackots )				return 0			fi			case "$prev" in				"-x")					COMPREPLY=( $( compgen -d -- "$cur" ) \						    $( compgen -f -X '!*.dsc' -- "$cur" ) )					return 0					;;				*)					COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) )					return 0					;;			esac			return 0			;;		"pack")			if [ "$cur" = "-" ]; then				COMPREPLY=( $packopts )				return 0			fi			if [ "$cur" = "-s" ]; then				COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \			    		"-sA" "-sK" "-sP" "-sU" "-sR" )				return 0			fi			case "$prev" in				"-b")					COMPREPLY=( $( compgen -d -- "$cur" ) )					return 0					;;				"-c"|"-l"|"-T"|"-i"|"-I")					# -c: get controlfile					# -l: get per-version info from this file					# -T: read variables here, not debian/substvars					# -i: <regexp> filter out files to ignore diffs of.					# -I: filter out files when building tarballs.					# return directory names and file names					COMPREPLY=( $( compgen -d -f ) )					return 0					;;				"-F")					# -F: force change log format					COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) )					return 0					;;				"-V"|"-D")					# -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=()					return 0					;;				"-D")					# -D: override or add a .dsc field and value					# if $cur doesn't contain a = yet, suggest variable names					if echo -- "$cur" | grep -q "="; then						# $cur contains a "="						COMPREPLY=()						return 0					else						COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )						return 0					fi					;;				"-U")					# -U: remove a field					# Suggest possible fieldnames					COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )					return 0					;;				*)					COMPREPLY=( $packopts )					return 0					;;			esac			return 0			;;		*)			# if seeing a partial option, return possible completions.			if [ "$cur" = "-s" ]; then				COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \			    		"-sA" "-sK" "-sP" "-sU" "-sR" )				return 0			fi			# else return all possible options.			COMPREPLY=( $options )			return 0			;;	esac} &&complete -F _dpkg_source dpkg-source# Debian Linux dselect(8) completion.#have dselect &&_dselect(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	     --admindir)		  _filedir -d		  return 0		  ;;	     -@(D|debug))		  _filedir		  return 0		  ;;	esac	if [[ "$cur" == -* ]]; then	    COMPREPLY=( $( compgen -W '--admindir --help --version --licence \				  --license --expert --debug' -- $cur ) )	else	    COMPREPLY=( $( compgen -W 'access update select install config \				  remove quit' -- $cur ) )	fi	return 0} &&complete -F _dselect $filenames dselect# Java completion## available path elements completionhave java && {_java_path(){	cur=${cur##*:}	_filedir '@(jar|zip)'}# exact classpath determination_java_find_classpath(){	local i	# search first in current options	for (( i=1; i < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then			classpath=${COMP_WORDS[i+1]}			break		fi	done	# default to environment	[ -z "$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 < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then			sourcepath=${COMP_WORDS[i+1]}			break		fi	done	# default to classpath	[ -z "$sourcepath" ] && _java_find_classpath	sourcepath=$classpath}# 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 [ -r $i ] && [[ "$i" == *.@(jar|zip) ]]; then			if type zipinfo &> /dev/null; then				COMPREPLY=( "${COMPREPLY[@]}" $( zipinfo -1 \				"$i" | grep "^$cur" | grep '\.class$' | \				grep -v "\\$" ) )			else				COMPREPLY=( "${COMPREPLY[@]}" $( jar tf "$i" \				"$cur" | grep "\.class$" | grep -v "\\$" ) )			fi		elif [ -d $i ]; then			i=${i%/}			COMPREPLY=( "${COMPREPLY[@]}" $( find "$i" -type f \			-path "$i/$cur*.class" 2>/dev/null | \			grep -v "\\$" | sed -e "s|^$i/||" ) )		fi	done	# remove class extension	COMPREPLY=( ${COMPREPLY[@]%.class} )	# convert path syntax to package syntax	COMPREPLY=( ${COMPREPLY[@]//\//.} )}# available packages completion_java_packages(){	local sourcepath i	# find wich 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=( "${COMPREPLY[@]}" $( command ls -F -d \				$i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) )		fi	done	# keep only packages	COMPREPLY=( $( echo "${COMPREPLY[@]}" | tr " " "\n" | grep "/$" ) )	# remove packages extension	COMPREPLY=( ${COMPREPLY[@]%/} )	# convert path syntax to package syntax	cur=${COMPREPLY[@]//\//.}}# java completion#_java(){	local cur prev i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	for ((i=1; i < $COMP_CWORD; i++)); do		case ${COMP_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 0			;;		esac	done	case $prev in		-@(cp|classpath))			_java_path			return 0			;;	esac	if [[ "$cur" == -* ]]; then		# relevant options completion		COMPREPLY=( $( compgen -W '-client -hotspot -server -classic \				-cp -classpath -D -verbose -verbose:class \				-verbose:gc -version:jni -version \				-showversion -? -help -X -jar \				-ea -enableassertions -da -disableassertions \				-esa -enablesystemassertions \				-dsa -disablesystemassertions ' -- $cur ) )	else		if [[ "$prev" == -jar ]]; then			# jar file completion			_filedir jar		else			# classes completion			_java_classes		fi	fi}complete -F _java $filenames java}# javadoc completion#have javadoc &&_javadoc(){	COMPREPLY=()	local cur prev	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		-@(overview|helpfile|stylesheetfile))			_filedir			return 0			;;		-d)			_filedir -d			return 0			;;		-@(classpath|bootclasspath|docletpath|sourcepath|extdirs))			_java_path			return 0			;;	esac	if [[ "$cur" == -* ]]; then		# relevant options completion		COMPREPLY=( $( compgen -W '-overview -public -protected \				-package -private -help -doclet -docletpath \				-sourcepath -classpath -exclude -subpackages \				-breakiterator -bootclasspath -source -extdirs \				-verbose -locale -encoding -J -d -use -version \				-author -docfilessubdirs -splitindex \				-windowtitle -doctitle -header -footer -bottom \				-link -linkoffline -excludedocfilessubdir \				-group -nocomment -nodeprecated -noqualifier \				-nosince -nodeprecatedlist -notree -noindex \				-nohelp -nonavbar -quiet -serialwarn -tag \				-taglet -tagletpath -charset -helpfile \				-linksource -stylesheetfile -docencoding' -- \				$cur ) )	else		# source files completion		_filedir java		# packages completion		_java_packages	fi} &&complete -F _javadoc $filenames javadoc# javac completion#have javac &&_javac(){	COMPREPLY=()	local cur prev	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		-d)			_filedir -d			return 0			;;		-@(classpath|bootclasspath|sourcepath|extdirs))			_java_path			return 0			;;	esac	if [[ "$cur" == -* ]]; then		# relevant options completion		COMPREPLY=( $( compgen -W '-g -g:none -g:lines -g:vars\		-g:source -O -nowarn -verbose -deprecation -classpath\		-sourcepath -bootclasspath -extdirs -d -encoding -source\		-target -help' -- $cur ) )	else		# source files completion		_filedir java	fi} &&complete -F _javac $filenames javac# PINE address-book completion#have pine &&_pineaddr(){	local cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( compgen -W '$( awk "{print \$1}" ~/.addressbook 2>/dev/null)' \			-- $cur ) )} &&complete -F _pineaddr $default pine# mutt completion## Mutt doesn't have an "addressbook" like Pine, but it has aliases and# a "query" function to retrieve addresses, so that's what we use here.have mutt || have muttng && {_muttaddr(){	_muttaliases	_muttquery	return 0}_muttconffiles(){	local file sofar	local -a newconffiles	sofar=" $1 "	shift	while [[ "$1" ]]; do	    newconffiles=( $(sed -rn 's|^source[[:space:]]+([^[:space:]]+).*$|\1|p' $(eval echo $1) ) )	    for file in "${newconffiles[@]}"; do		[[ ! "$file" ]] || [[ "${sofar/ ${file} / }" != "$sofar" ]] &&		    continue		sofar="$sofar $file"		sofar=" $(eval _muttconffiles \"$sofar\" $file) "	    done	    shift	done	echo $sofar}_muttaliases(){	local cur muttrc	local -a conffiles aliases	cur=`_get_cword`	[ -f ~/.${muttcmd}/${muttcmd}rc ] && muttrc="~/.${muttcmd}/${muttcmd}rc"	[ -f ~/.${muttcmd}rc ] && muttrc="~/.${muttcmd}rc"	[ -z "$muttrc" ] && return 0	conffiles=( $(eval _muttconffiles $muttrc $muttrc) )	aliases=( $( sed -rn 's|^alias[[:space:]]+([^[:space:]]+).*$|\1|p' \			$(eval echo "${conffiles[@]}") ) )	COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${aliases[*]}" -- $cur ) )	return 0}_muttquery(){	local cur querycmd	local -a queryresults	cur=`_get_cword`	querycmd="$( $muttcmd -Q query_command  | sed -r 's|^query_command=\"(.*)\"$|\1|; s|%s|'$cur'|' )"	if [ -z "$cur" -o -z "$querycmd" ]; then	    queryresults=()	else 	    queryresults=( $( $querycmd | \	      sed -nr '2,$s|^([^[:space:]]+).*|\1|p' ) )	fi	COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${queryresults[*]}" \			-- $cur ) )	return 0}_muttfiledir(){	local cur folder spoolfile	cur=`_get_cword`	# This is currently not working so well. Perhaps this function should	# just call _filedir() for the moment.	if [[ $cur == [=+]* ]]; then		folder="$( $muttcmd -Q folder | sed -r 's|^folder=\"(.*)\"$|\1|' )"		: folder:=~/Mail		# Match any file in $folder beginning with $cur		# (minus the leading '=' sign).		COMPREPLY=( $( compgen -f -- "$folder/${cur:1}" ) )		COMPREPLY=( ${COMPREPLY[@]#$folder/} )		return 0	elif [ "$cur" == !* ]; then		spoolfile="$( $muttcmd -Q spoolfile | sed -r 's|^spoolfile=\"(.*)\"$|\1|' )"		[ ! -z "$spoolfile" ] && eval cur="${cur/^!/$spoolfile}";	fi	_filedir	return 0}_mutt(){	local cur prev	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	COMPREPLY=()		[ ${COMP_WORDS[0]} == muttng ] && muttcmd="muttng" || muttcmd="mutt"	case "$cur" in	-*)		COMPREPLY=( $( compgen -W '-A -a -b -c -e -f -F -H -i -m -n \					    -p -Q -R -s -v -x -y -z -Z -h' \					    -- $cur ) )		return 0		;;	*)	    case "$prev" in	    -@(a|f|F|H|i))		    _muttfiledir		    return 0		    ;;	    -A)		    _muttaliases		    return 0		    ;;	    -@(e|m|Q|s|h|p|R|v|y|z|Z))		    return 0		    ;;	    *)		    _muttaddr		    return 0		    ;;	    esac	    ;;	esac	}complete -F _mutt $default $filenames mutt muttng}_configure_func(){	local cur	COMPREPLY=()	cur=`_get_cword`	# if $COMP_CONFIGURE_HINTS is not null, then completions of the form	# --option=SETTING will include 'SETTING' as a contextual hint	[[ "$cur" != -* ]] && return 0	if [ -n "$COMP_CONFIGURE_HINTS" ]; then		COMPREPLY=( $( $1 --help | awk '/^  --[A-Za-z]/ { print $1; if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' | grep ^$cur ) )	else		COMPREPLY=( $( $1 --help | awk '/^  --[A-Za-z]/ { print $1; if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,=].*//g' | grep ^$cur ) )	fi}complete -F _configure_func $default configure# Debian reportbug(1) completion#have reportbug &&_reportbug(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	    -f|--filename|-i|--include|--mta|-o|--output)		_filedir		return 0		;;	    -B|--bts)		COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \			       $cur ))		return 0		;;	    -e|--editor|--mua)		COMP_WORDS=(COMP_WORDS[0] $cur)		COMP_CWORD=1		_command		return 0		;;	    --mode)		COMPREPLY=( $( compgen -W "novice standard expert" -- $cur ) )		return 0		;;	    -S|--severity)		COMPREPLY=( $( compgen -W "grave serious important normal \					   minor wishlist" -- $cur ) )		return 0		;;	    -u|--ui|--interface)		COMPREPLY=( $( compgen -W "newt text gnome" -- $cur ) )		return 0		;;	    -t|--type)		COMPREPLY=( $( compgen -W "gnats debbugs" -- $cur ) )		return 0		;;	    -T|--tags)		COMPREPLY=( $( compgen -W "none patch security upstream sid \					   woody potato sarge fixed" -- $cur ))		return 0		;;	    *)		;;	esac		COMPREPLY=($( compgen -W '-h --help -v --version -a --af -b \			--no-query-bts --query-bts -B --bts -c --configure \			--no-config-files --check-available -d --debug \			--no-check-available -e --editor --email -f \			--filename -g --gnupg -H --header -i --include -j \			--justification -l --ldap --no-ldap -L --list-cc -m \			--maintonly --mode --mua --mta --mutt -n --mh --nmh \			-o --output -p --print -P --pgp --proxy --http_proxy\			-q --quiet -Q --query-only --realname --report-quiet \			--reply-to --replyto -s --subject -S --severity \			--smtphost -t --type -T --tags --template -V -x \			--no-cc --package-version -z --no-compress \			--ui --interface -u \			wnpp boot-floppies kernel-image' -- $cur ) \	    		$( apt-cache pkgnames -- $cur 2> /dev/null ) )	_filedir	return 0} &&complete -F _reportbug $filenames reportbug# Debian querybts(1) completion#have querybts &&_querybts(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	    -B|--bts)		COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \			       $cur ))		return 0		;;	    -u|--ui|--interface)		COMPREPLY=($( compgen -W "newt text gnome" -- $cur ))		return 0		;;	    *)		;;	esac	COMPREPLY=($( compgen -W '-h --help -v --version -A --archive \			-B --bts -l --ldap --no-ldap --proxy= --http_proxy= \			-s --source -w --web -u --ui --interface \			wnpp boot-floppies' -- $cur ) \	    		$( apt-cache pkgnames -- $cur 2> /dev/null ) )} &&complete -F _querybts $filenames querybts# update-alternatives completion#have update-alternatives && {installed_alternatives(){	local admindir	# find the admin dir	for i in alternatives dpkg/alternatives rpm/alternatives; do		[ -d /var/lib/$i ] && admindir=/var/lib/$i && break	done	for (( i=1; i < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" == --admindir ]]; then			admindir=${COMP_WORDS[i+1]}			break		fi	done	COMPREPLY=( $( command ls $admindir | grep "^$cur" ) )}_update_alternatives(){	local cur prev mode args i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	--@(altdir|admindir))		_filedir -d		return 0		;;	--@(help|version))		return 0		;;	esac	# find wich mode to use and how many real args used so far	for (( i=1; i < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" == --@(install|remove|auto|display|config|remove-all) ]]; then			mode=${COMP_WORDS[i]}			args=$(($COMP_CWORD - i))			break		fi	done	case $mode in	--install)		case $args in		1)			_filedir			;;		2)			installed_alternatives			;;		3)			_filedir			;;		esac		;;	--remove)		case $args in		1)			installed_alternatives			;;		2)			_filedir			;;		esac		;;	--auto)		installed_alternatives		;;	--remove-all)		installed_alternatives		;;	--display)		installed_alternatives		;;	--config)		installed_alternatives		;;	*)		COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \			       --altdir --admindir' -- $cur ) \			    $( compgen -W '--install --remove --auto --display \			       --config' -- $cur ) )	esac}complete -F _update_alternatives update-alternatives}# Python completion#have python &&_python(){	local prev cur	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]##*/}	case "$prev" in	-Q)		COMPREPLY=( $( compgen -W "old new warn warnall" -- $cur ) )		return 0		;;	-W)		COMPREPLY=( $( compgen -W "ignore default all module once error" -- $cur ) )		return 0		;;	-c)		_filedir '@(py|pyc|pyo)'		return 0		;;	!(python|-?))		[[ ${COMP_WORDS[COMP_CWORD-2]} != -@(Q|W) ]] && _filedir		;;	esac	# if '-c' is already given, complete all kind of files.	for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do		if [[ ${COMP_WORDS[i]} == -c ]]; then			_filedir		fi	done	if [[ "$cur" != -* ]]; then		_filedir '@(py|pyc|pyo)'	else		COMPREPLY=( $( compgen -W "- -d -E -h -i -O -Q -S -t -u \					   -U -v -V -W -x -c" -- $cur ) )	fi	return 0} &&complete -F _python $filenames python# Perl completion#have perl &&{_perlmodules(){    COMPREPLY=( $( compgen -P "$prefix" -W "$( perl -e 'sub mods { my ($base,$dir)=@_; return if  $base !~ /^\Q$ENV{cur}/; chdir($dir) or return; for (glob(q[*.pm])) {s/\.pm$//; print qq[$base$_\n]}; mods(/^(?:[.\d]+|$Config{archname}-$Config{osname}|auto)$/ ? undef : qq[${base}${_}\\\\:\\\\:],qq[$dir/$_]) for grep {-d} glob(q[*]); } mods(undef,$_) for @INC;' )" -- $cur ) )}_perl(){    local cur prev prefix temp    COMPREPLY=()    cur=`_get_cword`    prev=${COMP_WORDS[COMP_CWORD-1]}    prefix=""    # completing an option (may or may not be separated by a space)    if [[ "$cur" == -?* ]]; then	temp=$cur	prev=${temp:0:2}	cur=${temp:2}	prefix=$prev    fi    # only handle module completion for now    case "$prev" in    	-I|-x)	    COMPREPLY=( $( compgen -d -P "$prev" -- "$cur" ) )	    return 0	    ;;	-m|-M)	    _perlmodules	    return 0	    ;;    esac    # handle case where first parameter is not a dash option    if [[ "${COMP_WORDS[COMP_CWORD]}" != -* ]]; then	_filedir	return 0    fi    # complete using basic options    COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d -D -p \			-n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- $cur ) )    return 0}complete -F _perl $filenames perl_perldoc(){    local cur prev prefix temp    COMPREPLY=()    cur=`_get_cword`    prev=${COMP_WORDS[COMP_CWORD-1]}    prefix=""    # completing an option (may or may not be separated by a space)    if [[ "$cur" == -?* ]]; then	temp=$cur	prev=${temp:0:2}	cur=${temp:2}	prefix=$prev    fi    # complete builtin perl functions    case $prev in	-f)	    COMPREPLY=( $( compgen -W 'chomp chop chr crypt hex index lc \	    lcfirst length oct ord pack q qq reverse rindex sprintf \	    substr tr uc ucfirst y m pos quotemeta s split study qr abs \	    atan2 cos exp hex int log oct rand sin sqrt srand pop push \	    shift splice unshift grep join map qw reverse sort unpack \	    delete each exists keys values binmode close closedir \	    dbmclose dbmopen die eof fileno flock format getc print \	    printf read readdir rewinddir seek seekdir select syscall \	    sysread sysseek syswrite tell telldir truncate warn write \	    pack read syscall sysread syswrite unpack vec -X chdir chmod \	    chown chroot fcntl glob ioctl link lstat mkdir open opendir \	    readlink rename rmdir stat symlink umask unlink utime caller \	    continue do dump eval exit goto last next redo return \	    sub wantarray caller import local my our package use defined \	    formline reset scalar undef \	    alarm exec fork getpgrp getppid getpriority kill pipe qx \	    setpgrp setpriority sleep system times wait waitpid \	    import no package require use bless dbmclose dbmopen package \	    ref tie tied untie use accept bind connect getpeername \	    getsockname getsockopt listen recv send setsockopt shutdown \	    socket socketpair msgctl msgget msgrcv msgsnd semctl semget \	    semop shmctl shmget shmread shmwrite endgrent endhostent \	    endnetent endpwent getgrent getgrgid getgrnam getlogin \	    getpwent getpwnam getpwuid setgrent setpwent endprotoent \	    endservent gethostbyaddr gethostbyname gethostent \	    getnetbyaddr getnetbyname getnetent getprotobyname \	    getprotobynumber getprotoent getservbyname getservbyport \	    getservent sethostent setnetent setprotoent setservent \	    gmtime localtime time times' -- $cur ) )	    return 0	    ;;    esac    case $cur in	-*)	    COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- $cur ))	    return 0	    ;;	*/*)	    return 0	    ;;	*)	    _perlmodules	    COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '$( PAGER=cat man perl 2>/dev/null | sed -ne "/perl.*Perl overview/,/perlwin32/s/^[^a-z0-9]*\([a-z0-9]*\).*$/\1/p")' -- $cur ) )	    return 0	    ;;    esac}complete -F _perldoc $default perldoc}# rcs(1) completion#have rcs &&_rcs(){	local cur prev file dir i	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	file=${cur##*/}	dir=${cur%/*}	# deal with relative directory	[ "$file" = "$dir" ] && dir=.	COMPREPLY=( $( compgen -f "$dir/RCS/$file" ) )	for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do		file=${COMPREPLY[$i]##*/}		dir=${COMPREPLY[$i]%RCS/*}		COMPREPLY[$i]=$dir$file	done		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -G "$dir/$file*,v" ) )	for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do		COMPREPLY[$i]=${COMPREPLY[$i]%,v}	done	# default to files if nothing returned and we're checking in.	# otherwise, default to directories	[ ${#COMPREPLY[@]} -eq 0 -a $1 = ci ] && _filedir || _filedir -d} &&complete -F _rcs $filenames ci co rlog rcs rcsdiff# lilo(8) completion#have lilo && {_lilo_labels(){	COMPREPLY=( $( awk -F'=' '/label/ {print $2}' \		/etc/lilo.conf | sed -e 's/"//g' | grep "^$cur" ) )}_lilo(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		-@(C|i|m|s|S))			_filedir			return 0			;;		-r)			_filedir -d			return 0			;;		-@(I|D|R))			# label completion			_lilo_labels			return 0			;;		-@(A|b|M|u|U))			# device completion			cur=${cur:=/dev/}			_filedir			return 0			;;		-T)			# topic completion			COMPREPLY=( $( compgen -W 'help ChRul EBDA geom geom= \					table= video' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		# relevant options completion		COMPREPLY=( $( compgen -W '-A -b -c -C -d -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}# links completion#have links &&_links(){	local cur  	COMPREPLY=()	cur=`_get_cword`  	case "$cur" in	    --*)		COMPREPLY=( $( compgen -W '--help' -- $cur ) )		;;	    -*)		COMPREPLY=( $( compgen -W '-async-dns -max-connections \				-max-connections-to-host -retries \				-receive-timeout -unrestartable-receive-timeout\				-format-cache-size -memory-cache-size \				-http-proxy -ftp-proxy -download-dir \				-assume-codepage -anonymous -dump -no-connect \				-source -version -help' -- $cur ) )		;;	    *)		if [ -r ~/.links/links.his ]; then		    COMPREPLY=( $( compgen -W '$( < ~/.links/links.his )' \				   -- $cur ) )		fi				_filedir '@(htm|html)'				return 0		;;	esac  	return 0} &&complete -F _links $filenames links[ $UNAME = FreeBSD ] && {# FreeBSD package management tool completion#_pkg_delete(){	local cur pkgdir prev	pkgdir=${PKG_DBDIR:-/var/db/pkg}/	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	[ "$prev" = "-o" -o "$prev" = "-p" -o "$prev" = "-W" ] && return 0	COMPREPLY=( $( compgen -d $pkgdir$cur ) )	COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )	return 0}complete -F _pkg_delete $dirnames pkg_delete pkg_infohave pkg_deinstall && complete -F _pkg_delete $dirnames pkg_deinstall# FreeBSD kernel module commands#_kldload(){	local cur moddir	moddir=/modules/	[ -d $moddir ] || moddir=/boot/kernel/	cur=`_get_cword`	COMPREPLY=( $( compgen -f $moddir$cur ) )	COMPREPLY=( ${COMPREPLY[@]#$moddir} )	COMPREPLY=( ${COMPREPLY[@]%.ko} )	return 0}complete -F _kldload $filenames kldload_kldunload(){	local cur	cur=`_get_cword`	COMPREPLY=( $(kldstat | sed -ne "s/^.*[ \t]\+\($cur[a-z_]\+\).ko$/\1/p") )}complete -F _kldunload $filenames kldunload}# FreeBSD portupgrade completion#have portupgrade &&_portupgrade(){	local cur pkgdir prev	pkgdir=${PKG_DBDIR:-/var/db/pkg}/	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	[ "$prev" = "-l" -o "$prev" = "-L" -o "$prev" = "-o" ] && return 0	COMPREPLY=( $( compgen -d $pkgdir$cur ) )	COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )	COMPREPLY=( ${COMPREPLY[@]%-*} )	return 0} &&complete -F _portupgrade $dirnames portupgrade# FreeBSD portinstall completion#have portinstall &&_portinstall(){	local cur portsdir prev indexfile	local -a COMPREPLY2	portsdir=${PORTSDIR:-/usr/ports}/	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# First try INDEX-5	indexfile=$portsdir/INDEX-5	# Then INDEX if INDEX-5 does not exist or system is not FreeBSD 5.x	[ "${OSTYPE%.*}" = "freebsd5" -a -f $indexfile ] ||	  indexfile=$portsdir/INDEX	[ "$prev" = "-l" -o "$prev" = "-L" -o "$prev" = "-o" ] && return 0	COMPREPLY=( $( egrep "^$cur" < $indexfile | cut -d'|' -f1 ) )	COMPREPLY2=( $( egrep "^[^\|]+\|$portsdir$cur" < $indexfile | \			cut -d'|' -f2 ) )	COMPREPLY2=( ${COMPREPLY2[@]#$portsdir} )	COMPREPLY=( "${COMPREPLY[@]}" "${COMPREPLY2[@]}" )	return 0} &&complete -F _portinstall $dirnames portinstall# Slackware Linux removepkg completion#have removepkg && [ -f /etc/slackware-version ] &&_removepkg(){	local packages cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( (cd /var/log/packages; compgen -f -- "$cur") ) )} &&complete -F _removepkg $filenames removepkg &&	complete $dirnames -f -X '!*.tgz' installpkg upgradepkg explodepkg# look(1) completion#have look && _look(){	local cur  	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD = 1 ]; then		COMPREPLY=( $( compgen -W '$(look $cur)' ) )	fi} &&complete -F _look $default look# ypcat(1) and ypmatch(1) completion#have ypmatch &&_ypmatch(){	local cur map	COMPREPLY=()	cur=`_get_cword`	[ $1 = ypcat ] && [ $COMP_CWORD -gt 1 ] && return 0	[ $1 = ypmatch ] && [ $COMP_CWORD -gt 2 ] && return 0	if [ $1 = ypmatch ] && [ $COMP_CWORD -eq 1 ] && \	   [ ${#COMP_WORDS[@]} -eq 3 ]; then		map=${COMP_WORDS[2]}		COMPREPLY=( $( compgen -W '$( ypcat $map | \						cut -d':' -f 1 )' -- $cur) )	else		[ $1 = ypmatch ] && [ $COMP_CWORD -ne 2 ] && return 0		COMPREPLY=( $( compgen -W \			      '$( echo $(ypcat -x | cut -d"\"" -f 2))' -- $cur))	fi	return 0} &&complete -F _ypmatch ypmatch ypcat# mplayer(1) completion#have mplayer && {_mplayer_options_list(){	cur=${cur%\\}	COMPREPLY=( $( $1 $2 help 2> /dev/null | \		sed -e '1,/^Available/d' | awk '{print $1}' | \		sed -e 's/:$//' -e 's/^'${2#-}'$//' -e 's/<.*//' | \		grep "^$cur" ) )}_mplayer(){	local cmd cur prev skinsdir IFS=$' \t\n' i j k=0	COMPREPLY=()	cmd=${COMP_WORDS[0]}	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(ac|afm|vc|vfm|ao|vo|vop|fstype))			_mplayer_options_list mplayer $prev			return 0			;;		-@(oac|ovc|of))			_mplayer_options_list mencoder $prev			return 0			;;		-audiofile)			_filedir '@(mp3|MP3|mpg|MPG|ogg|OGG|wav|WAV|mid|MID|flac|FLAC|mka|MKA)'			return 0			;;		-font)			_filedir '@(desc|ttf)'			return 0			;;		-sub)			_filedir '@(srt|SRT|sub|SUB|txt|TXT|utf|UTF|rar|RAR|mpsub|smi|js|ssa|SSA|aas|AAS)'			return 0			;;		-vobsub)			_filedir '@(idx|IDX|ifo|IFO|sub|SUB)'			IFS=$'\t\n' 			COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do						if [ -f $i -a -r $i ]; then							echo ${i%.*}						else							echo $i						fi				       done ) )			IFS=$' \t\n' 			return 0			;;		-ifo)			_filedir '@(ifo|IFO)'			return 0			;;		-cuefile)			_filedir '@(bin|BIN|cue|CUE)'			return 0			;;		-skin)			# if you don't have installed mplayer in /usr/local you			# may want to set the MPLAYER_SKINS_DIR global variable			if [ -n "$MPLAYER_SKINS_DIR" ]; then				skinsdir=$MPLAYER_SKINS_DIR			else				skinsdir=/usr/local/share/mplayer/Skin			fi			IFS=$'\t\n' 			for i in ~/.mplayer/Skin $skinsdir; do				if [ -d $i -a -r $i ]; then					for j in $( compgen -d $i/$cur ); do						COMPREPLY[$k]=${j#$i/}						k=$((++k))					done				fi			done			IFS=$' \t\n' 			return 0			;;		-@(mixer|@(cdrom|dvd)-device|dvdauth|fb|zrdev))			cur=${cur:=/dev/}			_filedir			return 0			;;		-@(edl?(out)|lircconf|menu-cfg|playlist|csslib|dumpfile)| \		-@(subfile|vobsub|aofile|fbmodeconfig|include|o|dvdkey)| \		-passlogfile)			_filedir			return 0			;;		-@(auto@(q|sync)|loop|menu-root|speed|sstep|aid|alang)| \		-@(?(@(audio|sub)-)demuxer|bandwidth|cache|chapter)| \		-@(dvd?(angle)|fps|frames|mc|passwd|user|sb|srate|ss|vcd)| \		-@(vi?(d|vo)|ffactor|sid|slang|spu@(align|aa|gauss))| \		-@(vobsubid|delay|bpp|brightness|contrast|dfbopts|display)| \		-@(fbmode|geometry|guiwid|hue|icelayer|screen[wh]|wid)| \		-@(monitor@(aspect|-@(dotclock|[hv]freq))|panscan|saturation)| \		-@(xineramascreen|zr@(crop|norm|quality|[xy]doff|[vh]dec))| \		-@(aspect|pp|x|y|xy|z|stereo|audio-@(density|delay|preload))| \		-@(endpos|osdlevel|ffourcc|sws|channels|skiplimit|format)| \		-@(ofps|aa@(driver|@(osd|sub)color)|vobsubout?(i@(ndex|d)))| \		-sub@(-bg-@(alpha|color)|cp|delay|fps|pos|align|width)| \		-sub@(font-@(blur|outline|autoscale|encoding|@(osd|text)-scale)))			return 0			;;		-lavdopts)			COMPREPLY=( $( compgen -W 'ec er= bug= idct= gray' \					-- $cur ) )			return 0			;;		-lavcopts)			COMPREPLY=( $( compgen -W 'vcodec= vqmin= vqscale= \					vqmax= mbqmin= mbqmax= vqdiff= \					vmax_b_frames= vme= vhq v4mv \					keyint= vb_strategy= vpass= \					aspect= vbitrate= vratetol= \					vrc_maxrate= vrc_minrate= \					vrc_buf_size= vb_qfactor= vi_qfactor= \					vb_qoffset= vi_qoffset= vqblur= \					vqcomp= vrc_eq= vrc_override= \					vrc_init_cplx= vqsquish= vlelim= \					vcelim= vstrict= vdpart vpsize= gray \					vfdct= idct= lumi_mask= dark_mask= \					tcplx_mask= scplx_mask= naq ildct \					format= pred qpel precmp= cmp= \					subcmp= predia= dia= trell last_pred= \					preme= subq= psnr mpeg_quant aic umv' \					-- $cur ) )			return 0			;;		-ssf)			COMPREPLY=( $( compgen -W 'lgb= cgb= ls= cs= chs= \					cvs=' -- $cur ) )			return 0			;;		-jpeg)			COMPREPLY=( $( compgen -W 'noprogressive progressive \					nobaseline baseline optimize= \					smooth= quality= outdir=' -- $cur ) )			return 0			;;		-xvidopts)			COMPREPLY=( $( compgen -W 'dr2 nodr2' -- $cur ) )			return 0			;;		-xvidencopts)			COMPREPLY=( $( compgen -W 'pass= bitrate= \					fixed_quant= me_quality= 4mv \					rc_reaction_delay_factor= \					rc_averaging_period= rc_buffer= \					quant_range= min_key_interval= \					max_key_interval= mpeg_quant \					mod_quant lumi_mask hintedme \					hintfile debug keyframe_boost= \					kfthreshold= kfreduction=' -- $cur ) )			return 0			;;		-divx4opts)			COMPREPLY=( $( compgen -W 'br= key= deinterlace q= \					min_quant= max_quant= rc_period= \					rc_reaction_period= crispness= \					rc_reaction_ratio= pass= vbrpass= \					help' -- $cur ) )			return 0			;;		-info)			COMPREPLY=( $( compgen -W 'name= artist= genre= \					subject= copyright= srcform= \					comment= help' -- $cur ) )			return 0			;;		-lameopts)			COMPREPLY=( $( compgen -W 'vbr= abr cbr br= q= aq= \					ratio= vol= mode= padding= fast \					preset= help' -- $cur ) )			return 0			;;		-rawaudio)			COMPREPLY=( $( compgen -W 'on channels= rate= \					samplesize= format=' -- $cur ) )			return 0			;;		-rawvideo)			COMPREPLY=( $( compgen -W 'on fps= sqcif qcif cif \					4cif pal ntsc w= h= y420 yv12 yuy2 \					y8 format= size=' -- $cur ) )			return 0			;;		-aop)			COMPREPLY=( $( compgen -W 'list= delay= format= fout= \					volume= mul= softclip' -- $cur ) )			return 0			;;		-dxr2)			COMPREPLY=( $( compgen -W 'ar-mode= iec958-encoded \					iec958-decoded mute ucode= 75ire bw \					color interlaced macrovision= norm= \					square-pixel ccir601-pixel cr-left= \					cr-right= cr-top= cr-bot= ck-rmin= \					ck-gmin= ck-bmin= ck-rmax= ck-gmax= \					ck-bmax= ck-r= ck-g= ck-b= \					ignore-cache= ol-osd= olh-cor= \					olw-cor= olx-cor= oly-cor= overlay \					overlay-ratio= update-cache' -- $cur ))			return 0			;;		-tv)			COMPREPLY=( $( compgen -W 'on noaudio driver= device= \					input= freq= outfmt= width= height= \					buffersize= norm= channel= chanlist= \					audiorate= forceaudio alsa amode= \					forcechan= adevice= audioid= volume= \					bass= treble= balance= fps= \					channels= immediatemode=' -- $cur ) )			return 0			;;		-mf)			COMPREPLY=( $( compgen -W 'on w= h= fps= type=' \					-- $cur ) )			return 0			;;		-cdda)			COMPREPLY=( $( compgen -W 'speed= paranoia= \					generic-dev= sector-size= overlap= \					toc-bias toc-offset= skip noskip' \					-- $cur ) )			return 0			;;		-input)			COMPREPLY=( $( compgen -W 'conf= ar-delay ar-rate \					keylist cmdlist js-dev file' -- $cur ) )			return 0			;;		-af)			COMPREPLY=( $( compgen -W 'resample resample= \					channels channels= format format= \					volume volume= delay delay= pan \					pan= sub sub= surround surround=' \					-- $cur ) )			return 0			;;		-af-adv)			COMPREPLY=( $( compgen -W 'force= list=' -- $cur ) )			return 0			;;	esac	case "$cur" in		-*)			COMPREPLY=( $( compgen -W '-aid -alang -audio-demuxer \					-audiofile -cdrom-device -cache -cdda \					-channels -chapter -csslib -demuxer \					-dvd -dvd-device -dvdangle -dvdauth \					-dvdkey -dvdnav -forceidx -fps -frames \					-hr-mp3-seek -idx -mc -mf -ni -nobps \					-passwd -rawaudio -rtsp-stream-over-tcp\					-skipopening -sb -srate -ss -tv -user \					-vcd -vid -vivo -ifo -ffactor -font \					-noautosub -nooverlapsub -sid -slang \					-sub -subcc -subcp -sub-demuxer \					-subdelay -subfont-autoscale \					-subfont-blur -subfont-encoding \					-subfont-osd-scale -subfont-outline \					-subfont-text-scale -subfps -subfile \					-subpos -unicode -utf8 -vobsub \					-vobsubid -ac -afm -aspect -flip \					-lavdopts -noaspect -nosound -pp -ssf \					-stereo -sws -vc -vfm -vop -xvidopts\					-xy -zoom -bandwidth -cuefile \					-noextbased -rawvideo -overlapsub \					-sub-bg-alpha -sub-bg-color -subalign \					-subwidth -sub-no-text-pp -spualign \					-spuaa -spugauss -pphelp -verbose -v \					-noni -noidx -nohr-mp3-seek -extbased \					-bps -oldpp -nozoom -noflip -nounicode \					-noutf8' -- $cur ) )			# add mplayer specific options			[[ "$cmd" == @(?(g)mplayer) ]] && COMPREPLY=( "${COMPREPLY[@]}" \				$(compgen -W '-autoq -autosync -benchmark \					-framedrop -h -help -hardframedrop \					-identify -input -lircconf -loop \					-nojoystick -nolirc -nortc -playlist \					-quiet -really-quiet -rnd -sdp -skin \					-slave -softsleep -speed -sstep \					-use-stdin -dumpaudio -dumpfile \					-dumpstream -dumpvideo -dumpmicrodvdsub\					-dumpmpsub -dumpsrtsub -dumpjacosub \					-dumpsami -dumpsub -osdlevel -af \					-af-adv -ao -aofile -aop -delay -mixer \					-nowaveheader -bpp -brightness \					-contrast -display -double -dr -dxr2 \					-fb -fbmode -fbmodeconfig -forcexv -fs \					-geometry -hue -icelayer -jpeg \					-monitor-dotclock -monitor-hfreq \					-monitor-vfreq -monitoraspect \					-nograbpointer -noslices -panscan \					-rootwin -saturation -screenw -screenh \					-stop-xscreensaver -vm -vo -vsync -wid \					-xineramascreen -z -zrbw -zrcrop \					-zrdev -zrfd -zrhelp -zrnorm -zrquality \					-zrvdec -zrhdec -zrxdoff -zrydoff -y \					-edl -edlout -enqueue -fixed-vo \					-menu -menu-root -menu-cfg -shuffle \					-format -aahelp -dfbopts -fstype \					-guiwid -nokeepaspect -x --help \					-aaosdcolor -aasubcolor -aadriver \					-aaextended -aaeight' -- $cur) )			# add mencoder specific options			[[ "$cmd" = mencoder ]] && COMPREPLY=( "${COMPREPLY[@]}" \				$(compgen -W '-audio-density -audio-delay \					-audio-preload -divx4opts -endpos \					-ffourcc -include -info -lameopts \					-lavcopts -noskip -o -oac -ofps -ovc \					-passlogfile -skiplimit -vobsubout \					-vobsuboutindex -vobsuboutid \					-xvidencopts -of --verbose' -- $cur) )			;;		*)			_filedir '@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|ASF|vob|VOB|bin|BIN|dat|DAT|vcd|VCD|ps|PS|pes|PES|fli|FLI|flv|FLV|viv|VIV|rm?(j)|RM?(J)|ra?(m)|RA?(M)|yuv|YUV|mov|MOV|qt|QT|mp[34]|MP[34]|m4v|M4V|og[gm]|OG[GM]|wav|WAV|dump|DUMP|mk[av]|MK[AV]|m4a|M4A|aac|AAC|m2v|M2V|dv|DV|rmvb|RMVB|mid|MID|ts|TS|3gp|mpc|MPC|flac|FLAC|flv|FLV|divx|DIVX)'			;;	esac	return 0}complete $filenames -F _mplayer mplayer mencoder gmplayer kplayer}# KDE dcop completion#have dcop &&_dcop(){	local cur compstr	COMPREPLY=()	cur=`_get_cword`	if [ -z $cur ]; then	    compstr=${COMP_WORDS[*]}	else	    compstr=$( command echo ${COMP_WORDS[*]} | sed "s/ $cur$//" )	fi	COMPREPLY=( $( compgen -W '$( command $compstr | sed s/\(.*\)// )'  -- $cur ) )} &&complete -F _dcop dcop# wvdial(1) completion#have wvdial &&_wvdial(){	local cur prev config i IFS=$'\t\n'	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		--config)			_filedir			return 0			;;	esac	case $cur in		-*)			COMPREPLY=( $( compgen -W '--config --chat \				--remotename --help --version --no-syslog' \				-- $cur ) )			;;		*)			# start with global and personal config files		       	config="/etc/wvdial.conf"$'\t'"$HOME/.wvdialrc"			# replace with command line config file if present			for (( i=1; i < COMP_CWORD; i++ )); do				if [[ "${COMP_WORDS[i]}" == "--config" ]]; then					config=${COMP_WORDS[i+1]}					break				fi			done			# parse config files for sections and			# remove default section			COMPREPLY=( $( sed -ne \				    "s|^\[Dialer \($cur.*\)\]$|\1|p" \				    $config 2>/dev/null |grep -v '^Defaults$'))			# escape spaces			COMPREPLY=${COMPREPLY// /\\ }			;;	esac} &&complete -F _wvdial wvdial# gpg(1) completion#have gpg &&_gpg() {	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-@(s|-sign|-clearsign|-decrypt-files|-load-extension)) 		_filedir		return 0		;;	--@(export|@(?(l|nr|nrl)sign|edit)-key)) 		# return list of public keys		COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*\(<\([^>]*\)>\).*$@\1 \3@p')" -- "$cur" ))		return 0		;;	-@(r|-recipient))		COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^pub.*<\([^>]*\)>.*$@\1@p')" -- "$cur" ))		if [ -e ~/.gnupg/gpg.conf ]; then			COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' ~/.gnupg/gpg.conf  )" -- "$cur") )		fi		return 0		;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-s -b -e -f -c -d -a -r -u -Z -o -v\				-q -n -N $(gpg --dump-options)' -- $cur ) )	 fi} &&complete -F _gpg $default gpg# iconv(1) completion#have iconv &&_iconv(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(f|t|-@(from|to)-code))			COMPREPLY=( $( compgen -W \			    '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )			return 0			;;	esac	if [[ "$cur" = -* ]]; then		COMPREPLY=( $( compgen -W '--from-code -f --to-code -t --list		--output -o --verbose' -- "$cur" ) )		return 0	fi} &&complete -F _iconv $default iconv# dict(1) completion#{ have dict || have rdict; } && {_dictdata(){	dict $host $port $1 2>/dev/null | sed -ne \	    's/^['$'\t '']['$'\t '']*\([^'$'\t '']*\).*$/\1/p'}_dict(){	local cur prev host port db dictfile	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	dictfile=/usr/share/dict/words	for (( i=1; i < COMP_CWORD; i++ )); do		case "${COMP_WORDS[i]}" in		-@(h|--host))			host=${COMP_WORDS[i+1]}			[ -n "$host" ] && host="-h $host"			i=$((++i))			;;		-@(p|-port))			port=${COMP_WORDS[i+1]}			[ -n "$port" ] && port="-p $port"			i=$((++i))			;;		-@(d|-database))			db=${COMP_WORDS[i+1]}			[ -n "$db" ] && host="-d $db"			i=$((++i))			;;		*)			;;		esac	done	if [[ "$cur" = -* ]]; then		COMPREPLY=( $( compgen -W '-h --host -p --port -d --database \			       -m --match -s --strategy -c --config -C \			       --nocorrect -D --dbs -S --strats -H \			       --serverhelp -i --info -I --serverinfo \			       -a --noauth -u --user -k --key -V --version \			       -L --license --help -v --verbose -r --raw \			       -P --pager --debug --html --pipesize --client' \			       -- "$cur" ) )		return 0	fi	case "$prev" in	-@(d|-database|i|info))		COMPREPLY=( $( compgen -W '$( _dictdata -D )' -- "$cur" ) )		return 0		;;	-@(s|-strategy))		COMPREPLY=( $( compgen -W '$( _dictdata -S )' -- "$cur" ) )		return 0		;;	*)		;;	esac	[ -r $dictfile ] && \		COMPREPLY=( $( compgen -W '$( cat $dictfile )' -- "$cur" ) )}complete -F _dict $default dict rdict}# cdrecord(1) completion#have cdrecord &&_cdrecord(){	local cur prev i generic_options track_options track_mode	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# foo=bar style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case "$prev" in			@(text|cue)file)				_filedir				return 0				;;			blank)				COMPREPLY=( $( compgen -W 'help all fast \				track unreserve trtail unclose session' \				-- $cur ) )				return 0				;;			driveropts)				COMPREPLY=( $( compgen -W 'burnfree noburnfree\				  varirec= audiomaster forcespeed noforcespeed\				  speedread nospeedread singlesession \				  nosinglesession hidecdr nohidecdr tattooinfo\				  tattoofile=' -- $cur ) )				return 0				;;		esac	fi	generic_options=(-version -v -V -d -silent -s -force -immed -dummy \			 -dao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc \			 -atip -fix -nofix -waiti -load -lock -eject -format \			 -setdropts -checkdrive -prcap -inq -scanbus -reset \			 -abort -overburn -ignsize -useinfo -packet -noclose \			 -text debug= kdebug= kd= minbuf= speed= blank= fs= \			 dev= gracetime= timeout= driver= driveropts= \			 defpregap= pktsize= mcn= textfile= cuefile=)	track_options=(-audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi \		       -isosize -pad padsize= -nopad -shorttrack -noshorttrack\		       pregap= -preemp -nopreemp -copy -nocopy -scms tcsize= \		       isrc= index=)	# look if previous was either a file or a track option	track_mode=0	if [ $COMP_CWORD -gt 1 ]; then		if [ -f "$prev" ]; then			track_mode=1		else			for (( i=0; i < ${#track_options[@]}; i++ )); do				if [[ "${track_options[i]}" == "$prev" ]]; then					track_mode=1					break				fi			done		fi	fi	# files are always eligible completion	_filedir	# track options are always available	COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '${track_options[@]}' -- $cur ) )	# general options are no more available after file or track option	if [ $track_mode -eq 0 ]; then		COMPREPLY=( "${COMPREPLY[@]}" \			    $( compgen -W '${generic_options[@]}' -- $cur ) )	fi} &&complete -F _cdrecord $filenames cdrecord# mkisofs(8) completion#have mkisofs &&_mkisofs(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(o|abstract|biblio|check-session|copyright|log-file|root-info|prep-boot|*-list))			_filedir			return 0			;;		-*-charset)			COMPREPLY=( $( mkisofs -input-charset help 2>&1 | \					tail +3 | grep "^$cur") )			return 0			;;		-uid)			_uids			return 0			;;		-gid)			_gids			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-abstract -A -allow-lowercase \				-allow-multidot -biblio -cache-inodes \				-no-cache-inodes -b -eltorito-alt-boot -B -G \				-hard-disk-boot -no-emul-boot -no-boot \				-boot-load-seg -boot-load-size \				-boot-info-table -C -c -check-oldname \				-check-session -copyright -d -D -dir-mode \				-dvd-video -f -file-mode -gid -gui \				-graft-points -hide -hide-list -hidden \				-hidden-list -hide-joliet -hide-joliet-list \				-hide-joliet-trans-tbl -hide-rr-moved \				-input-charset -output-charset -iso-level -J \				-joliet-long -jcharset -l -L -log-file -m \				-exclude-list -max-iso9660-filenames -M -N \				-new-dir-mode -nobak -no-bak -force-rr -no-rr \				-no-split-symlink-components \				-no-split-symlink-fields -o -pad -no-pad \				-path-list -P -p -print-size -quiet -R -r \				-relaxed-filenames -sort -split-output \				-stream-media-size -stream-file-name -sysid -T\				-table-name -ucs-level -udf -uid \				-use-fileversion -U -no-iso-translate -V \				-volset -volset-size -volset-seqno -v -x -z \				-hfs -apple -map -magic -hfs-creator \				-hfs-type -probe -no-desktop -mac-name \				-boot-hfs-file -part -auto -cluster-size \				-hide-hfs -hide-hfs-list -hfs-volid \				-icon-position -root-info -prep-boot \				-input-hfs-charset -output-hfs-charset \				-hfs-unlock -hfs-bless -hfs-parms --cap \				--netatalk --double --ethershare --ushare \				--exchange --sgi --xinet --macbin --single \				--dave --sfm --osx-double --osx-hfs' -- $cur ))	else		_filedir	fi} &&complete -F _mkisofs $filenames mkisofs# mc(1) completion#have mc &&_mc(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# -name value style option	case "$prev" in		-@(e|v|l|P))			_filedir			return 0			;;	esac	# --name=value style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case "$prev" in			--@(edit|view|ftplog|printwd))				_filedir				return 0				;;		esac	fi	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-a --stickchars -b --nocolor -c \			--color -C --colors= -d --nomouse -e --edit= -f \			--datadir -k --resetsoft -l --ftplog= -P --printwd= \			-s --slow -t --termcap -u --nosubshell -U --subshell \			-v --view= -V --version -x --xterm -h --help' -- $cur ) )	else		_filedir -d	fi} &&complete -F _mc $filenames mc# yum(8) completion#have yum && {_yum(){	local cur prev special		COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do		if [[ ${COMP_WORDS[i]} == @(install|update|upgrade|remove|erase|deplist) ]]; then			special=${COMP_WORDS[i]}		fi	done	if [ -n "$special" ]; then	    case $special in		install|deplist)		    COMPREPLY=( $( compgen -W '$( yum -C list | cut -d" " -f1 )' -- $cur ) )		    return 0		    ;;		*)		    _rpm_installed_packages		    return 0		    ;;		esac	fi	case $cur in	    --*)		COMPREPLY=( $( compgen -W '--installroot --version --help --enablerepo --disablerepo --exclude --obsoletes --noplugins' -- $cur ) )		return 0		;;	    -*)		COMPREPLY=( $( compgen -W '-c -e -d -y -t -R -C -h' -- $cur ) )		return 0		;;	esac	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 ) )		;;	    localinstall)		_filedir rpm		;;	    -c)		_filedir		;;	    --installroot)		_filedir -d		;;	    *)		COMPREPLY=( $( compgen -W 'install update check-update upgrade remove list \						search info provides clean groupinstall groupupdate \						grouplist deplist erase groupinfo groupremove \						localinstall localupdate makecache resolvedep \						shell whatprovides' -- $cur ) )		;;	esac}complete -F _yum $filenames yum# yum-arch(8) completion#_yum_arch(){    local cur    COMPREPLY=()    cur=`_get_cword`    case "$cur" in	-*)	    COMPREPLY=( $( compgen -W '-d -v -vv -n -c -z -s -l -q' -- $cur ) )	    ;;	*)	    _filedir -d	    ;;    esac    return 0}complete -F _yum_arch $filenames yum-arch}# ImageMagick completion#have convert && {_ImageMagick(){	local prev	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-channel)			COMPREPLY=( $( compgen -W 'Red Green Blue Opacity \				Matte Cyan Magenta Yellow Black' -- $cur ) )			return 0			;;		-colormap)			COMPREPLY=( $( compgen -W 'shared private' -- $cur ) )			return 0			;;		-colorspace)			COMPREPLY=( $( compgen -W 'GRAY OHTA RGB Transparent \				XYZ YCbCr YIQ YPbPr YUV CMYK' -- $cur ) )			return 0			;;		-compose)			COMPREPLY=( $( compgen -W 'Over In Out Atop Xor Plus \				Minus Add Subtract Difference Multiply Bumpmap\				Copy CopyRed CopyGreen CopyBlue CopyOpacity' \				-- $cur ) )			return 0			;;		-compress)			COMPREPLY=( $( compgen -W 'None BZip Fax Group4 JPEG \				Lossless LZW RLE Zip' -- $cur ) )			return 0			;;		-dispose)			COMPREPLY=( $( compgen -W 'Undefined None Background \						    Previous' -- $cur ) )			return 0			;;		-encoding)			COMPREPLY=( $( compgen -W 'AdobeCustom AdobeExpert \				AdobeStandard AppleRoman BIG5 GB2312 Latin2 \				None SJIScode Symbol Unicode Wansung' -- $cur))			return 0			;;		-endian)			COMPREPLY=( $( compgen -W 'MSB LSB' -- $cur ) )			return 0			;;		-filter)			COMPREPLY=( $( compgen -W 'Point Box Triangle Hermite \				Hanning Hamming Blackman Gaussian Quadratic \				Cubic Catrom Mitchell Lanczos Bessel Sinc' \				-- $cur ) )			return 0			;;		-format)			COMPREPLY=( $( convert -list format | \				    awk '/ [r-][w-][+-] / {print $1}' | \				    tr -d '*' | tr [:upper:] [:lower:] | \				    grep "^$cur" ) )			return 0			;;		-gravity)			COMPREPLY=( $( compgen -W 'Northwest North NorthEast \				West Center East SouthWest South SouthEast' \				-- $cur ) )			return 0			;;		-intent)			COMPREPLY=( $( compgen -W 'Absolute Perceptual \					Relative Saturation' -- $cur ) )			return 0			;;		-interlace)			COMPREPLY=( $( compgen -W 'None Line Plane Partition' \					-- $cur ) )			return 0			;;		-limit)			COMPREPLY=( $( compgen -W 'Disk File Map Memory' \					-- $cur ) )			return 0			;;		-list)			COMPREPLY=( $( compgen -W 'Delegate Format Magic \					Module Resource Type' -- $cur ) )			return 0			;;		-map)			COMPREPLY=( $( compgen -W 'best default gray red \					green blue' -- $cur ) )			_filedir			return 0			;;		-noise)			COMPREPLY=( $( compgen -W 'Uniform Gaussian \					Multiplicative \				Impulse Laplacian Poisson' -- $cur ) )			return 0			;;		-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 0			;;		-@(mask|profile|texture|tile|write))			_filedir			return 0			;;		-type)			COMPREPLY=( $( compgen -W 'Bilevel Grayscale Palette \					PaletteMatte TrueColor TrueColorMatte \					ColorSeparation ColorSeparationlMatte \					Optimize' -- $cur ) )			return 0			;;		-units)			COMPREPLY=( $( compgen -W 'Undefined PixelsPerInch \					PixelsPerCentimeter' -- $cur ) )			return 0			;;		-virtual-pixel)			COMPREPLY=( $( compgen -W 'Constant Edge mirror tile' \					-- $cur ) )			return 0			;;		-visual)			COMPREPLY=( $( compgen -W 'StaticGray GrayScale \					StaticColor PseudoColor TrueColor \					DirectColor defaut visualid' -- $cur ))			return 0			;;	esac}_convert(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-adjoin -affine -antialias -append \			-authenticate -average -background -black-threshold \			-blue-primary -blur -border -bordercolor -channel \			-charcoal -chop -clip -coalesce -colorize -colors \			-colorspace -comment -compress -contrast -convolve \			-crop -cycle -debug -deconstruct -delay -density \			-depth -despeckle -display -dispose -dither -draw \			-edge -emboss -encoding -endian -enhance -equalize \			-extract -fill -filter -flatten -flip -flop -font \			-frame -fuzz -gamma -gaussian -geometry \			-green-primary -gravity -help -implode -intent \			-interlace -label -lat -level -limit -list -log -loop \			-map -mask -matte -median -modulate -monochrome \			-morph -mosaic -negate -noop -noise -normalize \			-opaque -ordered-dither -page -paint -ping -pointsize \			-preview -profile -quality -raise -random-threshold \			-region -raise -red-primary -render -resize -resample \			-roll -rotate -sample -sampling-factor -scale -scene \			-seed -segment -shade -sharpen -shave -shear -size \			-solarize -spread -stroke -strokewidth -swirl \			-texture -threshold -thumbnail -tile -transform \			-transparent -treedepth -trim -type -undercolor \			-units -unsharp -verbose -version -view \			-virtual-pixel -wave -white-point -white-threshold \			-write' -- $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 $filenames convert_mogrify(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-affine -antialias -authenticate \			-background -black-threshold -blue-primary -blur \			-border -bordercolor -channel -charcoal -chop \			-colorize -colors -colorspace -comment -compress \			-contrast -convolve -crop -cycle -debug -delay \			-density -depth -despeckle -display -dispose -dither \			-draw -edge -emboss -encoding -endian -enhance \			-equalize -extract -fill -filter -flip -flop -font \			-format -frame -fuzz -gamma -gaussian -geometry \			-green-primary -implode -interlace -help -label -lat \			-level -limit -list -log -loop -map -mask -matte \			-median -modulate -monochrome -negate -noop \			-normalize -opaque -page -paint -fill -ordered-dither \			-pointsize -profile -quality -raise -random-threshold \			-red-primary -region -resample -resize -roll -rotate \			-sample -sampling-factor -scale -scene -seed -segment \			-shade -sharpen -shear -size -solarize -spread \			-stroke -strokewidth -swirl -texture -threshold \			-thumbnail -tile -transform -transparent -treedepth \			-trim -type -undercolor -units -unsharp -verbose \			-version -view -virtual-pixel -wave -white-point \			-white-threshold' -- $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 $filenames mogrify_display(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-authenticate -backdrop -border \			-colormap -colors -colorspace -comment -compress \			-contrast -crop -debug -delay -density -depth \			-despeckle -display -dispose -dither -edge -endian \			-enhance -extract -filter -flip -flop -frame -gamma \			-geometry -help -immutable -interlace -label -limit \			-log -map -matte -monochrome -negate -noop -page \			-quality -raise -remote -roll -rotate -sample \			-sampling-factor -scene -segment -sharpen -size \			-texture -treedepth -trim -update -verbose -version \			-virtual-pixel -window -window_group -write' -- $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 $filenames display_animate(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-authenticate -backdrop -colormap \			-colors -colorspace -crop -debug -delay -density \			-depth -display -dither -extract -gamma -geometry \			-help -interlace -limit -log -matte -map -monochrome \			-noop -pause -remote -rotate -sampling-factor -scene \			-size -treedepth -trim -verbose -version -visual \			-virtual-pixel -window' -- $cur ) )	elif [[ "$cur" == +* ]]; then		COMPREPLY=( $( compgen -W '+debug +dither +gamma +map +matte' -- $cur ) ) 	else		_filedir	fi}complete -F _animate $filenames animate_identify(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-authenticate -debug -density \			-depth -extract -format -help -interlace -limit -list \			-log -size -sampling-factor -verbose -version \			-virtual-pixel' -- $cur ) )	elif [[ "$cur" == +* ]]; then		COMPREPLY=( $( compgen -W '+debug ' -- $cur ) ) 	else		_filedir	fi}complete -F _identify $filenames identify_montage(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-adjoin -affine -authenticate \			-blue-primary -blur -colors -colorspace -comment \			-compose -compress -crop -debug -density -depth \			-display -dispose -dither -draw -encoding -endian \			-extract -fill -filter -flip -flop -frame -gamma \			-geometry -gravity -green-primary -interlace -help \			-label -limit -log -matte -mode -monochrome -noop \			-page -pointsize -quality -red-primary -resize \			-rotate -sampling-factor -scene -shadow -size \			-stroke -texture -thumbnail -tile -transform \			-transparent -treedepth -trim -type -verbose \			-version -virtual-pixel -white-point' -- $cur ) )	elif [[ "$cur" == +* ]]; then		COMPREPLY=( $( compgen -W '+adjoin +compress +debug +dither \			+endian +gamma +label +matte +page' -- $cur ) ) 	else		_filedir	fi}complete -F _montage $filenames montage_composite(){	local cur	COMPREPLY=()	cur=`_get_cword`	_ImageMagick	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-affine -authenticate \			-blue-primary -colors -colorspace -comment -compose \			-compress -debug -density -depth -displace -display \			-dispose -dissolve -dither -encoding -endian -extract \			-filter -font -geometry -gravity -green-primary -help \			-interlace -label -limit -log -matte -monochrome \			-negate -page -profile -quality -red-primary -rotate \			-resize -sampling-factor -scene -sharpen -size \			-stegano -stereo -thumbnail -tile -transform \			-treedepth -type -units -unsharp -verbose -version \			-virtual-pixel -watermark -white-point -write' \			-- $cur ) )	elif [[ "$cur" == +* ]]; then		COMPREPLY=( $( compgen -W '+compress +debug +dither +endian +label \			+matte +negate +page +write' -- $cur ) ) 	else		_filedir	fi}complete -F _composite $filenames composite}# dd(1) completion#have dd &&_dd(){	 local cur	 COMPREPLY=()	cur=`_get_cword`	 case "$cur" in	 if=*|of=*)		 cur=${cur#*=}		 _filedir		 return 0		 ;;	 conv=*)		 cur=${cur#*=}		 COMPREPLY=( $( compgen -W 'ascii ebcdic ibm block unblock \				lcase notrunc ucase swab noerror sync' \				-- $cur ) )		 return 0		 ;;	 esac	 _expand || return 0	 COMPREPLY=( $( compgen -W '--help --version' -- $cur ) \		     $( compgen -W 'bs cbs conv count ibs if obs of seek skip'\				-S '=' -- $cur ) )} &&complete -F _dd $nospace $filenames dd# CUPS cancel(1) completion#have cancel &&_cancel(){	local cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( lpstat | cut -d' ' -f1 | grep "^$cur" ) )} &&complete -F _cancel $filenames cancel# aspell(1) completion#have aspell && {_aspell_dictionary(){	local datadir	datadir=/usr/lib/aspell	COMPREPLY=( $( command ls $datadir/*.@(multi|alias) ) )	COMPREPLY=( ${COMPREPLY[@]%.@(multi|alias)} )	COMPREPLY=( $( compgen -W '${COMPREPLY[@]#$datadir/}' -- $cur ) )}_aspell(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# --name value style option	case "$prev" in		@(-c|-p|check))			_filedir			return 0			;;		@(dump|create|merge))			COMPREPLY=( $( compgen -W 'master personal repl' -- $cur ) )			return 0			;;		-d)			_aspell_dictionary			return 0			;;	esac	# --name=value style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case "$prev" in			--@(conf|personal|repl|per-conf))				_filedir				return 0				;;			--@(conf-dir|data-dir|dict-dir|home-dir|local-data-dir|prefix))				_filedir -d				return 0				;;			--master)				_aspell_dictionary				return 0				;;			--mode)				COMPREPLY=( $( compgen -W 'none url email sgml tex' -- $cur ) )				return 0				;; 			--sug-mode)				COMPREPLY=( $( compgen -W 'ultra fast normal bad-speller' -- $cur ) )				return 0				;;			--keymapping)				COMPREPLY=( $( compgen -W 'aspell ispell' -- $cur ) )				return 0				;;		esac	fi	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--conf= --conf-dir= --data-dir= --dict-dir= \			--encoding= --add-filter= --rem-filter= --mode= -e \			-H -t --add-extra-dicts= --rem-extra-dicts= \			--home-dir= -W --ignore= --ignore-accents \			--dont-ignore-accents --ignore-case --dont-ignore-case \			--ignore-repl --dont-ignore-repl --jargon= --keyboard= \			--lang= --language-tag= --local-data-dir= -d --master= \			--module= --add-module-search-order= \			--rem-module-search-order= --per-conf= -p --personal= \			--prefix= --repl= -C -B --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= \			-b -x --backup -b|-x --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 ) )	else		COMPREPLY=( $( compgen -W '-? help -c check -a pipe -l list \			config config soundslike filter -v version dump \			create merge' -- $cur ) )	fi}complete -F _aspell $filenames aspell}# xmms(1) completion#have xmms &&_xmms(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-h --help -r --rew -p --play \			-u --pause -s --stop -t --play-pause -f --fwd -e \			--enqueue -m --show-main-window -i --sm-client-id \			-v --version' -- $cur ) )	else		_filedir '@(mp[23]|MP[23]|ogg|OGG|wav|WAV|pls|m3u|xm|mod|s[3t]m|it|mtm|ult|flac)'	fi} &&complete -F _xmms $filenames xmms# info(1) completion#have info &&_info(){	local cur infopath UNAME	COMPREPLY=()	cur=`_get_cword`	_expand || return 0	# default completion if parameter contains /	if [[ "$cur" == */* ]]; then		_filedir		return 0	fi	infopath='/usr/share/info'	if [ "${INFOPATH: -1:1}" == ':' ]; then		infopath=${INFOPATH}${infopath}	elif [ ${INFOPATH:+set} ]; then		infopath=$INFOPATH	fi	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=0 ; i < ${#COMPREPLY[@]} ; ++i )); do		if [ "${COMPREPLY[$i]}" == 'dir' ]; then			unset COMPREPLY[$i];		fi;	done  	# strip suffix from info pages	COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2)} )	COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )	return 0} &&complete -F _info $filenames info# dhclient(1) completion#have dhclient && _dhclient(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(cf|lf|pf|sf))			_filedir			return 0			;;		-s)			_known_hosts			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-p -d -q -1 -r -lf -pf \			-cf -sf -s -g -n -nw -w' -- $cur ) )	else		_available_interfaces	fi} &&complete -F _dhclient dhclient# lvm(8) completion#have lvm && {_volumegroups(){	COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \	    sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- $cur ) )}_physicalvolumes(){	COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \	    sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- $cur ) )}_logicalvolumes(){	COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \	    sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- $cur ) )}_units(){	COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- $cur ) )}_sizes(){	COMPREPLY=( $( compgen -W 'k K m M g G t T' -- $cur ) )}_args(){	args=0	if [[ "${COMP_WORDS[0]}" == lvm ]]; then		offset=2	else		offset=1	fi	for (( i=$offset; i < COMP_CWORD; i++ )); do		if [[ "${COMP_WORDS[i]}" != -* ]]; then			args=$(($args + 1))		fi	done}_lvmdiskscan(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -h -? --help -l \			--lvmpartition -v --verbose --version' -- $cur ) )	fi}complete -F _lvmdiskscan lvmdiskscan_pvscan(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -e \			--exported -n --novolumegroup -h -? \			--help --ignorelockingfailure -P \			--partial -s --short -u --uuid -v \			--verbose --version' -- $cur ) )	fi}complete -F _pvscan pvscan_pvs(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(o|O|-options|-sort))			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 0			;;		--units)			_units			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--aligned -a --all -d --debug \			-h -? --help --ignorelockingfailure --noheadings \			--nosuffix -o --options -O --sort \			--separator --unbuffered --units \			-v --verbose --version' -- $cur ) )	else		_physicalvolumes	fi}complete -F _pvs pvs_pvdisplay(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		--units)			_units			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \			-v --verbose -d --debug -h --help --version' -- $cur ) )	else		_physicalvolumes	fi}complete -F _pvdisplay pvdisplay_pvchange(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|x|-autobackup|--allocatable))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-a --all -A --autobackup \			-d --debug -h --help -t --test -u --uuid -x \			--allocatable -v --verbose --addtag --deltag \			--version' -- $cur ) )	else		_physicalvolumes	fi}complete -F _pvchange pvchange_pvcreate(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		--restorefile)			_filedir			return 0			;;		-@(M|-metadatatype))			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )			return 0			;;		--metadatacopies)			COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )			return 0			;;		--@(metadatasize|setphysicalvolumesize))			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--restorefile -d --debug -f \			--force -h -? --help --labelsector -M --metadatatype \			--metadatacopies --metadatasize \			--setphysicalvolumesize -t --test -u --uuid uuid -v \			--verbose -y --yes --version' -- $cur ) )	else		_physicalvolumes	fi}complete -F _pvcreate pvcreate_pvmove(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(n|-name))			_logicalvolumes			return 0	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--abort -A --autobackup \			-b --background -d --debug -f --force -h -? \			--help -i --interval -t --test -v --verbose \			--version -n --name' -- $cur ) )	else		_physicalvolumes	fi}complete -F _pvmove pvmove_pvremove(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -f --force -h -? \			--help -y --yes -t --test -v --verbose \			--version' -- $cur ) )	else		_physicalvolumes	fi}complete -F _pvremove pvremove_vgscan(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -h --help \			--ignorelockingfailure --mknodes -P \			--partial -v --verbose --version' -- $cur ) )	fi}complete -F _vgscan vgscan_vgs(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(o|O|-options|-sort))			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 0			;;		--units)			_units			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--aligned -d --debug \			-h --help --ignorelockingfailure --noheadings \			--nosuffix -o --options -O --sort -P --partial \			--separator --unbuffered --units \			-v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgs vgs_vgdisplay(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		--units)			_units			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \			-P --partial -A --activevolumegroups -v --verbose \			-d --debug -h --help --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgdisplay vgdisplay_vgchange(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(a|A|x|-available|-autobackup|-resizeable))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -P \			--partial -d --debug -h --help --ignorelockingfailure \			-t --test -u --uuid -v --verbose --version -a \			--available -x --resizeable -l --logicalvolume \			--addtag --deltag' -- $cur ) )	else		_volumegroups	fi}complete -F _vgchange vgchange_vgcreate(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(M|-metadatatype))			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )			return 0			;;		-@(s|-physicalextentsize))			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup --addtag \			--alloc -d --debug -h --help -l --maxlogicalvolumes \			-M --metadatatype -p --maxphysicalvolumes -s \			--physicalextentsize -t --test -v --verbose \			--version' -- $cur ) )	else		_args		if [ $args -eq 0 ]; then			_volumegroups		else			_physicalvolumes		fi	fi}complete -F _vgcreate vgcreate_vgremove(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -h --help -t --test \		-v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgremove vgremove_vgrename(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \			-? --help -t --test -v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgrename vgrename_vgreduce(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-a --all -A --autobackup -d \			--debug -h --help --removemissing -t --test -v \			--verbose --version' -- $cur ) )	else		_args		if [ $args -eq 0 ]; then			_volumegroups		else			_physicalvolumes		fi	fi}complete -F _vgreduce vgreduce_vgextend(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(L|-size))			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \			-? --help -t --test -v --verbose --version' -- $cur ) )	else		_args		if [ $args -eq 0 ]; then			_volumegroups		else			_physicalvolumes		fi	fi}complete -F _vgextend vgextend_vgport(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-a --all -d --debug -h \			-? --help -v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgport vgimport vgexport_vgck(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -h \			-? --help -v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgck vgck_vgconvert(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(M|-metadatatype))			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )			return 0			;;		--metadatacopies)			COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )			return 0			;;		--metadatasize)			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -h --help --labelsector \ 			-M --metadatatype --metadatacopies --metadatasize \			-t --test -v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgconvert vgconvert_vgcfgbackup(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(f|-file))			_filedir			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -f --file -h --help \			--ignorelockingfailure -P --partial -v --verbose \			--version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgcfgbackup vgcfgbackup_vgcfgrestore(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(f|-file))			_filedir			return 0			;;		-@(M|-metadatatype))			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )			return 0			;;		-@(n|-name))			_volumegroups			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -f --file -l --list \			-h --help -M --Metadatatype -n --name -t --test \			-v --verbose --version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgcfgrestore vgcfgrestore_vgmerge(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \			-h --help -l --list -t --test -v --verbose \			--version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgmerge vgmerge_vgsplit(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(M|-metadatatype))			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \			-h --help -l --list -M --metadatatype -t --test \			-v --verbose --version' -- $cur ) )	else		_args		if [ $args -eq 0 -o $args -eq 1 ]; then			_volumegroups		else			_physicalvolumes		fi	fi}complete -F _vgsplit vgsplit_vgmknodes(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-d --debug -h --help -v --verbose \			--version' -- $cur ) )	else		_volumegroups	fi}complete -F _vgmknodes vgmknodes_lvscan(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-b --blockdevice -d --debug \			-h -? --help --ignorelockingfailure -P \			--partial -v --verbose --version' -- $cur ) )	fi}complete -F _lvscan lvscan_lvs(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(o|O|-options|-sort))			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 0			;;		--units)			_units			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--aligned -d --debug \			-h --help --ignorelockingfailure --noheadings \			--nosuffix -o --options -O --sort -P --partial \			--segments --separator --unbuffered --units \			-v --verbose --version' -- $cur ) )	else		_logicalvolumes	fi}complete -F _lvs lvs_lvdisplay(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		--units)			_units			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \			-P --partial -m --maps -v --verbose -d --debug -h \			--help --version' -- $cur ) )	else		_logicalvolumes	fi}complete -F _lvdisplay lvdisplay_lvchange(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(a|A|C|M|-available|-autobackup|-continguous|-persistent))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(p|-permission))			COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -a --available \			--addtag --alloc -C --contiguous -d --debug --deltag \			-f --force -h --help --ignorelockingfailure -M \			--persistent --major major --minor minor -P --partial \			-p --permission -r --readahead --refresh -t --test \			-v --verbose --version' -- $cur ) )	else		_logicalvolumes	fi}complete -F _lvchange lvchange_lvcreate(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|C|M|Z|-autobackup|-continguous|-persistent|-zero))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(L|-size))			_sizes			return 0			;;		-@(p|-permission))			COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )			return 0			;;		-@(n|-name))			_logicalvolumes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup --addtag --alloc \			-C --contiguous -d --debug -h -? --help -i --stripes \			-I --stripesize -l --extents -L --size -M --persistent \			--major --minor -n --name -p --permission -r \			--readahead -t --test --type -v --verbose -Z --zero \			--version' -- $cur ) )	else		_args		if [ $args -eq 0 ]; then			_volumegroups		else			_physicalvolumes		fi	fi}complete -F _lvcreate lvcreate_lvremove(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -f \			--force -h -?  --help -t --test -v --verbose \			--version' -- $cur ) )	else		_logicalvolumes	fi}complete -F _lvremove lvremove_lvrename(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \			-? --help -t --test -v --verbose --version' -- $cur ) )	else		_logicalvolumes	fi}complete -F _lvrename lvrename_lvreduce(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(L|-size))			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup -d \			--debug -f --force -h --help -l --extents \			-L --size -n --nofsck -r --resizefs -t --test \			-v --verbose --version' -- $cur ) )	else		_logicalvolumes	fi}complete -F _lvreduce lvreduce_lvresize(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(L|-size))			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \			--debug -h --help -i --stripes -I --stripesize \			-l --extents -L --size -n --nofsck -r --resizefs \			-t --test --type -v --verbose --version' -- $cur ) )	else		_args		if [ $args -eq 0 ]; then			_logicalvolumes		else			_physicalvolumes		fi	fi}complete -F _lvresize lvresize_lvextend(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in		-@(A|-autobackup))			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )			return 0			;;		-@(L|-size))			_sizes			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \			--debug -h --help -i --stripes -I --stripesize \			-l --extents -L --size -n --nofsck -r --resizefs \			-t --test --type -v --verbose --version' -- $cur ) )	else		_args		if [ $args -eq 0 ]; then			_logicalvolumes		else			_physicalvolumes		fi	fi}complete -F _lvextend lvextend_lvm(){	local prev	COMPREPLY=()	cur=`_get_cword`	if [ $COMP_CWORD -eq 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 ${COMP_WORDS[1]} in			pvchange)				_pvchange				;;			pvcreate)				_pvcreate				;;			pvdisplay)				_pvdisplay				;;			pvmove)				_pvmove				;;			pvremove)				_pvremove				;;			pvresize)				_pvresize				;;			pvs)				_pvs				;;			pvscan)				_pvscan				;;			vgcfgbackup)				_vgcfgbackup				;;			vgcfgrestore)				_vgcfgrestore				;;			vgchange)				_vgchange				;;			vgck)				_vgck				;;			vgconvert)				_vgconvert				;;			vgcreate)				_vgcreate				;;			vgdisplay)				_vgdisplay				;;			vgexport)				_vgexport				;;			vgextend)				_vgextend				;;			vgimport)				_vgimport				;;			vgmerge)				_vgmerge				;;			vgmknodes)				_vgmknodes				;;			vgreduce)				_vgreduce				;;			vgremove)				_vgremove				;;			vgrename)				_vgrename				;;			vgs)				_vgs				;;			vgscan)				_vgscan				;;			vgsplit)				_vgsplit				;;			lvchange)				_lvchange				;;			lvcreate)				_lvcreate				;;			lvdisplay)				_lvdisplay				;;			lvextend)				_lvextend				;;			lvreduce)				_lvreduce				;;			lvremove)				_lvremove				;;			lvrename)				_lvrename				;;			lvresize)				_lvresize				;;			lvs)				_lvs				;;			lvscan)				_lvscan				;;		esac	fi}complete -F _lvm lvm}# mkinitrd(8) completion#have mkinitrd &&_mkinitrd(){	local cur args	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# --name value style option	case "$prev" in		--preload)			_modules			return 0			;;	esac	# --name=value style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case "$prev" in			--@(with|builtin))				_modules				return 0				;;			--@(fstab|dsdt))				_filedir				return 0				;;			--tmpdir)				_filedir -d				return 0				;;		esac	fi	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '--version -v -f --preload \			--with= --omit-scsi-modules --omit-raid-modules \			--images-version --fstab= --nocompress --builtin= \			--nopivot --noudev --allow-missing --tmpdir= \			--initrdfs= --dsdt= --lvm-version= --froce-usb' \			-- $cur ) )	else		_count_args		case $args in			1)				_filedir				;;			2)				COMPREPLY=( $( command ls /lib/modules | grep "^$cur" ) )				;;		esac	fi} &&complete -F _mkinitrd mkinitrd# pkgconfig(1) completion#have pkg-config &&_pkg_config(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		# return list of available options		COMPREPLY=( $( compgen -W '-version --modversion \		      --atleast-pkgconfig-version= --libs --libs-only-l \		      --libs-only-other --libs-only-L --cflags \		      --cflags-only-I --cflags-only-other --variable= \		      --define-variable= --exists --uninstalled \		      --atleast-version= --exact-version= --max-version= \		      --list-all --debug --print-errors --silence-errors \		      --errors-to-stdout -? --help --usage' -- $cur))	else		COMPREPLY=( $( pkg-config --list-all 2>/dev/null | \				    awk '{print $1}' | grep "^$cur" ) )	fi} &&complete -F _pkg_config pkg-config# cpio(1) completion#have cpio && {_cpio_format(){	COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- $cur ) )}_cpio(){	local cur	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# --name value style option	case $prev in		-H)			_cpio_format			return 0			;;		-@(E|F|I))			_filedir			return 0			;;		-R)			_usergroup			return 0			;;	esac	# --name=value style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case $prev in			--format)				_cpio_format				return 0				;;			--@(file|pattern-file))				_filedir				return 0				;;			--owner)				_usergroup				return 0				;;			--rsh-command)				COMPREPLY=( $( compgen -c -- $cur ) )				return 0				;;		esac	fi	if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through' -- $cur) ) 	else		case ${COMP_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 -t --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\						--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}# id(1) completion#have id &&_id(){	local cur	COMPREPLY=()	cur=`_get_cword`	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\			-r --real -u --user --help --version' -- $cur ) )	else		COMPREPLY=( $( compgen -u $cur  ) )	fi} &&complete -F _id id# getent(1) completion#have getent &&_getent(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		passwd)			COMPREPLY=( $( compgen -u $cur  ) )			return 0			;;		group)			COMPREPLY=( $( compgen -g $cur  ) )			return 0			;;		services)			COMPREPLY=( $( compgen -s $cur  ) )			return 0			;;		hosts)			COMPREPLY=( $( compgen -A hostname $cur  ) )			return 0			;;		protocols)			COMPREPLY=( $( getent protocols | awk '{print $1}' | grep "^$cur" ) )			return 0			;;		networks)			COMPREPLY=( $( getent networks | awk '{print $1}' | grep "^$cur" ) )			return 0			;;	esac	if [ $COMP_CWORD -eq 1 ]; then		COMPREPLY=( $( compgen -W 'passwd group hosts services protocols networks' -- $cur ) )	fi} &&complete -F _getent getent# ntpdate(1) completion#have ntpdate &&_ntpdate(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		-k)			_filedir			return 0			;;		-U)			COMPREPLY=( $( compgen -u $cur  ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-4 -6 -b -B -d -Q -q -s -u -v -a\			-e -k -p -o -r -t' -- $cur ) )	else		_known_hosts	fi} &&complete -F _ntpdate ntpdate# smartctl(8) completion#have smartctl && {_smartctl_quietmode(){	COMPREPLY=( $( compgen -W 'errorsonly silent' -- $cur ) )}_smartctl_device(){	COMPREPLY=( $( compgen -W 'ata scsi 3ware' -- $cur ) )}_smartctl_tolerance(){	COMPREPLY=( $( compgen -W 'warn exit ignore' -- $cur ) )}_smartctl_badsum(){	COMPREPLY=( $( compgen -W 'normal conservative permissive verypermissive' -- $cur ) )}_smartctl_report(){	COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- $cur ) )}_smartctl_feature(){	COMPREPLY=( $( compgen -W 'on off' -- $cur ) )}_smartctl_log(){	COMPREPLY=( $( compgen -W 'error selftest selective directory' -- $cur ) )}_smartctl_vendorattribute(){	COMPREPLY=( $( compgen -W 'help 9,minutes 9,seconds 9,halfminutes \		9,temp 192,emergencyretractcyclect 193,loadunload \		194,10xCelsius 194,unknown 198,offlinescanuncsectorct \		200,writeerrorcount 201,detectedtacount 220,temp' -- $cur ) )}_smartctl_firmwarebug(){	COMPREPLY=( $( compgen -W 'none samsung samsung2' -- $cur ) )}_smartctl_presets(){	COMPREPLY=( $( compgen -W 'use ignore show showall' -- $cur ) )}_smartctl_test(){	COMPREPLY=( $( compgen -W 'offline short long conveyance select afterselect,on afterselect,off pending' -- $cur ) )}_smartctl(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	# --name value style option	case "$prev" in		-q)			_smartctl_quietmode			;;		-d)			_smartctl_device			return 0			;;		-t)			_smartctl_tolerance			return 0			;;		-b)			_smartctl_badsum			return 0			;;		-r)			_smartctl_report			return 0			;;		-s)			_smartctl_feature			return 0			;;		-o)			_smartctl_feature			return 0			;;		-S)			_smartctl_feature			return 0			;;		-l)			_smartctl_log			return 0			;;		-v)			_smartctl_vendorattribute			return 0			;;		-F)			_smartctl_firmwarebug			return 0			;;		-P)			_smartctl_presets			return 0			;;		-t)			_smartctl_test			return 0			;;	esac	# --name=value style option	if [[ "$cur" == *=* ]]; then		prev=${cur/=*/}		cur=${cur/*=/}		case "$prev" in			--quietmode)				_smartctl_quietmode				return 0				;;			--device)				_smartctl_device				return 0				;;			--tolerance)				_smartctl_tolerance				return 0				;;			--badsum)				_smartctl_badsum				return 0				;;			--report)				_smartctl_report				return 0				;;			--smart)				_smartctl_feature				return 0				;;			--offlineauto)				_smartctl_feature				return 0				;;			--saveauto)				_smartctl_feature				return 0				;;			--log)				_smartctl_log				return 0				;;			--vendorattribute)				_smartctl_vendorattribute				return 0				;;			--firmwarebug)				_smartctl_firmwarebug				return 0				;;			--presets)				_smartctl_presets				return 0				;;			--test)				_smartctl_test				return 0				;;		esac	fi	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-h --help --usage -V --version \			--copyright --license-i --info -a --all -q \			--quietmode= -d --device= -T --tolerance= -b --badsum= \			-r --report= -s --smart= -o --offlineauto= -S \			--saveauto= -H --health -c --capabilities -A \			--attributes -l --log= -v --vendorattribute= -F \			--firmwarebug= -P --presets= -t --test= -C \			--captive -X --abort' -- $cur ) )	else		cur=${cur:=/dev/}		_filedir	fi}complete -F _smartctl smartctl}# vncviewer(1) completion#have vncviewer &&_vncviewer(){	local cur prev	local -a config    	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case "$prev" in	-via)	   _known_hosts -a	   ;;	*)	   # ssh into the the server, find and ping the broadcast address, then	   # sort and show the results.	   COMPREPLY=( $( ssh -o 'Batchmode yes' $prev \			  "ping -bnc 4 255.255.255.255" 2>/dev/null | \			  awk -F ' ' '{print $4}' | \			  sort -n | uniq | egrep '[0-9]+\.[0-9]+\.' 2>/dev/null ) )	esac								   	return 0} &&complete -F _vncviewer vncviewer# sysctl(8) completion#have sysctl &&_sysctl(){	local cur	COMPREPLY=()	cur=`_get_cword`	COMPREPLY=( $( compgen -W "$(sysctl -N -a 2>/dev/null)" -- $cur ) )	return 0} &&complete -F _sysctl sysctl# update-rc.d(8) completion## Copyright (C) 2004 Servilio Afre Puentes <servilio@gmail.com>#have update-rc.d &&_update_rc_d(){    local cur prev sysvdir services options valid_options    cur=`_get_cword`    prev=${COMP_WORDS[COMP_CWORD-1]}    [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \	|| sysvdir=/etc/init.d    services=( $(echo $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm*)) )    services=( ${services[@]#$sysvdir/} )    options=( -f -n )    if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then	valid_options=( $( \	    echo "${COMP_WORDS[@]} ${options[@]}" \	    | tr " " "\n" \	    | sed -ne "/$( echo "${options[@]}" | sed "s/ /\\|/g" )/p" \	    | sort | uniq -u \	    ) )	COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' \	    -X '$( echo ${COMP_WORDS[@]} | tr " " "|" )' -- $cur ) )    elif [[ "$prev" == ?($( echo ${services[@]} | tr " " "|" )) ]]; then	COMPREPLY=( $( compgen -W 'remove defaults start stop' -- $cur ) )    elif [[ "$prev" == defaults && "$cur" == [0-9] ]]; then	COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 )    elif [[ "$prev" == defaults && "$cur" == [sk]?([0-9]) ]]; then	COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 )    elif [[ "$prev" == defaults && -z "$cur" ]]; then	COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 s k )    elif [[ "$prev" == ?(start|stop) ]]; then	if [[ "$cur" == [0-9] || -z "$cur" ]]; then 	    COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 )	elif [[ "$cur" == [0-9][0-9] ]]; then 	    COMPREPLY=( $cur )	else	    COMPREPLY=()	fi    elif [[ "$prev" == ?([0-9][0-9]|[0-6S]) ]]; then	if [[ -z "$cur" ]]; then	    if [[ $prev == [0-9][0-9] ]]; then		COMPREPLY=( 0 1 2 3 4 5 6 S )	    else		COMPREPLY=( 0 1 2 3 4 5 6 S . )	    fi	elif [[ "$cur" == [0-6S.] ]]; then 	    COMPREPLY=( $cur )	else	    COMPREPLY=()	fi    elif [[ "$prev" == "." ]]; then	COMPREPLY=( $(compgen -W "start stop" -- $cur) )    else	COMPREPLY=()    fi    return 0} &&complete -F _update_rc_d update-rc.d# invoke-rc.d(8) completion## Copyright (C) 2004 Servilio Afre Puentes <servilio@gmail.com>#have invoke-rc.d &&_invoke_rc_d(){    local cur prev sysvdir services options valid_options    cur=`_get_cword`    prev=${COMP_WORDS[COMP_CWORD-1]}    [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \	|| sysvdir=/etc/init.d    services=( $(echo $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm*)) )    services=( ${services[@]#$sysvdir/} )    options=( --help --quiet --force --try-anyway --disclose-deny --query --no-fallback )    if [[ ($COMP_CWORD -eq 1) || ("$prev" == --* ) ]]; then	valid_options=( $( \	    echo ${COMP_WORDS[@]} ${options[@]} \	    | tr " " "\n" \	    | sed -ne "/$( echo ${options[@]} | sed "s/ /\\\\|/g" )/p" \	    | sort | uniq -u \	    ) )	COMPREPLY=( $( compgen -W '${valid_options[@]} ${services[@]}' -- \	    $cur ) )    elif [ -x $sysvdir/$prev ]; then	COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \					    s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \					    $sysvdir/$prev`' -- \	    $cur ) )    else	COMPREPLY=()    fi    return 0} &&complete -F _invoke_rc_d invoke-rc.d# minicom(1) completion#have minicom &&_minicom(){	local cur prev	COMPREPLY=()	cur=`_get_cword`	prev=${COMP_WORDS[COMP_CWORD-1]}	case $prev in		-@(a|c))			COMPREPLY=( $( compgen -W 'on off' -- $cur ) )			return 0			;;		-@(S|C))			_filedir			return 0			;;		-P)			COMPREPLY=( $( command ls /dev/tty* ) )			COMPREPLY=( $( compgen -W '${COMPREPLY[@]} ${COMPREPLY[@]#/dev/}' -- $cur ) )			return 0			;;	esac	if [[ "$cur" == -* ]]; then		COMPREPLY=( $( compgen -W '-s -o -m -M -z -l -L -w -a -t \			-c -S -d -p -C -T -8' -- $cur ) )	else		COMPREPLY=( $( command ls /etc/minicom/minirc.* 2>/dev/null | sed -e 's|/etc/minicom/minirc.||' | grep "^$cur" ) )	fi} &&complete -F _minicom minicom# svn completion#have svn &&{_svn(){	local cur prev commands options command	COMPREPLY=()	cur=`_get_cword`	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 [[ $COMP_CWORD -eq 1 ]] ; then		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--version' -- $cur ) )		else			COMPREPLY=( $( compgen -W "$commands" -- $cur ) )		fi	else		prev=${COMP_WORDS[COMP_CWORD-1]}		case $prev in			--config-dir)				_filedir -d				return 0;				;;			-@(F|-file|-targets))				_filedir				return 0;				;;			--encoding)				COMPREPLY=( $( compgen -W \					'$( iconv --list | sed -e "s@//@@;" )' \					-- "$cur" ) )				return 0;				;;			--@(editor|diff|diff3)-cmd)				COMP_WORDS=(COMP_WORDS[0] $cur)				COMP_CWORD=1				_command				return 0;				;;		esac		command=${COMP_WORDS[1]}		if [[ "$cur" == -* ]]; then			# possible options for the command			case $command in				add)					options='--auto-props --no-auto-props \						--force --targets --no-ignore \						--non-recursive -N -q --quiet'					;;				@(blame|annotate|ann|praise))					options='-r --revisions --username \						--password --no-auth-cache \						--non-interactive -v \						--verbose --incremental --xml'					;;				cat)					options='-r --revision --username \						--password --no-auth-cache \						--non-interactive'					;;				@(checkout|co))					options='-r --revision -q --quiet -N \						--non-recursive --username \						--password --no-auth-cache \						--non-interactive \						--ignore-externals'					;;				cleanup)					options='--diff3-cmd'					;;				@(commit|ci))					options='-m --message -F --file \						--encoding --force-log -q \						--quiet --non-recursive -N \						--targets --editor-cmd \						--username --password \						--no-auth-cache \						--non-interactive --no-unlock'					;;				@(copy|cp))					options='-m --message -F --file \						--encoding --force-log -r \						--revision -q --quiet \						--editor-cmd -username \						--password --no-auth-cache \						--non-interactive'					;;				@(delete|del|remove|rm))					options='--force -m --message -F \						--file --encoding --force-log \						-q --quiet --targets \						--editor-cmd -username \						--password --no-auth-cache \						--non-interactive'					;;				@(diff|di))					options='-r --revision -x --extensions \						--diff-cmd --no-diff-deleted \						-N --non-recursive --username \						--password --no-auth-cache \						--non-interactive --force \						--old --new --notice-ancestry'					;;				export)					options='-r --revision -q --quiet \						--username --password \						--no-auth-cache \						--non-interactive -N \						--non-recursive --force \						--native-eol --ignore-externals'					;;				import)					options='--auto-props --no-auto-props \						-m --message -F --file \						--encoding --force-log -q \						--quiet --non-recursive \						--no-ignore --editor-cmd \						--username --password \						--no-auth-cache \						--non-interactive'					;; 				info)					options='--username --password \						--no-auth-cache \						--non-interactive -r \						--revision --xml --targets \						-R --recursive --incremental'					;;				@(list|ls))					options='-r --revision -v --verbose -R \						--recursive --username \						--password --no-auth-cache \						--non-interactive \						--incremental --xml'					;;				lock)					options='-m --message -F --file \						--encoding --force-log \						--targets --force --username \						--password --no-auth-cache \						--non-interactive'					;;				log)					options='-r --revision -v --verbose \						--targets --username \						--password --no-auth-cache \						--non-interactive \						--stop-on-copy --incremental \						--xml -q --quiet --limit'					;;				merge)					options='-r --revision -N \						--non-recursive -q --quiet \						--force --dry-run --diff3-cmd \						--username --password \						--no-auth-cache \						--non-interactive \						--ignore-ancestry'					;;				mkdir)					options='-m --message -F --file \						--encoding --force-log -q \						--quiet --editor-cmd \						--username --password \						--no-auth-cache \						--non-interactive'					;;				@(move|mv|rename|ren))					options='-m --message -F --file \						--encoding --force-log -r \						--revision -q --quiet \						--force --editor-cmd \						--username --password \						--no-auth-cache \						--non-interactive'					;;				@(propdel|pdel|pd))					options='-q --quiet -R --recursive -r \						--revision --revprop \						--username --password \						--no-auth-cache \						--non-interactive'					;;				@(propedit|pedit|pe))					options='-r --revision --revprop \						--encoding --editor-cmd \						--username --password \						--no-auth-cache \						--non-interactive --force'					;;				@(propget|pget|pg))					options='-R --recursive -r --revision \						--revprop --strict --username \						--password --no-auth-cache \						--non-interactive'					;;				@(proplist|plist|pl))					options='-v --verbose -R --recursive \						-r --revision --revprop -q \						--quiet --username --password \						--no-auth-cache \						--non-interactive'					;;				@(propset|pset|ps))					options='-F --file -q --quiet \						--targets -R --recursive \						--revprop --encoding \						--username --password \						--no-auth-cache \						--non-interactive -r \						--revision --force'					;;				resolved)					options='--targets -R --recursive -q \						--quiet'					;;				revert)					options='--targets -R --recursive -q \						--quiet'					;;				@(status|stat|st))					options='-u --show-updates -v \						--verbose -N --non-recursive \						-q --quiet --username \						--password --no-auth-cache \						--non-interactive --no-ignore \						--ignore-externals \						--incremental --xml'					;;				@(switch|sw))					options='--relocate -r --revision -N \						--non-recursive -q --quiet \						--username --password \						--no-auth-cache \						--non-interactive --diff3-cmd'					;;				unlock)					options='--targets --force --username \						--password --no-auth-cache \						--non-interactive'					;;				@(update|up))					options='-r --revision -N \						--non-recursive -q --quiet \						--username --password \						--no-auth-cache \						--non-interactive \						--diff3-cmd --ignore-externals'					;;			esac			options="$options --help -h --config-dir"			COMPREPLY=( $( compgen -W "$options" -- $cur ) )		else			if [[ "$command" == @(help|h|\?) ]]; then				COMPREPLY=( $( compgen -W "$commands" -- $cur ) )			else				_filedir			fi		fi	fi	return 0}complete -F _svn $default svn_svnadmin(){	local cur prev commands options mode	COMPREPLY=()	cur=`_get_cword`	commands='create deltify dump help ? hotcopy list-dblogs \		list-unused-dblogs load lslocks lstxns recover rmlocks \		rmtxns setlog verify'	if [[ $COMP_CWORD -eq 1 ]] ; then		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--version' -- $cur ) )		else			COMPREPLY=( $( compgen -W "$commands" -- $cur ) )		fi	else		prev=${COMP_WORDS[COMP_CWORD-1]}		case $prev in			--config-dir)				_filedir -d				return 0;				;;			--fs-type)				COMPREPLY=( $( compgen -W 'fsfs bdb' -- $cur ) )				return 0;				;;		esac		command=${COMP_WORDS[1]}		if [[ "$cur" == -* ]]; then			# possible options for the command			case $command in				create)					options='--bdb-txn-nosync \						--bdb-log-keep --config-dir \						--fs-type'					;;				deltify)					options='-r --revision -q --quiet'					;;				dump)					options='-r --revision --incremental \						-q --quiet --deltas'					;;				hotcopy)					options='--clean-logs'					;;				load)					options='--ignore-uuid --force-uuid \						--parent-dir -q --quiet \						--use-pre-commit-hook \						--use-post-commit-hook'					;;				rmtxns)					options='-q --quiet'					;;				setlog)					options='-r --revision --bypass-hooks'					;;			esac			options="$options --help -h"			COMPREPLY=( $( compgen -W "$options" -- $cur ) )		else			if [[ "$command" == @(help|h|\?) ]]; then				COMPREPLY=( $( compgen -W "$commands" -- $cur ) )			else				_filedir			fi		fi	fi	return 0}complete -F _svnadmin $default svnadmin_svnlook(){	local cur prev commands options mode	COMPREPLY=()	cur=`_get_cword`	commands='author cat changed date diff dirs-changed help ? h history \		info lock log propget pget pg proplist plist pl tree uuid \		youngest'	if [[ $COMP_CWORD -eq 1 ]] ; then		if [[ "$cur" == -* ]]; then			COMPREPLY=( $( compgen -W '--version' -- $cur ) )		else			COMPREPLY=( $( compgen -W "$commands" -- $cur ) )		fi	else		command=${COMP_WORDS[1]}		if [[ "$cur" == -* ]]; then			# possible options for the command			case $command in				@(author|cat|date|dirs-changed|info|log))					options='-r --revision -t \						--transaction'					;;				changed)					options='-r --revision -t \						--transaction --copy-info'					;;				diff)					options='-r --revision -t \						--transaction \						--no-diff-deleted \						--no-diff-added \						--diff-copy-from'					;;				history)					options='-r --revision --show-ids'					;;				prop@(get|list))					options='-r --revision -t \						--transaction --revprop'					;;				tree)					options='-r --revision -t \						--transaction --show-ids \						--full-paths'					;;			esac			options="$options --help -h"			COMPREPLY=( $( compgen -W "$options" -- $cur ) )		else			if [[ "$command" == @(help|h|\?) ]]; then				COMPREPLY=( $( compgen -W "$commands" -- $cur ) )			else				_filedir			fi		fi	fi	return 0}complete -F _svnlook $default svnlook}_filedir_xspec(){	local IFS cur xspec	IFS=$'\t\n'	COMPREPLY=()	cur=`_get_cword`	_expand || return 0	# get first exclusion compspec that matches this command	xspec=$( sed -ne $'/^complete .*[ \t]'${1##*/}$'\([ \t]\|$\)/{p;q;}' \		  $BASH_COMPLETION )	# prune to leave nothing but the -X spec	xspec=${xspec#*-X }	xspec=${xspec%% *}	local toks=( ) tmp	while read -r tmp; do		[[ -n $tmp ]] && toks[${#toks[@]}]=$tmp	done < <( compgen -d -- "$(quote_readline "$cur")" )	while read -r tmp; do		[[ -n $tmp ]] && toks[${#toks[@]}]=$tmp	done < <( eval compgen -f -X $xspec -- "\$(quote_readline "\$cur")" )	COMPREPLY=( "${toks[@]}" )}list=( $( sed -ne '/^# START exclude/,/^# FINISH exclude/p' \	  $BASH_COMPLETION | \	# read exclusion compspecs	(	while read line	do		# ignore compspecs that are commented out		if [ "${line#\#}" != "$line" ]; then continue; fi		line=${line%# START exclude*}		line=${line%# FINISH exclude*}		line=${line##*\'}		list=( "${list[@]}" $line )	done	echo "${list[@]}"	)     ) )# remove previous compspecsif [ ${#list[@]} -gt 0 ]; then    eval complete -r ${list[@]}    # install new compspecs    eval complete -F _filedir_xspec $filenames "${list[@]}"fiunset list# source completion directory definitionsif [ -d $BASH_COMPLETION_DIR -a -r $BASH_COMPLETION_DIR -a \     -x $BASH_COMPLETION_DIR ]; then	for i in $BASH_COMPLETION_DIR/*; do		[[ ${i##*/} != @(*~|*.bak|*.swp|\#*\#|*.dpkg*|.rpm*) ]] &&			[ \( -f $i -o -h $i \) -a -r $i ] && . $i	donefiunset i# source user completion file[ $BASH_COMPLETION != ~/.bash_completion -a -r ~/.bash_completion ] \	&& . ~/.bash_completionunset -f haveunset UNAME RELEASE default dirnames filenames have nospace bashdefault \      plusdirsset $BASH_COMPLETION_ORIGINAL_V_VALUEunset BASH_COMPLETION_ORIGINAL_V_VALUE###  Local Variables:###  mode: shell-script###  End: