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


    2.9 rm:删除文件和目录

    2.9.1 命令详解

    【命令星级】 ★★★★★

    【功能说明】

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

    【语法格式】

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

    ​ **说明:**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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    ​ **范例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命令讲解中介绍过了,这里不再讲述。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

    ​ **提示:**使用-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参数了,这样做会很危险,也没有必要。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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。
    
    • 1
    • 2

    ​ 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ​ 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/ *	#会把当前目录(根)下的目录、文件全部删除。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

    2.10 rmdir:删除空目录

    2.10.1 命令详解

    【命令星级】 ★☆☆☆☆

    【功能说明】

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

    【语法格式】

    rmdir [option] [directory]
    rmdir [选项] [目录]
    
    • 1
    • 2

    ​ **说明:**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参数递归删除空目录了。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ​ **范例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’
    #当删除多个空目录时,目录名之间使用空格隔开。
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

  • 相关阅读:
    物联网对接协议
    前端实现RSA非对称加密及生成RSA公私密钥
    入门ElasticSearch :为什么选择ES作为搜索引擎?
    元类的使用
    Vue3如何封装组件?
    有限元仿真分析误差来源之边界条件设置-动载荷
    linux环境下安装jenkins(详细图文教程)
    php redis分布式锁
    【Java面试】Zookeeper中的Watch机制的原理?
    嵌入式&C++转java 刷题day2
  • 原文地址:https://blog.csdn.net/qq_25599925/article/details/125351319