linux-l: complete in bash

Soeren Sonnenburg sonnenburg at informatik.hu-berlin.de
Di Jan 15 08:14:17 CET 2002


On Mon, Jan 14, 2002 at 11:57:02PM +0100, Ralph Angenendt wrote:
> On Mon, Jan 14, 2002 at 09:11:55PM +0100, Soeren Sonnenburg wrote:
> > hi!
> > 
> > weiss jemand, ob man complete regeln bauen kann fuer folgendes beispiel
> > (in bash):
> > 
> > gzip <tab>  komplettiert saemtliche files ausser *.gz files
> > gzip -d <tab> komplettiert nur *.gz files
> 
> <http://www.caliban.org/bash/index.shtml#completion>
> 
> gzip -d funktioniert leider nicht, dafür aber gunzip <TAB> <TAB>,
> welches dir nur .gz und Directories anzeigt.
> 
> > Ansonsten suche ich noch eine moeglichst grosse complete liste, so mit
> > apt, dpkg und allem schnickschnack :-)
> 
> Ist ganz netter Kram drin: ssh-completion anhand der .ssh/known_hosts,
> mpg123 zeigt nur .mp3s an, unalias nur aliase, ee und xv nur Bilder
> und und und.

Cool. Ist das doch glatt seit dem 9. in debian unstable :-)

Ich hab das anhand der tollen Beispiele dann auch fuer gzip gebastelt.

Hier mein Vorschlag:

_gzip_func()
{
    cur=${COMP_WORDS[COMP_CWORD]}
    prev=${COMP_WORDS[COMP_CWORD-1]}

	case "$cur" in
		-*d)    COMPREPLY=( $(compgen -f -X '!*.+(gz|tgz)' $cur ) ); return 0;
	esac

	case "$prev" in
		-*d)    COMPREPLY=( $(compgen -f -X '!*.+(gz|tgz)' $cur ) ); return 0;
	esac
	
	COMPREPLY=( $(compgen -f -X '*.+(gz|tgz)' $cur ) );
}

complete -F _gzip_func gzip

S.



Mehr Informationen über die Mailingliste linux-l