발견된 디렉터리를 기반으로 명령 추가

발견된 디렉터리를 기반으로 명령 추가

명령에서 발견된 모든 폴더가 다음 정의를 사용하여 생성 dir0되도록 디렉터리에서 폴더를 검색하는 bash 스크립트를 만드는 방법이 있습니까 ?dir1dir0dir1-command

dir1-command() {
 cd dir0/dir1
 echo "inside dir0/dir1"
 cd -
}

편집하다:제가 해결하려는 구체적인 문제는 다음과 같습니다. 및 같은 하위 폴더가 scripts포함된 폴더가 있습니다 . 예를 들어 시작 방법 은 다음과 같습니다.scripts/haskell_script1scripts/haskell_script2scripts/haskell_script1

haskell_script1() {
 cd scripts/haskell_script1
 stack exec haskell_script1 -- $@
 cd -
}

그래서 제가 하고 싶은 것은 ~/.bashrc소스를 찾을 때마다 폴더를 스캔 scripts하고 여러 가지 양식 명령을 생성하여 haskell_scriptX시간을 절약하는 것입니다. 이렇게 하면 내가 만드는 모든 하스켈 프로젝트/폴더 폴더에 대해 명령을 수동으로 만들 필요가 없습니다.

답변1

.bashrc에 다음을 추가하세요.

for script in scripts/haskell_script*
do
  # strip off the leading "scripts/" portion
  script=${script##*/}
  eval "function ${script} { 
    cd scripts/${script}
    stack exec ${script} -- \$@
    cd -
  }"
done

해당 정의에서 조기에 평가될 수 있는 eval모든 항목 에 대해 주의해야 합니다. 이것이 $제가 에서 탈출하는 이유 입니다 $@.

관련 정보