L8.linux命令每日一练 -- 第二章 文件和目录操作命令 -- rm和rmdir命令

2.9 rm:删除文件和目录

2.9.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ rm命令可以理解为英文单词remove的缩写,其功能是删除一个或多个文件或目录(remove files or directories)。这是Linux系统里最危险的命令之一,请慎重使用。

【语法格式】

rm [option] [file]
rm [选项] [<文件或目录>]

​ **说明:**rm命令以及后面的选项和文件目录,每个元素之间都至少要有一个空格。

【选项说明】

​ 表2-12针对rm命令的参数选项进行了说明。

​ 表2-12 rm命令的参数选项及说明

在这里插入图片描述

2.9.2 使用范例

​ 示例准备代码如下:

[root@centos7 ~]# mkdir -p /data/dir{1..3}	#使用绝对路径创建目录。
[root@centos7 ~]# touch /data/file{1..3}.txt
[root@centos7 ~]# tree /data/
data/
├── dir1
├── dir2
├── dir3
├── file1.txt
├── file2.txt
└── file3.txt

3 directories, 3 files
[root@centos7 ~]# cd /data
[root@centos7 /data]# ls
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt

​ **范例2-45:**不带参数删除的实践示例。

[root@centos7 /data]# rm file3.txt 
rm: remove regular empty file ‘file3.txt’? n
#若输入y就会删除文件,若不想删除则输入n。
[root@centos7 /data]# alias rm
alias rm='rm -i'	#上面会出现提示的原因是rm被设置了系统别名,默认使用了-i参数。
#屏蔽别名的方法已经在5.2.7节的cp命令讲解中介绍过了,这里不再讲述。

​ **范例2-46:**强制删除的实践示例。

[root@centos7 /data]# rm -f file3.txt #-f参数强制删除,不提示。
[root@centos7 /data]# ls
dir1  dir2  dir3  file1.txt  file2.txt

​ **提示:**使用-f参数强制删除会直接覆盖系统定义的别名。

​ **范例2-47:**递归删除的实践示例。

[root@centos7 /data]# mkdir -p dir1/a/b
[root@centos7 /data]# tree dir1
dir1
└── a
    └── b

2 directories, 0 files
[root@centos7 /data]# rm dir1	#若无参数就会无法删除目录。
rm: cannot remove ‘dir1’: Is a directory
[root@centos7 /data]# rm -r dir1	#使用-r可以递归删除,但有确认提示,可以使用-f进行强制删除。
rm: descend into directory ‘dir1’? y
rm: descend into directory ‘dir1/a’? y
rm: remove directory ‘dir1/a/b’? n
rm: remove directory ‘dir1/a’? n
rm: remove directory ‘dir1’? n
#备注:若加上-f参数就不需要一一确认了,例如rm -rf dir1。若删除的对象不是目录(文件)就不要再使用-r参数了,这样做会很危险,也没有必要。

2.9.3 有关删除的实践经验分享

常在河边走,哪有不湿鞋!但如果能遵守下面的要领就可以少湿鞋甚至不湿鞋!

​ 1)用mv替代rm,不要着急删除,而是先移动到回收站“/tmp”。

​ 2)删除前请务必做好备份,最好是异机备份,出现问题随时可还原。

​ 3)如果非要删除,则请用find替代rm,包括通过系统定时任务等清理文件方法。

​ 下面是在生产环境中删除文件或目录的教安全的方法,命令如下:

find . -type f -name "*.txt" -mtime +7|xargs rm -f	#与xargs搭配使用,具体用法见find命令的详细讲解。
find . -type f -mtime +7 -exec rm {
    
    } \;		#使用find的exec。

​ 4)如果非要通过rm命令删除,则请先切换目录再删,能不适用通配符的就尽量不用通配符。对文件的删除禁止使用"rm -rf 文件名"方法,因为“rm -rf”误删除目录时并不会有提示,该操作非常危险。最多使用"rm -f 文件名"方法,推荐使用“rm 文件名”方法。

[root@centos7 /data]# mkdir /oldboy
[root@centos7 /data]# touch /oldboy/test{1..2}
[root@centos7 /data]# cd oldboy/
[root@centos7 /data/oldboy]# rm -f test{1..2}
[root@centos7 /data/oldboy]# ls

​ 5)如果非要使用通配符,则请按下面的方法进行:

[root@centos7 /data]# cd /oldboy/
[root@centos7 /data/oldboy]# touch a b
[root@centos7 /data/oldboy]# ls
a  b
[root@centos7 /data/oldboy]# rm -f ./*	#加上“./”。禁止使用rm -rf /oldboy/*,这个命令如果多了空格可能会带来灾难。
[root@centos7 /data/oldboy]# ls
[root@centos7 /oldboy]# touch a b 
[root@centos7 /oldboy]# ls
a  b
[root@centos7 /oldboy]# rm -rf /oldboy/*
#“*”的前面如果不小心多了空格,则会删除当前目录的所有内容,例如下面的命令。
[root@centos7 /oldboy]# rm -rf /oldboy/ *	#会把当前目录(根)下的目录、文件全部删除。

​ 6)额外再补充一点,要慎用“rsync-delete”。

​ 多数情况下,删除后是可以恢复的(例如,可通过恢复工具ext3grep来实现),但一定会影响业务,例如,造成停机,或者数据丢失了较长时间,用户访问不了等。未雨绸缪永远比发生了再解决好得多。

2.10 rmdir:删除空目录

2.10.1 命令详解

【命令星级】 ★☆☆☆☆

【功能说明】

​ rmdir命令用于删除空目录(remove empty directories),当目录不为空时,命令不起作用。

【语法格式】

rmdir [option] [directory]
rmdir [选项] [目录]

​ **说明:**rmdir命令以及后面的选项和文件目录,每个元素之间都至少要有一个空格,且命令后面只能接目录。

【选项说明】

​ 表2-13针对该命令的参数选项进行了说明。

​ 表2-13 rmdir命令的参数选项及说明

在这里插入图片描述

2.10.2 使用范例

​ **范例2-48:**不能删除非空目录。

[root@centos7 ~]# mkdir -p dir/a/b
[root@centos7 ~]# tree dir/
dir/
└── a
    └── b

2 directories, 0 files
[root@centos7 ~]# rmdir dir/
rmdir: failed to remove ‘dir/’: Directory not empty
#目录不为空,无法删除。
#如果目录下有普通文件,则需要先将这些普通文件mv或rm。如果只剩下空目录,就可以使用-p参数递归删除空目录了。

​ **范例2-49:**参数-p递归删除空目录。

[root@centos7 ~]# rmdir -pv dir/a/b/	#递归删除还是需要将所有目录结构都列出来。
rmdir: removing directory, ‘dir/a/b/’
rmdir: removing directory, ‘dir/a’
rmdir: removing directory, ‘dir’
#当删除多个空目录时,目录名之间使用空格隔开。

​ **提示:**rmdir命令在实际工作中使用的极少。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/125351319