Créez plusieurs alias de shell à la fois

8

Je veux insérer dans l'alias différentes variantes possibles de l'orthographe, par exemple, la catcommande. Puis-je le faire en utilisant un symbole pour «ou» ou devrait-il être sur une nouvelle ligne?

alias at|cart|cst '/bin/cat'
Josef Klimuk
la source
7
Me rappelle un alias que j'ai:alias kk='ll'
pLumo
14
Je ne recommanderais pas d'utiliser atcomme alias pour cat. Il existe une commande réelle atpour planifier des choses: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Réponses:

17

L'aide de aliasindique qu'il peut attribuer plusieurs alias à la fois:

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.

Vous pouvez donc utiliser l'expansion d'accolade pour générer les name=valuepaires:

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

Donc:

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

Cela dit, regardez dans zsh, qui a une correction de faute de frappe intégrée (ce qui n'aiderait pas at, mais cela aiderait les autres):

% 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

Si vous appuyez sur ylorsque le shell vous demande si vous souhaitez corriger un mot, il sera corrigé. Si vous appuyez sur n, il sera laissé seul. Appuyez sur pour aannuler la commande et appuyez sur pour erétablir la ligne de modification, au cas où vous conviendriez que le mot est mal orthographié mais que vous n'aimez pas la correction.

muru
la source
7

Je ne pense pas que vous puissiez attribuer plusieurs alias à la fois.
Mais vous pouvez parcourir une liste comme celle-ci:

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

Assurez-vous que les alias ne sont pas déjà utilisés par d'autres programmes (comme atdans votre exemple).

pLumo
la source
Merci pour la réponse, cela fonctionne bien. J'ai une de mes machines Linux avec tsch par défaut. J'ai essayé ceci: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk
2
@JosefKlimuk: On dirait que cela vaudrait sa propre réponse. :-)
David Foerster
@David Foerster, devrais-je le poser comme question indépendante?
Josef Klimuk
2
@JosefKlimuk: Non. Je veux dire que vous devriez écrire une bonne réponse à cette question sur la base de votre commentaire précédent.
David Foerster