Crie vários aliases de shell de uma só vez

8

Quero inserir no alias diferentes variantes possíveis de ortografia, por exemplo, catcomando. Posso fazer isso usando algum símbolo para 'ou' ou deve estar em uma nova linha?

alias at|cart|cst '/bin/cat'
Josef Klimuk
fonte
7
Lembra-me de um apelido que tenho:alias kk='ll'
pLumo
14
Eu não recomendaria usar atcomo um alias para cat. Existe um comando real atpara agendar coisas: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Respostas:

17

A ajuda para aliasindica que ele pode atribuir vários aliases de uma 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.

Então você pode usar a expansão de chaves para gerar os name=valuepares:

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

Assim:

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

Dito isso, consulte o zsh, que possui correção de erros de digitação integrada (o que não ajudaria at, mas ajudaria os outros):

% 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 você pressionar yquando o shell perguntar se você deseja corrigir uma palavra, ela será corrigida. Se você pressionar n, ele será deixado sozinho. Pressionar aaborta o comando e pressionar etraz a linha para edição novamente, caso você concorde que a palavra está escrita incorretamente, mas não goste da correção.

muru
fonte
7

Não acho que você possa atribuir vários aliases ao mesmo tempo.
Mas você pode percorrer uma lista como esta:

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

Verifique se os aliases ainda não estão sendo usados ​​por outros programas (como atno seu exemplo).

pLumo
fonte
Obrigado pela resposta que funciona bem. Eu tenho uma das minhas máquinas Linux com tsch como padrão. Eu tentei o seguinte: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk
2
@ JosefKlimuk: Parece que valeria sua própria resposta. :-)
David Foerster
@ David Foerster, devo fazer isso como uma pergunta independente?
Josef Klimuk
2
@ JosefKlimuk: Não. Quero dizer que você deve escrever uma resposta adequada para essa pergunta com base no seu comentário anterior.
David Foerster