On Tuesday 17 June 2003 21:21, Oliver Fromme wrote:
> Manfred Lotz <manfred.lotz(at)web.de> wrote:
> > Ich habe nun versucht einen Alias zu definieren, der einen Parameter
> > nimmt: alias lsd='ls -ld $1(/)'
> >
> > Das scheint nicht zu gehen.
>
> Tut's auch nicht. Aliase sind ganz simple Geschöpfe.
>
> > Dann habe ich es als function definiert:
>
> Bessere Idee, das.
>
> > lsd() { ls -ld $1(/) }
> >
> > Das Problem ist hier, dass bei z.B. lsd d* die Wildcard schon zu früh
> > aufgelöst wird.
> >
> > Wie kann ich das lösen?
>
> Mit 'nem Alias. In Kombination mit einer Funktion. :-)
>
> Außerdem muß man mit dem GLOB_SUBST-Flag spielen. Das ist
> jetzt schon zsh-Magie für Fortgeschrittene, aber so geht's:
>
> $ lsd_func() { ls -ld ${~@}(/); }
> $ alias lsd="noglob lsd_func"
> $ lsd t* b*
> drwxr-xr-x 2 olli olli 2560 Apr 28 01:47 bin
> drwxr-xr-x 3 olli olli 512 Mar 25 2002 tex
> drwxr-xr-x 5 olli olli 512 May 29 00:40 tmp
> drwxr-xr-x 6 olli olli 512 May 30 21:21 txt
> $
>
Funktioniert.. Mir ist inzwischen klar, dass, falls die zsh Grenzen hat, sich
diese höchsten im Kopf vor dem Bildschirm befinden.
Die Kombination von alias und function verstehe ich sofort vom hingucken. Ich
wäre nur vermutlich nie darauf gekommen.
Bei ${~@} wäre ich wohl nicht auf die Tilde verfallen, die man-page hat mir's
jedoch erklärt.
Eine kleine Unschärfe habe ich aber gerade noch entdeckt. Gibt es in deinem
Beispiel auch eine Datei bimbo, so wird bei lsd b* t* diese auch angezeigt;
bei lsd t* b* funktioniert es. (/) müsste irgendwie jedem Parameter
verabreicht werden.
Ich bin dennoch begeistert, weil ich sicher bin, dass das auch gelöst werden
kann.
Danke,
Manfred
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 17 Jun 2003 - 22:10:15 CEST