내 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/*