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

0

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

Por exemplo, se /foo for um diretório com git project, é possível, quando cd /foo executar automaticamente git status ou alguns npm scripts?

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

    
por OlehZiniak 24.05.2017 / 11:40

3 respostas

1

Uma das maneiras de fazer isso é por meio do comando alias :

alias cdgit="cd /foo; git status"

Em seguida, você executa cdgit e acessa o diretório /foo e exec git status

    
por 24.05.2017 / 11:48
3

Eu uso algo semelhante à resposta de Stephen Kitt no 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 vencendo a referência ao comando cd , você precisa usar command cd , builtin cd ou \cd para impedir que a função chame a si mesma e recaia para sempre. Por esse motivo, alguns podem achar útil renomear esta função.

    
por 24.05.2017 / 17:18
2

Você pode substituir cd por uma função que adicione qualquer processamento desejado:

cd() {
    builtin cd "$@"
    # Do whatever you want here
}
    
por 24.05.2017 / 11:43