Crea múltiples alias de shell a la vez

8

Quiero insertar en alias diferentes variantes posibles de ortografía, por ejemplo, catcomando. ¿Puedo hacerlo usando algún símbolo para 'o' o debería estar en una nueva línea?

alias at|cart|cst '/bin/cat'
Josef Klimuk
fuente
77
Me recuerda un alias que tengo:alias kk='ll'
pLumo
14
No recomendaría usar atcomo un alias para cat. Hay un comando real atpara programar cosas: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Respuestas:

17

La ayuda para aliasindica que puede asignar varios alias a la vez:

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.

Por lo tanto, puede usar la expansión de llaves para generar los name=valuepares:

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

Entonces:

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

Dicho esto, busque en zsh, que tiene corrección de errores tipográfica incorporada (que no ayudaría at, pero ayudaría a los demás):

% 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 presiona ycuando el shell le pregunta si desea corregir una palabra, se corregirá. Si presiona n, se quedará solo. Al presionar se acancela el comando, y al presionar se evuelve a alinear para editar, en caso de que esté de acuerdo con que la palabra está mal escrita pero no le gusta la corrección.

muru
fuente
7

No creo que pueda asignar varios alias a la vez.
Pero podría recorrer una lista como esta:

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

Asegúrese de que los alias no estén siendo utilizados por otros programas (como aten su ejemplo).

pLumo
fuente
Gracias por la respuesta, funciona bien. Tengo una de mis máquinas Linux con tsch como predeterminada. Intenté esto: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk
2
@JosefKlimuk: Parece que valdría la pena su propia respuesta. :-)
David Foerster
@David Foerster, ¿debería hacerlo como una pregunta independiente?
Josef Klimuk
2
@JosefKlimuk: No. Quiero decir que debes escribir una respuesta adecuada a esta pregunta en función de tu comentario anterior.
David Foerster