CLI에서 무고한 와일드 카드 사용의 두려움
배경
Shell Style Guide을 읽으면 와일드 카드에 대해 썼습니다. 거기서 처음 알았던 적이 있었기 때문에 자기의 계명을 겸해 쓴다.
개요
Shell Style Guide에 의하면 파일명은 -
로 시작되기 때문에 *
보다는 ./*
쪽이 안전이라고 써 있다. 검증해 본다. 검증 환경은 bash-3.2.
검증
먼저 텍스트 파일 a.txt
과 디렉토리 a_dir
를 작성하고 $ rm *
명령을 실행하십시오. 그러면 a.txt
는 삭제되지만 a_dir
는 rm: 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
옵션에 의해 에러 메세지가 출력되지 않기 때문에, 원인의 특정은 곤란하게 된다. 원래 가능성이 생각되는 시점에서 안전한 ./*
를 사용해야 할 것이다.
Reference
이 문제에 관하여(CLI에서 무고한 와일드 카드 사용의 두려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ikeponias/items/ebdb02b1c0ff5733966a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Shell Style Guide에 의하면 파일명은
-
로 시작되기 때문에 *
보다는 ./*
쪽이 안전이라고 써 있다. 검증해 본다. 검증 환경은 bash-3.2.검증
먼저 텍스트 파일 a.txt
과 디렉토리 a_dir
를 작성하고 $ rm *
명령을 실행하십시오. 그러면 a.txt
는 삭제되지만 a_dir
는 rm: 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
옵션에 의해 에러 메세지가 출력되지 않기 때문에, 원인의 특정은 곤란하게 된다. 원래 가능성이 생각되는 시점에서 안전한 ./*
를 사용해야 할 것이다.
Reference
이 문제에 관하여(CLI에서 무고한 와일드 카드 사용의 두려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ikeponias/items/ebdb02b1c0ff5733966a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
와일드카드는 해당 디렉토리 내의 파일 및 디렉토리를 모두 전개하고 있을 뿐이었다. 따라서
-f
및 -r
파일이 옵션으로 해석되었습니다. -r
는 디렉토리도 삭제 대상에 포함하는 옵션이며, 이것에 의해 a_dir
도 삭제 대상이 되고 있었다."그런 상황이 없겠지"라는 생각도 있다고 생각하지만, 복잡한 배치 처리 중에 이와 유사한 처리가 실행될 가능성도 있을지도 모른다. 그 때 어떠한 원인으로 에러가 발생해도
-f
옵션에 의해 에러 메세지가 출력되지 않기 때문에, 원인의 특정은 곤란하게 된다. 원래 가능성이 생각되는 시점에서 안전한 ./*
를 사용해야 할 것이다.
Reference
이 문제에 관하여(CLI에서 무고한 와일드 카드 사용의 두려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ikeponias/items/ebdb02b1c0ff5733966a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)