맨위로가기

Rm (유닉스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

rm은 유닉스 및 유닉스 계열 운영체제에서 파일을 삭제하는 데 사용되는 명령어이다. 초기 버전에서는 빈 디렉토리만 삭제할 수 있었으나, 이후 옵션 추가를 통해 기능이 확장되었다. rm 명령어는 파일 및 디렉토리를 삭제하며, `-r` 옵션을 사용하면 디렉토리와 하위 내용을 재귀적으로 삭제할 수 있다. 실수로 인한 데이터 손실을 방지하기 위해 `-i` 옵션이나 셸 별칭을 사용하는 것이 권장되며, `rm -rf /`와 같은 명령은 시스템 전체를 삭제할 수 있으므로 사용에 주의해야 한다.

더 읽어볼만한 페이지

  • 표준 유닉스 프로그램 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 표준 유닉스 프로그램 - Ls (유닉스)
    `ls`는 유닉스 계열 운영체제에서 디렉터리 내 파일 및 디렉터리 목록을 표시하는 명령어로, 다양한 옵션을 통해 출력 형태, 정렬 방식, 추가 정보 표시를 제어하고, 파일 유형 구별, 숨김 파일 표시, 하위 디렉터리 재귀적 나열 등의 기능을 제공하며, 셸 별칭 설정을 통해 사용자 편의성을 높인다.
  • 유닉스 SUS2008 유틸리티 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 유닉스 SUS2008 유틸리티 - 로케일
    로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.
Rm (유닉스) - [IT 관련 정보]에 관한 문서
rm (remove)
종류명령어
사용법rm [옵션]... 파일...
설명
용도파일을 지우는 데 사용
위험성일반적으로, 삭제된 파일은 복구할 수 없다.
rm 명령어를 신중하게 사용하지 않으면 데이터 손실이 발생할 수 있다.
특히, 루트 권한으로 사용할 경우 시스템에 심각한 손상을 초래할 수 있다.
옵션
-f, --force존재하지 않는 파일을 묻지 않고 무시한다.
쓰기 금지된 파일을 삭제하기 위해 프롬프트를 표시하지 않는다.
-i 옵션을 덮어쓴다.
-i각 파일을 지우기 전에 확인 메시지를 표시한다.
-I세 개 이상의 파일을 지우거나 -r 또는 -R 옵션을 사용할 때 한 번만 확인 메시지를 표시한다.
-i 옵션보다 덜 침해적이면서도 대부분의 실수를 방지한다.
--interactive[=언제]언제에 따라 각 파일을 지우기 전에 확인 메시지를 표시한다.
-r, -R, --recursive디렉터리 내용을 재귀적으로 지운다.
-d, --dir빈 디렉터리를 지운다.
-v, --verbose수행되는 작업을 설명한다.
--help도움말을 표시하고 종료한다.
--version버전 정보를 표시하고 종료한다.
주의 사항
재귀적 삭제-r 또는 -R 옵션을 사용하여 디렉터리를 재귀적으로 삭제할 때 특히 주의해야 한다.
잘못된 경로를 지정하면 중요한 시스템 파일이 삭제될 수 있다.
별칭 및 셸 함수rm 명령어에 대한 별칭이나 셸 함수를 정의하여 기본 동작을 변경할 수 있다.
예를 들어, 'rm'을 'rm -i'로 별칭 지정하여 삭제 전에 항상 확인 메시지를 표시하도록 할 수 있다.

2. 역사

초기 유닉스 버전에서 `rm` 명령어는 빈 디렉터리만 삭제할 수 있었다.[3] 버전 7에서는 삭제 전에 사용자에게 확인을 받는 `-i` 옵션이 도입되었는데, 이는 버전 1에 있던 `dsw` ("스위치에서 삭제") 명령어를 대체한 것이다. 더그 맥일로이는 `dsw`를 "말할 수 없는 이름을 가진 파일을 정리하기 위해 고안된 절망적인 도구"라고 묘사했다.[9]

GNU coreutils에 포함된 `rm` 버전은 폴 루빈, 데이비드 매켄지, 리처드 스톨만, 짐 메이어링이 작성했다.[7]

썬 마이크로시스템즈는 솔라리스 10에서 `rm -rf /` 실행을 방지하는 기능을 도입했으며,[26] FreeBSD 등 다른 운영 체제에도 유사한 기능이 추가되었다.[19] GNU `rm`은 `--preserve-root` 옵션을 통해 루트 디렉터리 삭제를 방지하는데,[20] 이는 GNU Core Utilities 버전 6.4 (2006년)부터 기본적으로 활성화되어 있다.

3. 사용법

`rm` 명령어는 지정된 파일을 삭제하는 데 사용된다. 파일은 상대 경로 또는 절대 경로를 사용하여 지정할 수 있으며, `rm`은 기본적으로 디렉터리를 삭제하지 않는다.[13] 예를 들어, `rm foo`는 현재 디렉터리에서 "foo" 파일을 삭제한다.

`rm`은 xargs와 함께 사용하여 삭제할 파일 목록을 지정할 수 있다.

```bash

xargs rm < filelist

```

위 명령어는 `filelist` 파일에 있는 목록을 읽어와 해당 파일들을 삭제한다.

현재 디렉터리 아래의 모든 디렉터리에서 모든 PNG 이미지를 제거하려면 다음과 같이 할 수 있다.

```bash

find . -name '*.png' -exec rm {} +

```

`rm` 명령을 심볼릭 링크에 사용하면 링크 자체는 삭제되지만, 링크가 가리키는 대상에는 영향을 미치지 않는다.

`rm`은 다양한 옵션과 함께 사용될 수 있다. 예를 들어 `-r` 옵션은 디렉터리와 그 안의 모든 내용을, `-i` 옵션은 삭제 전 확인, `-f` 옵션은 확인 메시지 없이 강제 삭제를 하는 데 사용된다.

mv (유닉스), cp (유닉스)와 마찬가지로 `rm` 명령에서 `-`(하이픈)으로 시작하는 파일 이름을 인수로 지정하려면 옵션의 종료를 알리는 `--`를 사용해야 한다. 예를 들어 `-f`라는 파일을 삭제하려면 `rm -- -f`와 같이 사용한다. 또는 경로명을 사용하여 `rm ./-f`와 같이 우회할 수도 있다.[1]

3. 1. 주요 옵션


  • '''-r''' : 디렉터리와 그 안의 모든 내용을 재귀적으로 삭제한다. 즉, 디렉터리 안에 있는 파일과 다른 하위 디렉터리까지 모두 삭제한다.[1] (recursive)
  • '''-i''' : 파일을 삭제하기 전에 사용자에게 정말로 삭제할 것인지 확인하는 메시지를 표시한다.[1] (interactive)
  • '''-f''' : 존재하지 않는 파일을 무시하고, 삭제 확인 메시지를 표시하지 않는다. 즉, 오류 없이 강제로 삭제를 진행한다.[1] (force) 단, 쓰기 보호 기능이 설정된 디렉터리 안에 있는 파일은 삭제할 수 없다.
  • '''-v''' : 삭제 과정을 자세하게 출력하여, 어떤 파일이 삭제되고 있는지 사용자에게 알려준다.[1] (verbose)
  • '''-d''' : 빈 디렉터리를 삭제한다. 지정된 디렉터리가 비어있을 때만 작동한다.[13]
  • '''--one-file-system''' : 지정된 파일 시스템 내에서만 파일을 삭제하고, 마운트된 다른 파일 시스템은 무시한다.
  • '''--''' : 옵션의 끝을 명시한다. 이것은 `-`로 시작하는 파일 이름을 삭제할 때 유용하다. 예를 들어, `-f`라는 파일을 삭제하려면 `rm -- -f`와 같이 사용한다.[1]


`rm`은 "rm -i"와 같이 alias하여 사용하는 경우가 많다.[1] 이렇게 하면 실수로 파일을 삭제하는 것을 방지할 수 있다. 많은 양의 파일을 확인 없이 삭제하려면 `-f` 옵션을 추가하여 `-i` 옵션을 무시할 수 있다. (`rm -i -f`와 같이 두 옵션을 모두 지정하면 뒤에 오는 `-f` 옵션이 우선 적용된다.)[1]

`rm -rf` (또는 `rm -rf /`, `rm -rf *` 등) 명령어는 유닉스 시스템에서 매우 위험한 명령으로 알려져 있다.[14] 이 명령어를 슈퍼유저 권한으로 루트 디렉터리(`/`)에서 실행하면 시스템에서 쓰기 가능한 모든 파일이 삭제될 수 있기 때문이다.

3. 2. 권한

파일을 삭제하려면 해당 파일의 상위 디렉터리에 대한 쓰기 권한이 필요하다. (그리고 디렉터리에 들어가기 위한 실행 권한도 필요하다). 파일 자체의 권한은 중요하지 않다. 그러나 GNU `rm`은 `-f` 옵션을 사용하지 않는 한, 쓰기 방지된 파일을 삭제할 때 확인을 요청한다.[16]

`rm -r` 명령으로 디렉터리를 삭제하려면, 해당 디렉터리 및 모든 하위 디렉터리(있는 경우)에 대해 읽기, 쓰기 및 실행 권한이 필요하다. 읽기 권한은 삭제할 디렉터리의 내용을 나열하는 데 필요하다. 쓰기 권한이 없으면 내용을 삭제할 수 없어 비어 있지 않은 디렉터리는 삭제할 수 없지만, 동일한 디렉터리가 비어 있다면 삭제할 수 있는 상황이 발생한다.[17]

스티키 비트가 설정된 디렉터리에 있는 파일을 삭제하려면 파일의 소유자여야 한다.

3. 3. 주의 사항

rm영어 명령어 사용 시 주의해야 할 점은 다음과 같다.

  • `rm -rf /` 또는 `rm -rf /*`: 이 명령어는 시스템 전체를 삭제할 수 있으므로 절대 사용해서는 안 된다.[14] 슈퍼유저 권한으로 루트 디렉터리(`/`)에서 실행하면 파일 시스템에서 쓰기 가능한 모든 파일이 삭제되어 시스템이 망가진다.[26] 픽사의 영화 토이 스토리 2 제작 중에도 이 명령어로 인해 많은 파일이 손실된 사례가 있다.[15]
  • 일부 리눅스 배포판의 보호 기능: 솔라리스 10, FreeBSD, GNU 코어 유틸리티 6.4 이상 버전에서는 `rm -rf /` 실행을 방지하는 기능이 있지만,[18][19][20] 완벽하지 않으므로 주의해야 한다. 최신 시스템에서는 안전 장치가 기본 활성화되어 있지만, `--no-preserve-root` 옵션을 사용하면 우회할 수 있다.
  • `-i` 옵션: 실수로 파일을 삭제하는 것을 방지하기 위해 `-i` 옵션을 사용하여 각 파일 삭제 전에 확인을 받는 것이 좋다.[13]
  • 셸 별칭: `alias rm="rm -i"`와 같이 셸 별칭을 설정하여 `rm` 명령어를 사용할 때마다 `-i` 옵션이 자동으로 적용되도록 하는 것이 일반적이다.[21]
  • `-`로 시작하는 파일 이름: `-`로 시작하는 파일을 삭제하려면 `--` 옵션을 사용하거나 (`rm -- -f`), 경로를 함께 지정해야 한다 (`rm ./-f`).[13]
  • 와일드카드(*) 사용 주의: 와일드카드(*)를 사용할 때는 특히 주의해야 한다. 잘못 사용하면 의도하지 않은 파일까지 삭제될 수 있다.
  • 명령줄 인수 길이 제한: 명령줄 인수 길이가 제한을 초과하면 "Argument list too long" 오류가 발생할 수 있다.[25] 이 제한은 최대 스택 제한의 25%이며, `ulimit -s` 명령으로 확인할 수 있다.[23][24]

4. 기타

`rm`은 삭제된 파일을 복구하는 기능을 제공하지 않기 때문에,[2] `undelete` 유틸리티를 사용하거나, 휴지통 기능을 제공하는 래퍼(wrapper)를 사용하는 것이 좋다.[2]

썬 마이크로시스템즈는 솔라리스 10에서 " `rm -rf /` " 방지 기능을 도입했으며,[18] FreeBSD의 `rm` 유틸리티에도 이 기능이 도입되었다.[19] GNU coreutils 6.4 버전 이후로는 ` --preserve-root` 옵션이 기본값으로 설정되어, GNU `rm`은 `rm -rf /` 실행을 거부한다.[20]

`rm`은 xargs와 함께 사용하여 파일 목록을 기반으로 파일을 삭제할 수 있다.

```bash

xargs rm < filelist

```

`find`와 함께 사용하여 특정 조건에 맞는 파일을 삭제할 수도 있다. 예를 들어, 현재 디렉터리 아래의 모든 디렉터리에서 모든 PNG 이미지를 제거하려면 다음과 같이 한다.

```bash

find . -name '*.png' -exec rm {} +

```

`rm` 명령어는 다음과 같은 다양한 운영 체제에 포팅되어 있다.

운영 체제
IBM i 운영 체제[12]
Microsoft Windows (UnxUtils의 일부)[10]
KolibriOS[11]


참조

[1] 웹사이트 EFI Shells and Scripting http://software.inte[...] Intel 2013-09-25
[2] 웹사이트 Unix - Frequently Asked Questions (3/7) [Frequent posting]Section - How do I "undelete" a file? http://www.faqs.org/[...]
[3] 웹사이트 rm page from Section 1 of the unix 8th manual http://man.cat-v.org[...]
[4] 간행물 RM(1) http://modman.unixde[...] 2015-02-05
[5] 간행물 RM(1) http://modman.unixde[...] 2015-02-05
[6] 간행물 RM(1) http://modman.unixde[...] 2015-02-05
[7] 웹사이트 rm(1): remove files/directories - Linux man page https://linux.die.ne[...]
[8] 웹사이트 rm: new option --dir (-d) to remove empty directories http://git.savannah.[...] 2012-01-22
[9] tech report A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 http://www.cs.dartmo[...]
[10] 웹사이트 Native Win32 ports of some GNU utilities http://unxutils.sour[...]
[11] 웹사이트 Shell - KolibriOS wiki http://wiki.kolibrio[...]
[12] 웹사이트 IBM System i Version 7.2 Programming Qshell https://www.ibm.com/[...] 2020-09-05
[13] 웹사이트 rm(1) - Linux manual page https://man7.org/lin[...]
[14] 웹사이트 Linux/UNIX: Delete a file http://www.cyberciti[...] Nixcraft 2011-11-24
[15] 웹사이트 How Toy Story 2 Got Deleted Twice, Once on Accident, Again on purpose https://thenextweb.c[...] 2012-05-21
[16] 뉴스 Linux rm command help and examples https://www.theinqui[...] 2019-01-24
[17] 뉴스 Master the command line: Deleting files and folders https://www.macworld[...] 2019-01-24
[18] 웹사이트 Meddling in the Affairs of Wizards https://blogs.oracle[...]
[19] 웹사이트 The previous commit added code to rm(1) to warn about and remove any · freebsd/freebsd@d6b7bd9 https://github.com/f[...]
[20] 웹사이트 rm invocation (GNU Coreutils) https://www.gnu.org/[...]
[21] 웹사이트 Safe-rm in Launchpad https://launchpad.ne[...]
[22] 웹사이트 andreafrancia/trash-cli https://github.com/a[...] 2020-09-12
[23] 웹사이트 Linux_2_6_23 - Linux Kernel Newbies https://kernelnewbie[...]
[24] 웹사이트 kernel/git/torvalds/linux.git - Linux kernel source tree https://git.kernel.o[...]
[25] 웹사이트 "Argument list too long": Beyond Arguments and Limitations | Linux Journal https://www.linuxjou[...]
[26] 웹인용 Meddling in the Affairs of Wizards http://blogs.sun.com[...] 2012-09-29



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com