rm -rf는 무엇을합니까?


25

rm -rf파일이나 디렉토리를 제거 할 때 무엇을 합니까?

옵션 -r-f옵션 은 어떻게 작동합니까?


6
이전에 요청되지 않은 방법은 무엇입니까?
Dan Dascalescu

16
@DanDascalescu 매뉴얼 페이지를 읽음으로써 사소한 대답을했기 때문에 이와 같은 질문에 대한 답을 얻으려면 누군가의 첫 번째 전화 포트가되어야합니다.
David Richerby

9
사용해보십시오. (Spoiler : do n't.)
imallett

3
Golly! 이 질문은 DevRobot의 장난이어야합니다! 맨 페이지를 참조하지 않고 어떻게 업장 수준으로 만들 수 있을까요? 이제 ... 당신은 인간인가요?!
Cbhihe

2
실제로 장난처럼 읽습니다. 누군가가 "비가 H2O로 만들어 졌습니까?" (좋은 대답은 다음과 같습니다. 일반적으로 그렇습니다. 그러나 미래에 사람이 지구의 식물상 절반을 파괴하면 그 중 50 %는 산성비로
바뀔 것입니다

답변:


52

명령은와 rm -rf동일합니다 rm -r -f.

에서 rm의 man 페이지 (유형 man rm터미널에서 그것을 볼) -r을 수행합니다

remove directories and their contents recursively

그리고 -f않습니다 :

ignore nonexistent files and arguments, never prompt

따라서 조합하여 둘 다 수행합니다.

실제로 선택한 디렉토리 내의 모든 항목을 재귀 적으로 제거하거나 선택한 파일을 제거하기 때문에 프롬프트가 표시되지 않으므로 매우 위험한 명령입니다.

이 명령을주의해서 사용하십시오!


@Paul, 슬래시가 어떻게됩니까? 나는이 명령을 사용하여 종종 dirs를 제거하고 슬래시를 제거합니다.
Octopus

1
@Octopus, 슬래시 자체는 루트 디렉토리를 나타냅니다. rm -rf /이론적으로 쓰기 권한이있는 디렉토리에있는 컴퓨터의 모든 파일을 삭제합니다. 루트 사용자라면 전체 시스템을 지우는 것을 의미합니다. (실제로 GNU rmrm -r /당신이 말하지 않으면 허용 하지 않는 특별한 경우를 가지고 있기 때문에 작동하지 않습니다 --no-preserve-root.)
cjm

10
모두 똑같이, rm -rf /그것이 제대로 잡히지 않았 는지 확인 하지 않는 것이 좋습니다 .
CJM

2
@mattburnett VM에서도 위험합니다. VM에 로컬이 아닌 마운트가있을 수 있습니다. 특히, 호스트 컴퓨터의 디렉토리 중 하나를 VM에 마운트하여 호스트와 VM간에 파일을 공유하는 것이 일반적이라고 생각합니다.
hvd

1
@ mattburnett VM이 있습니다. 검역 된 VM이 없습니다. 알 수없는 실행 파일을 실행하지 않습니다. :)
hvd

22

이전의 정답 외에도 낚시하는 법을 가르쳐 드리고자합니다.

명령의 작동 방식, 옵션의 기능 및 기능에 대해 확실하지 않은 경우 터미널을 열고 입력하십시오.

man <command>

예를 들면 다음과 같습니다.

man rm

일단 들어가면 옵션을 검색 할 수 있습니다. 맨 페이지는 실제로 읽기에 너무 길 수 있으므로 터미널 유형에서 다음을 수행하십시오.

/<pattern>

예를 들어 다음을 수행하십시오.

/-f

당신은 쉽게 착륙 할 수 있습니다 :

-f, --force
              ignore nonexistent files and arguments, never prompt

-r 할 경우 :

-r, -R, --recursive
              remove directories and their contents recursively

n(다음) 및 N(이전)을 사용하여 검색 결과 사이를 이동할 수 있습니다 .

보너스:

무언가를해야하지만 명령 이름을 모르는 경우 aproposman 페이지에서 검색 하는 데 사용하십시오 .

apropos <pattern>

예를 들면 다음과 같습니다.

apropos directory listing

8

rm제거하기에는 짧습니다. r플래그는 제거 디렉토리와 그 내용을 반복적으로하고이다 f수단 힘, 그것은 어떤 확인 메시지를 무시합니다.


3
엄밀히 말하면 r flag is to remove directories 옳지 않습니다. 그것은 그것의 내용과 함께 디렉토리를 제거하고, 재귀 연산입니다. 당신의 말에 따르면, 그것은 단지 디렉토리를 제거 할 것입니다. 디렉토리 항목은 이름 - 아이 노드 매핑을 포함으로 만 이것은 단지 어떤 이해가되지 않습니다 ..
heemayl

네 말이 맞아, 나는 대답을 편집 할 것이다.
Chris

1
-r은 디렉토리 와 그 내용을 재귀 적으로 제거합니다 .
짐 발터

3

이미 언급했듯이 디렉토리가있는 rm -rf <ARG>곳에서 파일을 재귀 적으로 강제로 제거 <ARG>하는 것입니다 (파일은 괜찮을 수도 있음).

-r(재귀 제거)의 요점 은 ( unlink ) rmrm사용 하는 기본 시스템 호출이 빈 디렉토리에서만 작동 하기 때문에 디렉토리가 비어 있지 않으면 디렉토리를 제거 할 수 없다는 것 입니다. 따라서 플래그가하는 것은 디렉토리로 내려 가서 파일을 먼저 제거한 다음 디렉토리가 비어있을 때만 깊이 우선 검색 입니다. 이와 같은 효과는 플래그 를 사용하여 명령을 통해 달성됩니다 (로 필터링을 지정하지 않았지만 다른 이야기입니다).-rfind-delete-type

에 관해서 -f는 두 가지 작업을 수행합니다. 하나는 파일을 제거할지 여부를 묻지 않습니다 (예 : 디렉토리 내에서 다른 사용자가 소유 한 파일을 제거 할 때 rm: remove write-protected regular empty file 'f1'?확인 프롬프트를 표시하지 않음 ). 존재하지 않는 파일. 예를 들어 파일 이름이 존재하지 않으면 rm: cannot remove 'nonexistent': No such file or directory오류가 발생합니다.

참조 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.