Erstellen Sie mehrere Shell-Aliase gleichzeitig

8

Ich möchte in Alias ​​verschiedene mögliche Varianten der Rechtschreibung einfügen, zum Beispiel catBefehl. Kann ich ein Symbol für 'oder' verwenden oder sollte es in einer neuen Zeile stehen?

alias at|cart|cst '/bin/cat'
Josef Klimuk
quelle
7
Erinnert mich an einen Alias, den ich habe:alias kk='ll'
pLumo
14
Ich würde nicht empfehlen, atals Alias ​​für zu verwenden cat. Es gibt einen tatsächlichen Befehl atzum Planen von Sachen: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Antworten:

17

Die Hilfe für aliasgibt an, dass mehrere Aliase gleichzeitig zugewiesen werden können:

alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

Sie können also die Klammererweiterung verwenden, um die name=valuePaare zu generieren :

alias {at,cart,cst}='/bin/cat'

Damit:

$ alias {at,cart,cst}='/bin/cat'
$ type at cart cst
at is aliased to `/bin/cat'
cart is aliased to `/bin/cat'
cst is aliased to `/bin/cat'

Schauen Sie sich zsh an, das über eine integrierte Tippfehlerkorrektur verfügt (was nicht helfen würde at, aber für die anderen helfen würde):

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd

Wenn Sie drücken, ywenn die Shell Sie fragt, ob Sie ein Wort korrigieren möchten, wird es korrigiert. Wenn Sie drücken n, wird es in Ruhe gelassen. Durch Drücken von wird ader Befehl abgebrochen, und durch Drücken wird edie Zeile erneut bearbeitet, falls Sie zustimmen, dass das Wort falsch geschrieben ist, die Korrektur jedoch nicht gefällt.

muru
quelle
7

Ich glaube nicht, dass Sie mehrere Aliase gleichzeitig zuweisen können.
Sie können jedoch eine Liste wie diese durchlaufen:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

Stellen Sie sicher, dass die Aliase nicht bereits von anderen Programmen verwendet werden (wie atin Ihrem Beispiel).

pLumo
quelle
Danke für die Antwort, es funktioniert gut. Ich habe eine meiner Linux-Maschinen mit tsch als Standard. Ich habe Folgendes versucht: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk
2
@JosefKlimuk: Klingt so, als wäre es eine eigene Antwort wert. :-)
David Foerster
@ David Foerster, sollte ich es als unabhängige Frage stellen?
Josef Klimuk
2
@JosefKlimuk: Nein. Ich meine, Sie sollten eine richtige Antwort auf diese Frage basierend auf Ihrem vorherigen Kommentar schreiben .
David Foerster