一次创建多个外壳别名


Answers:


17

的帮助alias表明它可以一次分配多个别名:

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.

因此,您可以使用括号扩展来生成name=value对:

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

所以:

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

也就是说,请看zsh,它具有内置的拼写校正功能(对无效at,但对其他功能有所帮助):

% 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

如果y在外壳询问您是否要更正单词时按,它将被更正。如果按n,则将其保留。按a中止命令,并按下e带来阵容再次编辑,如果你同意这个词拼写错了,但你不喜欢的修正。


7

我认为您不能一次分配多个别名。
但是您可以遍历如下列表:

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

确保别名尚未被其他程序使用(例如 at您的示例)。


感谢您的回答,它运作良好。我有一台默认使用tsch的linux机器。我试过了:foreach x(cst cart);别名$ x ='/ bin / cat';结束。
约瑟夫·克利穆克

2
@JosefKlimuk:听起来值得自己回答。:-)
David Foerster

@David Foerster,我是否应该将其作为独立的问题提出?
约瑟夫·克利穆克

2
@JosefKlimuk:否。我的意思是您应该根据之前的评论为该问题写一个正确的答案。
David Foerster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.