1. 命令介绍
rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,。因为一旦删除了一个文件,就无法再恢复它。否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
2. 命令格式
rm [OPTION]... FILE...
3. 命令功能
删除一个目录中的一个或多个文件或目录,如果没有使用 -r
选项,则rm不会删除目录。
4. 常用选项
选项 | 含义 |
---|---|
-d | 直接把欲删除的目录的硬连接数据删除成0,删除该目录; |
-f | 强制删除文件或目录; |
-i | 删除已有文件或目录之前先询问用户; |
-r或-R | 递归处理,将指定目录下的所有文件与子目录一并处理; |
-v | 显示指令的详细执行过程。 |
5. 常用范例
- 删除文件file,系统会先询问是否删除。
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1482 May 24 18:16 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 13 17:57 test01.log
-rw-r--r-- 1 root root 0 Nov 13 17:57 test02.log
drwxr-xr-x. 7 root root 76 Nov 12 18:28 test1
drwxr-xr-x. 3 root root 20 Nov 12 18:26 test2
drwx------. 2 root root 6 Nov 12 18:31 test3
[root@localhost ~]# rm test01.log
rm: remove regular empty file ‘test01.log’? y
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1482 May 24 18:16 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 13 17:57 test02.log
drwxr-xr-x. 7 root root 76 Nov 12 18:28 test1
drwxr-xr-x. 3 root root 20 Nov 12 18:26 test2
drwx------. 2 root root 6 Nov 12 18:31 test3
输入rm log.log命令后,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。
为什么执行rm
命令是没有加-i
选项也会提示是否删除呢?
这是因为现在执行的rm
命令是使用alisa
命令查看会发现alias rm='rm -i'
,也就是我们现在执行的 rm
命令就是添加了-i
选项的命令,如果使用/bin/rm
执行删除则不会后提示
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1482 May 24 18:16 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 13 17:57 test02.log
drwxr-xr-x. 7 root root 76 Nov 12 18:28 test1
drwxr-xr-x. 3 root root 20 Nov 12 18:26 test2
drwx------. 2 root root 6 Nov 12 18:31 test3
[root@localhost ~]# /bin/rm test02.log
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1482 May 24 18:16 anaconda-ks.cfg
drwxr-xr-x. 7 root root 76 Nov 12 18:28 test1
drwxr-xr-x. 3 root root 20 Nov 12 18:26 test2
drwx------. 2 root root 6 Nov 12 18:31 test3
- 强行删除file,系统不再提示。
[root@localhost ~]# touch test0{1..3}.log
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1482 May 24 18:16 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 14 23:09 test01.log
-rw-r--r-- 1 root root 0 Nov 14 23:09 test02.log
-rw-r--r-- 1 root root 0 Nov 14 23:09 test03.log
drwxr-xr-x. 7 root root 76 Nov 12 18:28 test1
drwxr-xr-x. 3 root root 20 Nov 12 18:26 test2
drwx------. 2 root root 6 Nov 12 18:31 test3
[root@localhost ~]# rm -f test01.log
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1482 May 24 18:16 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 14 23:09 test02.log
-rw-r--r-- 1 root root 0 Nov 14 23:09 test03.log
drwxr-xr-x. 7 root root 76 Nov 12 18:28 test1
drwxr-xr-x. 3 root root 20 Nov 12 18:26 test2
drwx------. 2 root root 6 Nov 12 18:31 test3
- 删除目录下所有文件
[root@localhost ~]# ll test1
total 0
-rw-r--r-- 1 root root 0 Nov 14 23:14 1.txt
-rw-r--r-- 1 root root 0 Nov 14 23:14 2.txt
-rw-r--r-- 1 root root 0 Nov 14 23:14 3.txt
-rw-r--r-- 1 root root 0 Nov 14 23:14 4.txt
[root@localhost ~]# rm -r test1
rm: descend into directory ‘test1’? y
rm: remove regular empty file ‘test1/1.txt’? y
rm: remove regular empty file ‘test1/2.txt’? y
rm: remove regular empty file ‘test1/3.txt’? y
rm: remove regular empty file ‘test1/4.txt’? y
rm: remove directory ‘test1’? y
[root@localhost ~]# ll test1
ls: cannot access test1: No such file or directory
可以看到当我们删除目录的时候,会对目录下所有的文件进行询问是否要删除,如果文件太多是不是太麻烦,解决方法如下:
[root@localhost ~]# mkdir test1
[root@localhost ~]# touch test1/{1..4}.txt
[root@localhost ~]# ll test1
total 0
-rw-r--r-- 1 root root 0 Nov 14 23:19 1.txt
-rw-r--r-- 1 root root 0 Nov 14 23:19 2.txt
-rw-r--r-- 1 root root 0 Nov 14 23:19 3.txt
-rw-r--r-- 1 root root 0 Nov 14 23:19 4.txt
[root@localhost ~]# rm -fr test1
[root@localhost ~]# ls test1
ls: cannot access test1: No such file or directory
网友评论