Posso ligar-me ao comando cd?

8

Estou tentando configurar algo em um servidor que eu executo, sempre que eu cd em uma pasta public_html 95% do tempo, há alguns comandos que sempre executarei para verificar certas coisas.

Existe alguma maneira que eu possa ligar em cd , então se o diretório for um public_html , ele irá executar automaticamente os comandos para mim?

Se eu não posso ligar para o comando cd , existem outras coisas que eu poderia fazer para alcançar o resultado que eu estou procurando?

Estou executando o CentOS 5.8.

    
por TMH 27.11.2014 / 13:56

3 respostas

10

Você pode adicionar essa função ao seu .bashrc ou outro arquivo de inicialização (dependendo do seu shell). Espero que isso ajude.

cd() {      
   if [ "$1" = "public_html" ]; then
      echo "current dir is my dir"
   fi
   builtin cd "$1"
}
    
por 27.11.2014 / 14:12
11

Com ksh ou bash (ou zsh ):

cd() {
  builtin cd "$@" || return
  [ "$OLDPWD" = "$PWD" ] || case $PWD in
      (*/public_html) echo do something
    esac
}

com zsh :

chpwd()
  case $PWD in
    (*/public_html) echo do something
  esac

( chpwd é uma função gancho que é chamada sempre que o diretório de trabalho atual é alterado (por meio de cd , pushd , popd ...)).

    
por 27.11.2014 / 16:58
1

Eu não sou um especialista, mas eu tomaria a resposta da @VVV e a modificaria um pouco para que ela fizesse isso:

  • em vez de verificar public_html , basta verificar o arquivo hook-script no diretório de destino $1 , digamos, cd_hook.sh .
  • se esse hook-script existir, execute-o e continue com o cd

Isso parece mais genérico, porque você pode aplicar o cd -hook a qualquer diretório, se você preferir, apenas adicionando um cd_hook.sh no diretório.

    
por 14.01.2016 / 11:21