Execute o script shell ao navegar para o diretório com cd

Execute o script shell ao navegar para o diretório com cd

Está disponível para definir o script para ser executado em um diretório específico, quando você cdestiver nele?

Por exemplo, se /foofor um diretório com gitprojeto, é possível cd /fooexecutar automaticamente git statusou alguns npmscripts?

Por favor, não vincule a resposta estritamente a git, imagine que poderia ser qualquer outro comando/script.

Responder1

Você pode substituir cdpor uma função que adiciona qualquer processamento desejado:

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

Responder2

Eu uso algo semelhante à resposta de Stephen Kitt em meu .bashrc:

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

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

Você pode criar condições adicionais para lidar com coisas diferentes conforme necessário.

NOTA: como estamos destruindo a referência ao cdcomando, você deve usar command cd, builtin cd, ou \cdpara evitar que a função se chame e se repita para sempre. Por esta razão, alguns podem achar útil renomear esta função.

Responder3

Uma das maneiras de fazer isso é através aliasdo comando:

alias cdgit="cd /foo; git status"

Então você executa cdgite vai para o diretório /fooe execgit status

informação relacionada