CLI에서 무고한 와일드 카드 사용의 두려움

1799 단어 cliBash

배경



Shell Style Guide을 읽으면 와일드 카드에 대해 썼습니다. 거기서 처음 알았던 적이 있었기 때문에 자기의 계명을 겸해 쓴다.

개요



Shell Style Guide에 의하면 파일명은 - 로 시작되기 때문에 * 보다는 ./* 쪽이 안전이라고 써 있다. 검증해 본다. 검증 환경은 bash-3.2.

검증



먼저 텍스트 파일 a.txt과 디렉토리 a_dir를 작성하고 $ rm * 명령을 실행하십시오. 그러면 a.txt는 삭제되지만 a_dirrm: a_dir/: is a directory로 나와 삭제할 수 없습니다. 여기까지는 납득.
그런 다음 파일 -f, -r, a.txt 및 디렉토리 a_dir를 만듭니다. 다시 $ rm a_dir 명령은 rm: a_dir/: is a directory로 표시됩니다. 이제 * 명령을 실행해 보겠습니다. 그러면…

원래 사라지지 않을 디렉토리 a_dir가 삭제되었습니다. 만약을 위해echo 커멘드로 확인해 본다.


고찰



와일드카드는 해당 디렉토리 내의 파일 및 디렉토리를 모두 전개하고 있을 뿐이었다. 따라서 -f-r 파일이 옵션으로 해석되었습니다. -r 는 디렉토리도 삭제 대상에 포함하는 옵션이며, 이것에 의해 a_dir 도 삭제 대상이 되고 있었다.
"그런 상황이 없겠지"라는 생각도 있다고 생각하지만, 복잡한 배치 처리 중에 이와 유사한 처리가 실행될 가능성도 있을지도 모른다. 그 때 어떠한 원인으로 에러가 발생해도 -f 옵션에 의해 에러 메세지가 출력되지 않기 때문에, 원인의 특정은 곤란하게 된다. 원래 가능성이 생각되는 시점에서 안전한 ./*를 사용해야 할 것이다.

좋은 웹페이지 즐겨찾기