使用 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

相關內容