Rm (유닉스)
"오늘의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]
`rm` 명령어는 지정된 파일을 삭제하는 데 사용된다. 파일은 상대 경로 또는 절대 경로를 사용하여 지정할 수 있으며, `rm`은 기본적으로 디렉터리를 삭제하지 않는다.[13] 예를 들어, `rm foo`는 현재 디렉터리에서 "foo" 파일을 삭제한다.
GNU coreutils에 포함된 `rm` 버전은 폴 루빈, 데이비드 매켄지, 리처드 스톨만, 짐 메이어링이 작성했다.[7]
썬 마이크로시스템즈는 솔라리스 10에서 `rm -rf /` 실행을 방지하는 기능을 도입했으며,[26] FreeBSD 등 다른 운영 체제에도 유사한 기능이 추가되었다.[19] GNU `rm`은 `--preserve-root` 옵션을 통해 루트 디렉터리 삭제를 방지하는데,[20] 이는 GNU Core Utilities 버전 6.4 (2006년)부터 기본적으로 활성화되어 있다.
3. 사용법
`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. 주요 옵션
`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영어 명령어 사용 시 주의해야 할 점은 다음과 같다.
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` 명령어는 다음과 같은 다양한 운영 체제에 포팅되어 있다.
참조
[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