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

boe*_*ehj 15 bash alias

我的 .bash_aliases 文件中还没有设置很多别名。直到最近我才发现它们是多么有用。

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

一个例子可以更清楚地说明这一点:

我已ls别名为ls -lF. 假设我还想别名dls -l | grep -E "^d":d现在使用ls -lF代替ls? 如果是这样,它是 .bash_aliases 配置文件中的顺序问题吗?

man alias 没有启发我。

cjm*_*cjm 21

来自别名(Bash 手册的第 6.6 节)

每个简单命令的第一个单词,如果没有被引用,则检查它是否有别名。如果是,则该词将替换为别名的文本。

当您使用别名时会发生这种情况,而不是在您定义它时。下面是一个例子:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found
Run Code Online (Sandbox Code Playgroud)

  • @boehj:一个经验法则是,当您想要为命令提供自动参数时,使用别名,使用命令的名称或较小的变体,否则使用别名。所以`alias ls='ls --color'`,`alias cp='cp -i'`,但功能更复杂。特别是,我会让你的 `d` 成为一个函数,这样你就可以将参数传递给 `ls`。*[转发评论以修复令人困惑的脑子,谢谢@cjm]* (2认同)