如何让我的 csh 别名在 bash 中工作?

如何让我的 csh 别名在 bash 中工作?

这个别名在以下情况下工作正常,/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

相关内容