본문 바로가기
IT/리눅스 명령어

리눅스 rm 명령어 옵션 사용법 및 총 정리

by 꾸꾸웍스 2022. 4. 12.
반응형

리눅스 rm 명령어 옵션 사용법 및 총 정리



※ 목차

1. 리눅스 rm 명령어란???
2. 리눅스 rm 명령어 사용법
3. 리눅스 rm 명령어 옵션
4. 리눅스 rm 명령어 옵션 사용법

1. 리눅스 rm 명령어란???
  • remove의 약자로 파일 및 디렉토리를 제거할 수 있는 명령어입니다
  • rm 명령어는 기본적으로 지정된 각 파일을 제거합니다
  • rm 명령어는 옵션 사용 없이 디렉토리를 제거할 수 없습니다(디렉토리 제거 시 옵션 사용 필요).
  • rm 명령어는 파일을 삭제하는 명령어이기 때문에
    삭제된 파일은 복구하기가 어려워 사용시 주의해서 사용해야 됩니다

2. 리눅스 rm 명령어 사용법
rm [옵션] [파일 및 디렉토리]

  • rm 명령어는 파일명을 지정하여 한개의 파일 또는 여러 개의 파일을 동시에 삭제할 수 있습니다
### file1~4의 4개의 파일이 존재
[ server 2022-04-12 10:46:22 ] ~/testdir
user@server # ls -l
total 16
-rw-r--r-- 1 user user 785 Apr  8 17:30 file1
-rw-r--r-- 1 user user 785 Apr  8 17:30 file2
-rw-r--r-- 1 user user 785 Apr  8 17:30 file3
-rw-r--r-- 1 user user 785 Apr  8 17:30 file4

### file4 파일 한개 삭제
[ server 2022-04-12 10:46:22 ] ~/testdir
user@server # rm file4

### file1 file2 file3 파일 3개(여러개) 삭제
[ server 2022-04-12 10:46:29 ] ~/testdir
user@server # rm file1 file2 file3

[ server 2022-04-12 10:46:53 ] ~/testdir
user@server # ls -l
total 0

  • rm 명령어는 옵션없이 파일은 삭제할 수 있지만 디렉토리를 삭제할 수는 없습니다
    • 디렉토리 삭제 시 -r 옵션 사용
