cd를 사용하여 디렉토리로 이동할 때 쉘 스크립트 실행

cd를 사용하여 디렉토리로 이동할 때 쉘 스크립트 실행

특정 디렉토리에 들어갈 때 스크립트가 실행되도록 설정할 수 있습니까 cd?

예를 들어 프로젝트 /foo가 있는 디렉토리 인 경우 자동으로 실행될 때 또는 일부 스크립트가 git가능합니까 ?cd /foogit statusnpm

에 대한 답변을 에 엄격하게 연결하지 마십시오 git. 다른 명령/스크립트일 수 있다고 상상해 보십시오.

답변1

cd원하는 처리를 추가하는 함수로 바꿀 수 있습니다 .

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

답변2

나는 Stephen Kitt의 답변과 비슷한 것을 다음과 같이 사용합니다 .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

관련 정보