这个别名在以下情况下工作正常,/bin/csh
但在以下情况下不行/bin/bash
:
alias cd='chdir !* && setprompt; clear; ls -F'
基本上,我想要cd
任何目录和ls
颜色。
答案1
我不太确定它setprompt
的作用,但别名 inbash
不能像您的csh
别名那样接受参数(使用!*
)。 shell中的别名bash
比 in 中的别名简单得多csh
,并且仅提供相当于命令行的基本文本替换工具的东西。
相反,您可以编写一个简短的 shell 函数来重载该cd
实用程序:
cd () {
command cd "$1" && clear && ls -F
}
或者,在一行中,
cd () { command cd "$1" && clear && ls -F; }
这个 shell 函数声明将出现在您在中声明别名的任何地方bash
(可能在 中~/.bashrc
)。
它需要一个参数,该参数在函数中可用作为"$1"
。它command cd
以此作为参数进行调用。我们使用command cd
而不只是cd
为了避免递归调用你的 shell 函数。
该cd
命令更改目录,如果成功,clear
则会调用该命令并使用 生成目录列表ls -F
。