在 tcsh 中的每个 cd 命令后自动执行 ls 命令

Automate ls command after every cd command in tcsh

我通过 cd (dir_path) 更改目录。当我给这个的时候,它也想显示目录中的内容。假设我们在进入该目录后键入 ls。基本上这两个命令应该一起执行 cd (dir_path)ls 在该路径中只有通过给出 cd (dir_path) 命令。

如何在 tcsh 中做到这一点?

有一种方法可以使用 && 运算符一个接一个地执行命令

cd `directory` && ls

根据 uzsolt 的评论,此答案不适用于 tcsh。最初的问题没有提到这个要求。在 OP 在评论中提到 tcsh 后,该问题稍后被编辑。

有关适用于 tcsh 的解决方案,请参阅 。这个答案应该被点赞。

bashzsh中你可以定义一个名为cd

的函数
cd ()
{
  command cd "$@" && ls
}

然后 运行 cd somedir 您将调用函数 cd 而不是命令。如果你想调用普通的cd命令,使用

command cd [somedir]

或者您稍后可以使用

删除该函数
unset cd

或者定义一个不同名称的函数并使用别名

cdls ()
{
  command cd "$@" && ls
}

alias cd=cdls

然后您可以使用 cdls [somedir]cd [somedir]

您可以再次致电

command cd [somedir]

获取正常的 cd 命令。

您也可以删除别名以获得正常行为。

unalias cd

我认为最简单的方法是使用cwdcmd:

alias cwdcmd ls

可以写成~/.tcshrc.

参见man tcsh

Special aliases

....

cwdcmd

Runs after every change of working directory.

alias cd 'cd \!* && ls && pwd'