![rm을 호출하기 전에 특정 폴더에 있는지 확인하세요. [닫기]](https://linux55.com/image/108898/rm%EC%9D%84%20%ED%98%B8%EC%B6%9C%ED%95%98%EA%B8%B0%20%EC%A0%84%EC%97%90%20%ED%8A%B9%EC%A0%95%20%ED%8F%B4%EB%8D%94%EC%97%90%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
내 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/*