/에서 루트로 이 명령을 실행하는 것이 안전합니까?

/에서 루트로 이 명령을 실행하는 것이 안전합니까?
find . * -depth -print0 | xargs -0 rmdir

모든 빈 폴더(숨겨진 폴더 포함)를 반복적으로 찾아 삭제합니다.

내 홈 폴더와 Linux PC의 펜 드라이브에서만 시도했는데 작동하지만 / 루트에서 실행하는 것이 안전한지 모르겠습니다.

한번은 인터넷에서 몇 가지 명령을 실행하여 운영 체제를 망가뜨린 적이 있습니다(이해가 안 됨).

답변1

페이지는 다음과 man같습니다 rmdir.

Remove the DIRECTORY(ies), if they are empty.

빈 디렉토리를 모두 삭제하려면 안전합니다. 당신이 물어봐야 할 질문은 다음과 같습니다:-

삭제하시겠습니까?모두디렉토리가 비어 있습니까?

일부 애플리케이션에는 디렉토리가 비어 있어도 디렉토리가 필요합니다. 예를 들어 영구 저장소가 있는 journald경우에만 영구 저장소에 기록하도록 구성할 수 있습니다 /var/log/journald. 디렉토리가 비어 있을 때 명령을 실행하면 디렉토리가 삭제됩니다. 디렉터리를 찾을 수 없기 때문에 나중에 journald영구 저장소에 기록되지 않습니다 . 저는 Fedora가 기본적으로 이런 방식으로 구성되어 있다고 생각합니다.

또한 명령을 통해 빈(마운트 해제된) 마운트 지점을 제거할 수도 있습니다. 쉽게 고칠 수 있지만 여전히 문제를 일으킬 수 있습니다.

답변2

이 명령은 대부분의 경우 안전할 수 있지만 명령이 options 를 허용할 수 있는 경우 *대시로 시작하는 파일 이름(버그 또는 다른 버그를 악용할 수 있는 악의적인 사람이 만든 경우)으로 사용하는 것은 좋지 않습니다. 옵션으로 해석됩니다. 누군가 말했듯 *이 여기서는 의미가 없지만 기억해야 할 것은 특히 루트로 명령을 실행할 때 모든 매개 변수를 제어해야 한다는 것입니다. 일반적으로 접두사가 없는 와일드카드는 사용하지 마세요(예: 대신 가 *일반적 ./*으로 더 좋습니다). 또한 파일 이름의 심볼릭 링크와 공백에 주의하세요.

답변3

find디렉토리 트리의 모든 파일과 폴더가 인쇄됩니다. find에서 반환된 각 요소에 대해 xargs제공된 명령을 실행합니다 .rmdir

rmdir비어 있지 않은 폴더는 삭제되지 않으며 파일도 삭제되지 않습니다. 시도해 볼 수 있습니다. 일부 파일이 포함된 mkdir폴더를 만들고 해당 폴더에서 실행합니다. 다음과 같은 것에 대해 불평할 것입니다: 또는touchrmdirrmdirrmdir: failed to remove ‘test’: Directory not emptyrmdir: failed to remove ‘test.txt’: Not a directory

그렇습니다. 완전히 안전해야 합니다. 테스트하려면 mkdir테스트 폴더 세트를 사용하고 생성하여 touch예상대로 작동하는지 확인할 수 있습니다.

또한 rmdir- 및 *nix의 거의 모든 명령에 대한 자세한 내용을 보려면 를 실행하세요 man <command>.

관련 정보