使用 cd 导航到目录时运行 shell 脚本

使用 cd 导航到目录时运行 shell 脚本

当您进入某个目录时,是否可以将脚本设置为在特定目录中运行cd

例如,如果/foo是包含项目的目录git,是否可以cd /foo自动运行git status或某些npm脚本?

请不要将答案严格链接到git,想象这可能是任何其他命令/脚本。

答案1

您可以替换cd为添加您想要的任何处理的函数:

cd() {
    builtin cd "$@"
    # Do whatever you want here
}

答案2

我在我的.bashrc

function cd() {
  command cd "$@" || return

  if [[ -d .git ]]
  then
    git status --short
  else
    ls -al
  fi
}

您可以根据需要创建额外的条件来处理不同的事情。

注意:由于我们正在破坏对命令的引用cd,因此您必须使用command cdbuiltin cd\cd来防止函数调用自身并永远递归。因此,有些人可能会发现重命名此函数很有用。

答案3

执行此操作的方法之一是通过alias命令:

alias cdgit="cd /foo; git status"

然后你执行cdgit并进入目录/foo并执行git status

相关内容