一个别名会影响另一个别名吗?


14

我的.bash_aliases文件尚未设置太多别名。直到最近,我才发现它们可能有用。

我可以看到自己对别名非常着迷,所以在文件变得笨拙之前,我想通过问一个非常简单的问题来澄清一些问题。一个别名会影响另一个别名,还是该别名总是恢复为原始命令?

一个例子可以使这一点更加清楚:

我已ls别名为ls -lF。比方说,我想也别名dls -l | grep -E "^d":确实d现在使用ls -lF的地方ls?如果是这样,这是否是.bash_aliases配置文件中的顺序问题?

man alias 没有启发我。

Answers:


20

别名(Bash手册的6.6节)

检查每个简单命令的第一个单词(如果未引用),以查看其是否具有别名。如果是这样,则将该单词替换为别名的文本。

使用别名而不是定义别名时会发生这种情况。这是一个例子:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found

1
好的,非常感谢您的示例(以及Bash手册的链接)。我从《手册》中引用:“关于别名的定义和使用的规则有些令人困惑……对于几乎所有目的,shell函数都比别名更受青睐。” 我想我最好再学习如何做shell函数。:)
boehj 2011年

1
是。别名可以为您节省一些常用命令的键入内容,但是对于那些即使是非常复杂的事情,编写自定义函数来处理它通常也是一个更好的选择。
Caleb

@Caleb @Gilles-谢谢大家。顺便说一句,ls ='ls --color'我可以看到它非常方便。喜欢这个网站。:)
boehj 2011年

2
@boehj:一个经验法则是,当您想为命令添加自动参数时,使用别名(使用命令名称或较小的变体形式),否则可以使用别名。因此alias ls='ls --color',,alias cp='cp -i'但可用于更复杂的内容。特别是,我会让您d成为一个函数,以便您可以将参数传递给ls[发表评论以修正令人困惑的头脑,谢谢@cjm]
吉尔斯'SO-别再作恶了

@Gilles-好的,我今天的任务是教自己如何将其复制d为Shell函数。
boehj 2011年
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.