매뉴얼에서:
-f, --force
존재하지 않는 파일을 무시하고 메시지를 표시하지 않음
-r, -R, --재귀
디렉토리의 내용을 재귀적으로 제거
이 옵션 설명은 다르지만 빈 폴더(이 예에서는 rmdir 없이)를 삭제하려고 하면 동일한 결과가 나타납니다.
-f
와 비교하여 오류나 아무것도 인쇄하지 않습니다 -r
. 이것이 유일한 차이점입니까, 아니면 한 옵션이 다른 옵션보다 나은 특정 유형의 상황이 있습니까? 아니면 이 옵션 중 하나가 작동하지 않고 다른 옵션은 작동하지 않는 상황이 있습니까?
답변1
CentOS의 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
-f, --force
ignore nonexistent files, never prompt
-r, -R, --recursive
remove directories and their contents recursively
내가 수집한 내용에 따르면(아래 의견 덕분에) -r
및 -f
플래그에 대해 다음이 적용됩니다.
-아르 자형
- 숨겨진 파일 및 하위 디렉터리를 포함하여 디렉터리의 내용을 반복적으로 삭제합니다.
- 구성에 따라 권한을 요청할 수도 있습니다(예: 플래그를 사용할 때
--interactive
). 일부 배포판에서는 기본적으로 이 작업을 수행합니다. - 디렉토리를 제거하는 데 사용할 수 있습니다. 그렇게 하려면 디렉토리 경로를 제공하기만 하면 됩니다(예:
/path/to/directory
).
-에프
- 디렉터리의 내용을 반복적으로 삭제하지 않고 지정된 경로(예:
example/file1
또는example/*
)와 직접 일치하는 파일만 제거합니다. - 하위 디렉터리를 삭제하지 않습니다.
yes to all
기본적으로 Windows에서는 권한을 요청하지 않습니다.
다음은 몇 가지 예입니다. 모두 다음 구조로 시작합니다.
example/
file1
file2
file3
.file
dir/
file1
file2
file3
.file
이 예제에서는 기본적으로 자세한 정보 표시 및 대화형 모드를 활성화했습니다. 일부 배포판에서는 이 작업을 수행하지만 다른 배포판에서는 수행하지 않습니다.
예를 들어
$ rm example
rm: cannot remove `example': Is a directory
보시다시피 rm
기본적으로 디렉터리를 제거하지 않습니다.
rm 예 -f
$ rm example -f
rm: cannot remove `example': Is a directory
플래그를 사용해 -f
도 디렉토리를 제거할 수는 없습니다.
rm 예 -r
$ rm example -r
rm: descend into directory `example'? yes
rm: remove regular empty file `example/file3'? yes
removed `example/file3'
rm: remove regular empty file `example/file2'? yes
removed `example/file2'
rm: descend into directory `example/dir'? yes
rm: remove regular empty file `example/dir/.file'? yes
removed `example/dir/.file'
rm: remove regular empty file `example/dir/file3'? yes
removed `example/dir/file3'
rm: remove regular empty file `example/dir/file2'? yes
removed `example/dir/file2'
rm: remove regular empty file `example/dir/file1'? yes
removed `example/dir/file1'
rm: remove directory `example/dir'? yes
removed directory: `example/dir'
rm: remove regular empty file `example/file1'? yes
removed `example/file1'
rm: remove directory `example'? yes
removed directory: `example'
보시다시피 모든 단일 파일과 디렉터리에 대한 권한을 요청하며 숨겨진 파일도 제거됩니다.
rm 예제/* -f
$ rm example/* -f
rm: cannot remove `example/dir': Is a directory
removed `example/file1'
removed `example/file2'
removed `example/file3'
여기서는 권한을 요청하지 않으며 디렉터리도 삭제되지 않으며 숨겨진 파일도 삭제되지 않습니다.
rm 예/* -r
$ rm example/* -r
rm: descend into directory `example/dir'? yes
rm: remove regular empty file `example/dir/.file'? yes
removed `example/dir/.file'
rm: remove regular empty file `example/dir/file3'? yes
removed `example/dir/file3'
rm: remove regular empty file `example/dir/file2'? yes
removed `example/dir/file2'
rm: remove regular empty file `example/dir/file1'? yes
removed `example/dir/file1'
rm: remove directory `example/dir'? yes
removed directory: `example/dir'
rm: remove regular empty file `example/.file'? yes
removed `example/file'
rm: remove regular empty file `example/file1'? yes
removed `example/file1'
rm: remove regular empty file `example/file2'? yes
removed `example/file2'
rm: remove regular empty file `example/file3'? yes
removed `example/file3'
여기서는 숨겨진 파일을 포함하여 예제 디렉터리(디렉터리 자체가 아님)의 내용이 제거됩니다.
답변2
rm -r mydir
mydir
모든 내용과 함께 디렉토리를 제거합니다 .
rm -f mydir
디렉토리는 제거되지 않습니다(비어 있거나 내용이 포함되어 있지 않음). 오류가 보고됩니다.
BSD/OS X에서:
rm: mydir/: is a directory
GNU/리눅스에서:
rm: cannot remove 'mydir': Is a directory
주어진 인수에 관계없이 동작하는 명령 에 대한 가능한 설명 rm
(가능성이 가장 높은 것부터 가장 낮은 것까지):
- 쉘 별명이
rm
정의되어 있고 정의된 일부 매개변수(예: )가 명령-r
에 전달됩니다.rm
rm
실제 명령에 추가 매개변수도 전달하는 스크립트를 호출하고 있습니다.- 사용자 정의
rm
실행 파일이 있습니다
를 실행하여 처음 두 가지 가능성을 확인할 수 있습니다 /bin/rm -f mydir
.