别名解释

别名解释

我在 中有几个别名.bash_aliases。我c按如下方式定义了别名,但它不能正常工作:

...
alias cd='cd; ls -r --time=atime'
alias c='cd'
...

里面.bashrc有一行:

alias ls='clear; ls --color=auto'

Commandnandc现在输出错误。它应该给出与 相同的输出 cd; clear; ls -r --time=atime --color=auto

其他问题:当我打字时,cd dir我应该留在里面,但结果dir我却在里面。$HOME

我该如何解决这个问题并改进别名的定义?被.bash_aliases解释为regular grammar

答案1

使用函数代替,优点是可以传递参数和更清晰的语法。

function cd() {
  command cd "$@"
  ls -r --time=atime
}

function c() {
 cd "$@"
}

function ls() {
  clear
  command ls --color=auto "$@"
}

command是一个bash内置命令,用于引用真正的命令,而不是同名的函数)。

答案2

c应该完全等同于cd.我希望您会看到cd dir与 from相同的错误c dir,并且c仅此而已。

cd不会按照您定义的方式工作,因为别名执行简单的文本替换。cd dir被扩展为cd; ls -r --time=atime dir.别名几乎仅限于为命令提供较短的名称或提供默认选项,例如alias c=cdalias cp='cp -i'。对于更复杂的事情,例如运行多个命令,请使用函数。

cd () {
  command cd "$@" &&
  ls -r --time=atime
}

也可以看看别名、函数、脚本,如何将参数传递给别名?

相关内容