Führen Sie ein Shell-Skript aus, wenn Sie mit CD zum Verzeichnis navigieren

Führen Sie ein Shell-Skript aus, wenn Sie mit CD zum Verzeichnis navigieren

Ist es möglich, das Skript so einzustellen, dass es in einem bestimmten Verzeichnis ausgeführt wird, wenn Sie cdes aufrufen?

Wenn es sich beispielsweise /fooum ein Verzeichnis mit giteinem Projekt handelt, ist es möglich, dass es cd /fooautomatisch ausgeführt wird git statusoder bestimmte npmSkripte?

Bitte verlinken Sie die Antwort nicht ausschließlich mit git, es könnte sich auch um jeden anderen Befehl/jedes andere Skript handeln.

Antwort1

Sie können es cddurch eine Funktion ersetzen, die jede gewünschte Verarbeitung hinzufügt:

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

Antwort2

Ich verwende etwas Ähnliches wie die Antwort von Stephen Kitt in meinem .bashrc:

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

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

Sie können je nach Bedarf zusätzliche Bedingungen erstellen, um unterschiedliche Dinge zu handhaben.

HINWEIS: Da wir den Verweis auf den Befehl überschreiben cd, müssen Sie command cd, builtin cd, oder verwenden \cd, um zu verhindern, dass die Funktion sich selbst aufruft und endlos rekursiert. Aus diesem Grund könnte es für manche sinnvoll sein, diese Funktion umzubenennen.

Antwort3

Sie können dies unter anderem über den folgenden aliasBefehl tun:

alias cdgit="cd /foo; git status"

Dann führen Sie aus cdgitund gehen zum Verzeichnis /foound führen ausgit status

verwandte Informationen