rm을 호출하기 전에 특정 폴더에 있는지 확인하세요. [닫기]

rm을 호출하기 전에 특정 폴더에 있는지 확인하세요. [닫기]

내 bash 스크립트에는 다음과 같은 매우 위험한 줄이 있습니다.

rm -r *

특정 폴더에서 잘못 실행되면 매우 재앙이 될 수 있습니다. 기본적으로 폴더에서 호출하지 않는 한 실행되지 않도록 if 조건을 추가해야 합니다. blah_pew_blah이 경우 피해는 아마도 최소화될 것입니다. 그런데 어떻게 확인하나요? 감사해요.

답변1

최신 bash를 가정하면 다음을 실행하여 현재 디렉터리의 이름을 얻을 수 있습니다.

basename $(pwd)

이는 다음과 같은 조건문에 사용될 수 있습니다.

if test $(basename $(pwd)) != 'blah_pew_blah'; then
    printf 'Not in expected directory, aborting!\n'
    exit 0
fi

답변2

case `command -p pwd -P` in
   */foo ) find `pwd` -mindepth 2 -maxdepth 2 -type d -exec ...
esac

답변3

당신은 스크립트의 복잡성과 혼란을 증가시키는 방법을 찾고 있습니다. 올바른 방법은 전체 경로를 사용하여 명령을 호출하는 것입니다.

rm -r /path/to/blah_pew_blah/*

관련 정보