Crea più alias di shell contemporaneamente


8

Voglio inserire in alias diverse possibili varianti dell'ortografia, ad esempio catcomando. Posso farlo usando un simbolo per 'o' o dovrebbe essere su una nuova riga?

alias at|cart|cst '/bin/cat'

7
Mi ricorda un alias che ho:alias kk='ll'
pLumo

14
Non consiglierei l'uso atcome alias per cat. C'è un vero comando atper programmare cose: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Risposte:


17

La guida per aliasindica che può assegnare più alias contemporaneamente:

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.

Quindi puoi usare l'espansione del controvento per generare le name=valuecoppie:

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

Così:

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

Detto questo, guarda zsh, che ha una correzione di errore di battitura incorporata (che non aiuterebbe at, ma aiuterebbe gli altri):

% 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

Se premi yquando la shell ti chiede se vuoi correggere una parola, verrà corretta. Se si preme n, sarà lasciato solo. Premendo si ainterrompe il comando e premendo si eriattiva la riga per la modifica, nel caso in cui si accetti che la parola sia scritta in modo errato ma non ti piace la correzione.


7

Non penso che tu possa assegnare più alias contemporaneamente.
Ma potresti scorrere un elenco come questo:

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

Assicurati che gli alias non siano già in uso da altri programmi (come atnel tuo esempio).


Grazie per la risposta funziona bene. Ho una delle mie macchine Linux con tsch come impostazione predefinita. Ho provato questo: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk,

2
@JosefKlimuk: Sembra che varrebbe la sua risposta. :-)
David Foerster,

@David Foerster, dovrei fare una domanda indipendente?
Josef Klimuk,

2
@JosefKlimuk: No. Voglio dire che dovresti scrivere una risposta adeguata a questa domanda in base al tuo commento precedente.
David Foerster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.