如果我想每次执行 cd 到任何目录时都执行 ls 命令,该怎么办?

如果我想每次执行 cd 到任何目录时都执行 ls 命令,该怎么办?

大多数情况下,当我执行cd命令时,我还会执行命令ls以查看该目录中还有哪些其他文件或文件夹。因此,ls每次更改目录时我都想执行该命令。我知道我可以这样做cd foo && ls,但真的有必要每次都这样做&& ls吗?

答案1

有两种方法可以做到这一点。您可以像 LnxSlck 发布的那样创建一个别名,或者另一种方法是在 .bash_aliases 中创建一个函数

mycd(){ cd "$1" && ls; }

答案2

我使用以下命令,不涉及添加任何新命令:

cd() {
  builtin cd "$@"
  local status=$?
  [ $status -eq 0 ] && ls
  return $status
}

这使得cd工作与以前相同,只是还有一个ls

请注意以下含义:其他示例不允许 参数cd。虽然这些参数并不常见,但这是一个 100% 兼容的嵌入式替代品。而且由于它返回 的cd退出状态,因此不会破坏脚本。

这里有一个警告。如果你曾经想要此功能,您必须调用builtin cd。但我使用此功能多年的经验是,这种情况很少见,主要发生在脚本中,而且不必在每次想要更改目录时输入长段文字的便利性远远超过了偶尔mycd输入一次的小缺点。builtin cd

答案3

您可以创建一个aliasfor cd,并将其添加到您的 *bash_profile* 或者.bashrc, 就像是:

alias 'mycd'='cd $1 && ls'

将其放入您的 中.bashrc。但是,建议您将所有别名存储在~/bash_aliases文件中,因此,touch ~/.bash_aliases如果该文件尚不存在,请使用创建该文件,并使用它来存储所有别名。

相关内容