Utwórz wiele aliasów powłoki jednocześnie

8

Chcę wstawić do aliasu różne możliwe warianty pisowni, na przykład catpolecenie. Czy mogę to zrobić, używając jakiegoś symbolu „lub”, czy też powinien być w nowej linii?

alias at|cart|cst '/bin/cat'
Josef Klimuk
źródło
7
Przypomina mi jeden alias, który mam:alias kk='ll'
pLumo
14
Nie polecam używania atjako aliasu dla cat. Istnieje rzeczywiste polecenie atdotyczące planowania rzeczy: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Odpowiedzi:

17

Pomoc dla aliaswskazuje, że może przypisać wiele aliasów jednocześnie:

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.

Możesz więc użyć rozszerzenia nawiasu klamrowego do wygenerowania name=valuepar:

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

Więc:

$ 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'

To powiedziawszy, spójrz na zsh, który ma wbudowaną korektę literówek (która nie pomogłaby at, ale pomogłaby innym):

% 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

Jeśli naciśniesz, ygdy powłoka zapyta, czy chcesz poprawić słowo, zostanie ono poprawione. Jeśli naciśniesz n, pozostanie w spokoju. Naciśnięcie aprzerywa polecenie, a naciśnięcie epowoduje ponowne wprowadzenie wiersza do edycji, na wypadek, gdyby zgadzasz się, że słowo jest źle napisane, ale nie podoba ci się poprawka.

muru
źródło
7

Nie sądzę, że możesz przypisać wiele aliasów jednocześnie.
Ale możesz przejrzeć taką listę:

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

Upewnij się, że aliasy nie są już używane przez inne programy (jak atw twoim przykładzie).

pLumo
źródło
Dzięki za odpowiedź, działa dobrze. Mam jedną z moich maszyn linuxowych z domyślnie tsch. Próbowałem tego: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk
2
@JosefKlimuk: Brzmi jakby to było warte własnej odpowiedzi. :-)
David Foerster
@David Foerster, powinienem zadać to jako niezależne pytanie?
Josef Klimuk
2
@JosefKlimuk: Nie. Mam na myśli, że powinieneś napisać właściwą odpowiedź na to pytanie w oparciu o twój poprzedni komentarz.
David Foerster