!["rm -rf *" 명령이 디렉토리의 모든 파일을 삭제하지 않는 이유는 무엇입니까? [반복하다]](https://linux55.com/image/8963/%22rm%20-rf%20*%22%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B0%98%EB%B3%B5%ED%95%98%EB%8B%A4%5D.png)
대부분의 파일은 사라졌지만 여전히 다음 두 가지 파일만 남아 있습니다.
".RData" 및 ".Rhistory"
왜 그럴까요? 저는 R을 사용하고 있지만 이 파일들이 무엇인지 모릅니다.
나중에 sudo를 사용하지 않고 개별적으로 삭제할 수 있습니다.
답변1
*
보이는 파일만 포함됩니다. 이러한 항목과 숨겨진 항목을 제거하려면 다음을 사용하십시오.
rm -rf * .*
그룹 주문 옵션
Bash를 사용하면 이 동작을 변경하고 파일 숨기기를 해제할 수 있습니다. 이를 설명하기 위해 하나는 숨겨져 있고 다른 하나는 숨겨져 있는 두 개의 파일을 만들어 보겠습니다.
$ touch unhidden .hide1
$ ls *
unhidden
보시다시피 숨김 해제된 항목만 표시됩니다 ls *
. 이제 dotglob
옵션을 설정해 보겠습니다 .
$ shopt -s dotglob
$ ls *
.hide1 unhidden
이제 두 파일이 모두 나타납니다. 물론 원한다면 dotglob을 끌 수도 있습니다:
$ shopt -u dotglob
$ ls *
unhidden
문서
에서 man bash
:
경로 이름 확장에 패턴이 사용되는 경우 쉘 옵션 dotglob이 설정되지 않은 한 이름 시작 부분이나 슬래시 바로 뒤의 "." 문자가 명시적으로 일치해야 합니다. 경로 이름을 일치시킬 때 슬래시 문자는 항상 명시적으로 일치해야 합니다. 다른 경우에는 "." 문자가 특별하게 처리되지 않습니다. nocaseglob, nullglob, fallglob 및 dotglob 셸 옵션에 대한 설명은 아래 SHELL BUILTIN COMMANDS 아래의 shopt 설명을 참조하세요.
다시 말해서,경로명 확장.
이름이 로 시작하는 파일은 명시적으로 지정 하지 않는 한 무시됩니다 .
.
보안 질문
예상치 못한 상황을 피하기 위해 현재 디렉터리 와 상위 디렉터리 삭제는 명령줄에 지정하더라도 rm
거부됩니다 ..
..
$ rm -rf .*
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘..’
답변2
그런 다음 디렉토리가 올바른지 확인하십시오.
sudo rm -rf * .*