### apple의 디렉토리와 file1의 파일이 존재
[ server 2022-04-12 10:50:13 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 6 Apr 12 10:50 apple
-rw-r--r-- 1 user user 0 Apr 12 10:50 file1

### rm 명령어로 apple 디렉토리 삭제 시도 하지만 옵션없이 제거 못함
[ server 2022-04-12 10:50:14 ] ~/testdir
user@server # rm apple
rm: cannot remove ‘apple’: Is a directory

### rm 명령어로 기본적으로 파일은 지울 수 있음
[ server 2022-04-12 10:50:18 ] ~/testdir
user@server # rm file1

[ server 2022-04-12 10:50:20 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 6 Apr 12 10:50 apple

  • rm 명령어는 와일드카드를 사용하여 특정 규칙 있는 파일 및 디렉토리를 삭제할 수 있습니다.
    (옵션의 설명은 아래 '3. 리눅스 rm 명령어 옵션'에 나와있습니다)
### 파일 및 디렉토리 존재
[ server 2022-04-12 10:57:05 ] ~/testdir
user@server # ls -l
total 0
-rw-r--r-- 1 user user 0 Apr 12 10:57 apadac
drwxr-xr-x 2 user user 6 Apr 12 10:50 apple
drwxr-xr-x 2 user user 6 Apr 12 10:56 apple34
drwxr-xr-x 2 user user 6 Apr 12 10:56 appppppp

### rm명령어 r과 f 옵션을 이용하여 ap로 시작하는 모든 단어의
    파일 및 디렉토리 삭제
[ server 2022-04-12 10:57:06 ] ~/testdir
user@server # rm -rf ap*

[ server 2022-04-12 10:57:28 ] ~/testdir
user@server # ls -l
total 0

###위의 상황과 같은 조건의 파일 및 디렉토리 존재
[ server 2022-04-12 10:58:03 ] ~/testdir
user@server # ls -l
total 0
-rw-r--r-- 1 user user 0 Apr 12 10:57 apadac
drwxr-xr-x 2 user user 6 Apr 12 10:58 apple
drwxr-xr-x 2 user user 6 Apr 12 10:57 apple34
drwxr-xr-x 2 user user 6 Apr 12 10:58 appppppp

### ?(한글자 매칭)를 사용하여 app로 시작하는 총 5글자의 파일 및 디렉토리를 삭제
[ server 2022-04-12 10:58:04 ] ~/testdir
user@server # rm -rf app??

[ server 2022-04-12 10:58:20 ] ~/testdir
user@server # ls -l
total 0
-rw-r--r-- 1 user user 0 Apr 12 10:57 apadac
drwxr-xr-x 2 user user 6 Apr 12 10:57 apple34
drwxr-xr-x 2 user user 6 Apr 12 10:58 appppppp

### *(모든문자매칭)를 사용하여 현재 디렉토리에 존재하는 파일 및 디렉토리 삭제
[ server 2022-04-12 10:58:21 ] ~/testdir
user@server # rm -rf *

[ server 2022-04-12 10:58:33 ] ~/testdir
user@server # ls -l
total 0

 

3. 리눅스 rm 명령어 옵션
번호 옵션 long 옵션 설명
1 -f --force 지정된 파일 및 디렉토리를 삭제 할 때 경고 없이 강제로 삭제합니다.
2 -i - 지정된 파일 및 디렉토리를 삭제 할 때마다 삭제여부를 출력합니다.
3 -I - 3개 이상을 한번에 제거할 때나 하위를 제거 할때 삭제여부를 출력합니다.
4 - --interactive[=WHEN] WHEN 값에 따라 상호대화형 모드로 지정합니다.
5 - --one-file-system 디렉토리를 삭제 할 때 마운트된 파일 시스템이 존재하면 삭제 하지 않습니다.
7 - --no-preserve-root '/' 최상위 루트 디렉토리를 삭제할 수 있습니다.
8 - --preserve-root '/' 최상위 루트 디렉토리를 제거 하지 않습니다. (default)
9 -r, -R --recursive 디렉토리의 하위까지 모두 삭제 합니다.
10 -d --dir 비어있는 디렉토리를 제거 합니다.
11 -v --verbose rm 명령어가 완료되면 삭제 되었다는 메세지를 실시간으로 출력합니다.
12 - --help rm 명령어의 사용법을 출력합니다.
13 - --version rm 명령어의 버전을 출력합니다.

 


4. 리눅스 rm 명령어 옵션 사용법
  • rm -f 옵션 사용법
    • 지정된 파일 및 디렉토리를 삭제할 때 경고 없이 삭제 합니다.
    • 디렉토리도 함께 삭제 하려면 -r 옵션을 같이 사용합니다.
    • 경고 없이 삭제하므로 반드시 주의하여 사용하셔야 됩니다.
[ server 2022-04-12 13:24:38 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 3 user user 32 Apr 12 13:23 test1

### test1 디렉토리에 하위 파일 및 디렉토리가 존재
[ server 2022-04-12 13:24:39 ] ~/testdir
user@server # tree
.
└── test1
    ├── file1
    └── test2
        └── test3

3 directories, 1 file

### -r 옵션을 같이 사용하여 경고없이 삭제
[ server 2022-04-12 13:24:41 ] ~/testdir
user@server # rm -rf test1/

[ server 2022-04-12 13:24:52 ] ~/testdir
user@server # ls -l
total 0

  • rm -i 옵션 사용법
    • 지정된 파일 및 디렉토리를 삭제 할 때마다 삭제여부를 출력합니다.
    • 삭제 여부 출력 시 y,Y 또는 yes를 입력해야 파일을 삭제 할 수 있습니다.
### 6개의 파일 존재
[ server 2022-04-12 13:31:11 ] ~/testdir
user@server # ls -l
total 24
-rw-r--r-- 1 user user 32 Apr 12 13:30 file1
-rw-r--r-- 1 user user 40 Apr 12 13:30 file2
-rw-r--r-- 1 user user 14 Apr 12 13:30 file3
-rw-r--r-- 1 user user 32 Apr 12 13:30 file4
-rw-r--r-- 1 user user 41 Apr 12 13:31 file5
-rw-r--r-- 1 user user 41 Apr 12 13:31 file6

### 6개의 파일 삭제시 -i 옵션을 사용하여 삭제 여부 출력시 각각 다른 대답을 사용
[ server 2022-04-12 13:31:12 ] ~/testdir
user@server # rm -i *
rm: remove regular file ‘file1’? y
rm: remove regular file ‘file2’? yes
rm: remove regular file ‘file3’? ok
rm: remove regular file ‘file4’? n
rm: remove regular file ‘file5’? no
rm: remove regular file ‘file6’? asdfasdfasdf


### y 또는 yes로 입력한 값만 삭제됨
[ server 2022-04-12 13:31:31 ] ~/testdir
user@server # ls -l
total 16
-rw-r--r-- 1 user user 14 Apr 12 13:30 file3
-rw-r--r-- 1 user user 32 Apr 12 13:30 file4
-rw-r--r-- 1 user user 41 Apr 12 13:31 file5
-rw-r--r-- 1 user user 41 Apr 12 13:31 file6

  • rm -I 옵션 사용법
    • -I (대문자 i ) 옵션은 3개를 초과하는 파일 및 디렉토리를 제거하거나
      비어있지 않는 디렉토리의 하위 내용을 삭제할 때 딱 한번 삭제 여부를 출력합니다.
    • 비어있지 않는 디렉토리를 삭제하기 위해 -r 옵션을 같이 사용합니다.
    • 파일 및 디렉토리가 3개 이하 거나 비어있는 디렉토리라면 삭제 여부를 출력하지 않습니다.
[ server 2022-04-12 13:44:30 ] ~/testdir
user@server # ls -l
total 0
-rw-r--r-- 1 user user  0 Apr 12 13:44 file1
-rw-r--r-- 1 user user  0 Apr 12 13:44 file2
-rw-r--r-- 1 user user  0 Apr 12 13:44 file3
drwxr-xr-x 2 user user  6 Apr 12 13:43 test1
drwxr-xr-x 2 user user 58 Apr 12 13:43 test2

### -I 옵션을 사용하여 파일 3개를 삭제 시 삭제여부 출력 안됨
[ server 2022-04-12 13:44:39 ] ~/testdir
user@server # rm -I file1 file2 file3

### 현재 디렉토리 기준으로 test2 디렉토리의 4개의 파일이 존재
[ server 2022-04-12 13:44:31 ] ~/testdir
user@server # tree
.
└── test2
    ├── file1
    ├── file2
    ├── file3
    └── file4

2 directories, 4 files

### test2 디렉토리로 이동
[ server 2022-04-12 13:44:43 ] ~/testdir
user@server # cd test2

### 4개의 파일 존재
[ server 2022-04-12 13:45:34 ] ~/testdir/test2
user@server # ls -l
total 0
-rw-r--r-- 1 user user 0 Apr 12 13:43 file1
-rw-r--r-- 1 user user 0 Apr 12 13:43 file2
-rw-r--r-- 1 user user 0 Apr 12 13:43 file3
-rw-r--r-- 1 user user 0 Apr 12 13:43 file4

### -I 옵션을 사용하여 4개의 파일 삭제시 삭제여부 출력
[ server 2022-04-12 13:45:36 ] ~/testdir/test2
user@server # rm -I *
rm: remove 4 arguments? y

  • rm --interactive[=WHEN] 옵션 사용법
    • WHEN 값에 따라 상호대화형(사용자에게 여부를 묻는) 모드로 지정이 됩니다.
    • WHEN 값에는 never, once, always를 입력할 수 있습니다.
    • never를 입력하면 상호대화형을 사용하지 않겠다고 선언합니다.
    • once를 입력하면 -I (대문자i)옵션과 동일하게 삭제 여부를 프롬프트에 한번 출력합니다.
    • always를 입력하면 -i 옵션과 동일하게 삭제여부를 지정한 만큼 프롬프트에 출력합니다.
### 현재 디렉토리 목록
[ server 2022-04-12 14:10:49 ] ~/testdir/test2
user@server # ls -l
total 0
drwxr-xr-x 3 user user 19 Apr 12 14:10 test3

### test3 하위에 test4 디렉토리가 존재
[ server 2022-04-12 14:10:52 ] ~/testdir/test2
user@server # tree
.
└── test3
    └── test4

2 directories, 0 files

### 아래 3가지 경우는 동일한 조건을 생성하여 진행하였습니다


### never를 사용하여 상호대화형을 사용하지 않는 interactive 옵션
[ server 2022-04-12 14:11:12 ] ~/testdir/test2
user@server # rm -r --interactive=never test3

### once를 사용하여 삭제여부를 한번 출력하는 interactive 옵션
[ server 2022-04-12 14:11:31 ] ~/testdir/test2
user@server # rm -r --interactive=once test3
rm: remove 1 argument recursively? y

### always를 사용하여 삭제여부를 지정한 만큼 출력하는 interactive 옵션
[ server 2022-04-12 14:11:47 ] ~/testdir/test2
user@server # rm -r --interactive=always test3
rm: descend into directory ‘test3’? y
rm: remove directory ‘test3/test4’? y
rm: remove directory ‘test3’? y

  • rm --one-file-system 옵션 사용법
    • 디렉토리를 삭제 할 때 마운트된 파일 시스템이 존재하면 삭제 하지 않습니다.
### mount 명령어를 이용해 장치 /dev/sdb1을 test_mount라는 디렉토리에 마운트

[ server 2022-04-12 14:28:41 ] ~/testdir
user@server # mount /dev/sdb1 test_mount/

[ server 2022-04-12 14:29:24 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 6 Apr 12 14:28 test_mount
drwxr-xr-x 2 user user 6 Apr 12 14:29 test3

### 현재 경로 출력

[ server 2022-04-12 14:29:24 ] ~/testdir
user@server # pwd
/home/usergroup/user/testdir

### 현재경로를 --one-file-system 옵션을 이용하여 삭제하면 마운트 된 디렉토리는 삭제되지 않음

[ server 2022-04-12 14:29:33 ] ~/testdir
user@server # rm -rf --one-file-system /home/usergroup/user/testdir
rm: skipping ‘/home/usergroup/user/testdir/test_mount’, since it's on a different device

[ server 2022-04-12 14:30:17 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 6 Apr 12 14:28 test_mount

  • rm --no-preserve-root 옵션과 rm --preserve-root 옵션 설명
    • 두 옵션의 차이점은 '/' 최상위 디렉토리 루트 디렉토리의 삭제를 방지하냐 안 하냐의 차이를 나타냅니다.
    • rm -rf는 root계정에서 사용할 시 모든 권한을 가지고 있어 삭제 명령을 잘 못 입력하였을 때
      돌이킬 수 없는 실수의 사고를 방지하기 위해 존재합니다. 아래는 올바른 예시를 설명합니다.
### /home/apple 디렉토리에 test1 디렉토리와 file1 파일이 존재
[ server 2022-04-12 14:45:05 ] /home/apple
root@server # ls -l
total 0
-rw-r--r-- 1 root root 0 Apr 12 14:45 file1
drwxr-xr-x 2 root root 6 Apr 12 14:45 test1

### rm -rf 옵션을 사용하여 현재 디렉토리(.)의 모든(*) 파일 및 디렉토리를 삭제
[ server 2022-04-12 14:45:05 ] /home/apple
root@server # rm -rf ./*

[ server 2022-04-12 14:45:25 ] /home/apple
root@server # ls -l
total 0
  • rm -rf ./{파일 및 디렉토리}를 입력해야 되지만 실수로 rm -rf / 명령을 입력해
    현재디렉토리(.)의 표시가 빠지면 명령어는 최상위 디렉토리부터 삭제를 하여 시스템의 중요한 파일을
    삭제하게 됩니다. 
  • 즉, 위와 같은 명령을 방지하기 위해 --preserve-root 옵션이 기본값으로 설정되어있어 위와 같은 실수를 해도
    실행을 거절하게 합니다.
  • 반대로 --no-preserve-root의 옵션을 사용해 파일 및 디렉토리를 삭제하게 되면 시스템 설정 및 명령어도
    삭제되기 때문에 복구가 어렵고 다른 명령어가 실행되지 않을 수 있습니다.
  • 따라서 현재 경로의 파일 및 디렉토리를 삭제할 시 아래와 같은 명령어 사용하셔야 됩니다.
### -r옵션과 -f옵션을 사용할 시 반드시 삭제할 디렉토리로 이동 후 아래와 같은 명령을 합니다

### 지정한 디렉토리로 이동
[ xcat 2022-04-12 14:53:44 ] ~
root@xcat # cd /home/apple

[ xcat 2022-04-12 14:53:48 ] /home/apple
root@xcat # ls -l
total 0
-rw-r--r-- 1 root root 0 Apr 12 14:53 file1
drwxr-xr-x 2 root root 6 Apr 12 14:53 test1

### '/' 최상위 루트 디렉토리 및 디렉토리 구분자 미사용, *(모든 문자를 매칭) 사용
[ xcat 2022-04-12 14:53:49 ] /home/apple
root@xcat # rm -rf *

[ xcat 2022-04-12 14:53:53 ] /home/apple
root@xcat # ls -l
total 0

  • rm -r 옵션 사용법
    • -r 옵션은 지정된 디렉토리의 하위 내용까지 삭제하는 옵션입니다.
      즉, 비어있는 디렉토리 또는 비어있지 않는 디렉토리를 삭제 할 때 사용합니다.
### file1이 존재하는 test1 디렉토리와 비어있는 test2 디렉토리
[ server 2022-04-12 14:57:22 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 19 Apr 12 14:57 test1
drwxr-xr-x 2 user user  6 Apr 12 14:57 test2

[ server 2022-04-12 14:57:23 ] ~/testdir
user@server # tree
.
├── test1
│   └── file1
└── test2

2 directories, 1 file

### -r 옵션을 사용해 파일이 존재하는 디렉토리 삭제
[ server 2022-04-12 14:57:26 ] ~/testdir
user@server # rm -r test1

### -r 옵션을 사용해 비어있는 디렉토리 삭제
[ server 2022-04-12 14:57:31 ] ~/testdir
user@server # rm -r test2

[ server 2022-04-12 14:57:32 ] ~/testdir
user@server # ls -l
total 0

  • rm -d 옵션 사용법
    • 비어있는 디렉토리를 삭제하는 옵션입니다. (rmdir 명령어와 동일)
      즉, 비어있지 않는 디렉토리는 삭제하지 못해 -r 옵션을 사용해야 됩니다.
### file1이 존재하는 test1 디렉토리와 비어있는 test2 디렉토리
[ server 2022-04-12 15:02:11 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 19 Apr 12 15:02 test1
drwxr-xr-x 2 user user  6 Apr 12 15:01 test2

[ server 2022-04-12 15:02:12 ] ~/testdir
user@server # tree
.
├── test1
│   └── file1
└── test2

2 directories, 1 file

### -d 옵션으로 파일이 존재하는 디렉토리는 삭제하지 못함
[ server 2022-04-12 15:02:14 ] ~/testdir
user@server # rm -d test1
rm: cannot remove ‘test1’: Directory not empty

### -d 옵션으로 비어있는 디렉토리는 삭제가능
[ server 2022-04-12 15:02:21 ] ~/testdir
user@server # rm -d test2

[ server 2022-04-12 15:02:23 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 19 Apr 12 15:02 test1

  • rm -v 옵션 사용법
    • -v 옵션은 rm 명령어가 완료하면 삭제되었다는 메시지가 화면에 출력하게 됩니다.
    • rm 명령어의 옵션을 사용하여 조건에 맞지 않아 rm 명령어가 완료되지 않았다면
      완료되었다는 메시지는 출력되지 않습니다.
    • 옵션 조건에 맞게 사용한다면 다른 옵션과 같이 사용하여 삭제가 완료된 파일 및 디렉토리의
      삭제 결과를 프롬프트에 출력하여 볼 수 있습니다.
[ server 2022-04-12 15:05:35 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 19 Apr 12 15:05 test1
drwxr-xr-x 2 user user  6 Apr 12 15:05 test2

[ server 2022-04-12 15:05:37 ] ~/testdir
user@server # tree
.
├── test1
│   └── file1
└── test2

2 directories, 1 file

### test1디렉토리가 -d 옵션 때문에 비어있지 않아 삭제되지 않음
[ server 2022-04-12 15:05:40 ] ~/testdir
user@server # rm -vd test1
rm: cannot remove ‘test1’: Directory not empty

### 비어있는 디렉토리를 삭제하여 rm 명령어 완료 후 -v 옵션 때문에 삭제 메세지 출력
[ server 2022-04-12 15:05:49 ] ~/testdir
user@server # rm -vd test2
removed directory: ‘test2’

[ server 2022-04-12 15:05:53 ] ~/testdir
user@server # ls -l
total 0
drwxr-xr-x 2 user user 19 Apr 12 15:05 test1

  • rm --help 옵션과 --version 옵션
    • --help 옵션은 rm 명령어의 사용법을 출력하고 --version은 rm 명령어의 버전을 출력합니다.
### --help 옵션 

[ server 2022-04-12 15:11:04 ] ~/testdir
user@server # rm --help
Usage: rm [OPTION]... FILE...
Remove (unlink) the FILE(s).

  -f, --force           ignore nonexistent files and arguments, never prompt
  -i                    prompt before every removal
  -I                    prompt once before removing more than three files, or
                          when removing recursively; less intrusive than -i,
                          while still giving protection against most mistakes
      --interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
                          always (-i); without WHEN, prompt always
      --one-file-system  when removing a hierarchy recursively, skip any
                          directory that is on a file system different from
                          that of the corresponding command line argument
      --no-preserve-root  do not treat '/' specially
      --preserve-root   do not remove '/' (default)
  -r, -R, --recursive   remove directories and their contents recursively
  -d, --dir             remove empty directories
  -v, --verbose         explain what is being done
      --help     display this help and exit
      --version  output version information and exit

By default, rm does not remove directories.  Use the --recursive (-r or -R)
option to remove each listed directory, too, along with all of its contents.

To remove a file whose name starts with a '-', for example '-foo',
use one of these commands:
  rm -- -foo

  rm ./-foo

Note that if you use rm to remove a file, it might be possible to recover
some of its contents, given sufficient expertise and/or time.  For greater
assurance that the contents are truly unrecoverable, consider using shred.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'rm invocation'


### --version 옵션

[ server 2022-04-12 15:11:09 ] ~/testdir
user@server # rm --version
rm (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Richard M. Stallman,
and Jim Meyering.


 

반응형
그리드형

댓글