专栏导航
上一篇:第2章:Linux 基础,用 touch 命令创建文件
本节前言
对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点,请你自行查阅。
我呢,也会提到一部分的参考课节。但是呢,你不应该依赖于我的主动提及。最好呢,你自己能够多去了解和查看本专栏目录。
另外呢,本专栏是一个整体,是用来系统化地讲解 Linux 0.12 内核的一套教程。所以呢,也需要你在学习本节课程的时候,注意专栏的体系完整性。
比如软件安装,我们需要在整个专栏中,安装一套软件,那你如果是为了学习 Linux 0.12 内核,那么,你就需要跟随着本教程,安装好一整套软件,而不可以孤立地看着某个课节。
比如说,我们的专栏中,会讲解 Bochs 模拟器 的安装。这个软件的安装,就需要在我们专栏中所指定的乌班图 26.04.1 版本里面进行。脱离了这个系统版本,你在其它的版本的乌班图里面,或者是在其它的 Linux 发行版里面来安装,那么,你可能会安装不上。
所以,请大家在学习本专栏的课节的时候,务必要注意本专栏的体系完整性,注意查看本专栏的目录。
本节,我们来讲解 rm 命令。
学习本节知识,需要你具备以下两个先修课节的知识。
参考课节:第2章:Linux 基础,mkdir 命令的简单入门
参考课节:第2章:Linux 基础,用 touch 命令创建文件
我们开始。
一. rm 命令
(一)准备工作
首先呢,还是请大家打开自己的乌班图虚拟机。
然后呢,我们双击桌面上的【主目录】图标,进入【主文件夹】里面。在 Linux 的世界里,【文件夹】和【目录】是同义词。所以,【主目录】和【主文件夹】是同一个东西。
然后呢,我们在【主文件夹】里面双击进入【文档】文件夹。然后呢,我们在【文档】文件夹里面,打开一个终端,并将终端处理成下图所示的纯净状态。

图1
接下来呢,我们来看一下【文档】文件夹的情况。

图2
我这里,它是有着图2 所示的文件和文件夹。你那里的情况,可能与我的不同。
接下来呢,我们将按下【Ctrl + A】快捷键,全选其中的东西。然后呢,松开快捷键,然后按住 Ctrl 键不松开,然后单击【bochs-info.txt】文件,将这个文件排除全选的范围,然后我们点击键盘上的 Delete 键,将选中的文件和文件夹都给删除,过程如下图所示。

图3

图4
在图4 的左侧,有一个【回收站】字样,单击它,来到回收站,如下图所示。

图5
单击图5 右上角的【清空回收站】按钮,弹出下图所示的界面。

图6
在图6 中,点击【清空回收站】按钮,结果如下图所示。

图7
然后呢,我们先点击图7 左上方的【主文件夹】按钮,回到主文件夹界面。然后呢,双击【文档】图标,再次回到【主文件夹/文档】里面,结果如下图所示。

图8
然后呢,我们在图1 所示的终端里面,执行下述命令。

图9
结果呢,【文档】文件夹里面,会创建【01.txt】、【02.txt】和【03.txt】三个文件。如下图所示。

图10
(二)基本的 rm 命令用法
命令格式:rm + 一个或多个空格 + file_name
命令效果:如果终端所在的工作目录中,存在着 file_name 这个文件,则删除这个文件。
关于工作目录,我们之前有讲过。如果你忘了,可以参考下述课节来学习它。
参考课节:第2章:Linux 基础,pwd 命令
参考课节:第2章:Linux 基础,mkdir 命令的简单入门
接下来呢,我们来执行下图的红色框线所示的命令。

图11
结果如下图所示。

图12
在图12 里面,我们看到,【01.txt】已经不见了。它已经是被之前的【rm 01.txt】命令给删除了。
(三)删除多个文件
命令格式:rm + 一个或多个空格 + file_name1 + 一个或多个空格 + file_name2 ......
命令效果:如果终端所在的工作目录中,存在着 file_name1、file_name2 等文件,则删除这些文件。
接下来呢,我们在图11 所示的终端里面,执行下图的红色框线所示的命令。

图13
结果如下图所示。

图14
在图14 里面,我们看到,【02.txt】和【03.txt】也被删除了。
(四)在 rm 命令中使用 -f 参数
我们在图13 所示的终端里,执行下图的红色框线所示的命令。

图15
结果,就会是创建【04.txt】、【05.txt】和【06.txt】三个文件。
然后呢,我们在终端里面输入下图的红色框线所示的命令,先不要按回车键。

图16
在图16 里面,在文件列表里有一个 01.txt,你没有看错,我的确是让大家输入这个命令。然后呢,我们在终端里按下回车键,结果如下图所示。

图17
在图17 的红色框线的位置,我们看到,终端给出了警告信息,说 01.txt 这个文件,【文档】文件夹里面没有。
然后呢,你可以自行查看【文档】文件夹,04.txt 则是正常地被删除掉了。
在我们正常使用 rm 命令时,若是文件名列表的部分,有一个文件不存在,则终端都会给出警告信息,告知我们某某文件不存在。
我们可以给 rm 命令加上一个 -f 参数,使得说,即使 rm 命令的文件名列表里面不存在某个文件,终端也不会给出警告信息。
下面,我们给出加上 -f 参数的 rm 命令格式。
命令格式:rm + 一个或多个空格 + -f + 一个或多个空格 + file_name1 + 一个或多个空格 + file_name2 ......
命令效果:如果终端所在的工作目录中,存在着 file_name1、file_name2 等文件,则删除这些文件。假定文件名列表部分不存在某些文件,则终端也不会给出警告信息
注意:在此命令格式中,文件名列表部分,可以有多个文件,也可以只有一个文件。
也就是说,你可以执行【rm -f doc_01.txt doc_02.txt】命令,也可以执行【rm -f doc_03.txt】命令,这两种写法都是合法的命令。
接下来呢,我们在图17 所示的终端里面,执行下图的红色框线所示的命令。

图18
你可以自行查看【文档】文件夹,05.txt 会被正常地删除掉。而【文档】文件夹里面原本就没有【11.txt】文件,我们的这条命令,不会真的去删除一个不存在的文件。然后呢,终端里面也并没有给出警告信息。
加上了 -f 参数以后,rm 命令会帮助我们删除一些文件,无论文件名列表是否全部存在,都不会给出警告信息。
在这里,-f 参数的 f,它是【force】的意思,强力删除,强制删除。
这个 -f 参数有用吗?
有用的。
有的时候,我们可能会希望删除某些个文件。可是呢,执行了一次以后,我们就去收快递去了。当再次回到电脑前的时候,我们自己也忘记了是否已执行过删除某些文件的命令,这个时候,保险起见,我们还是需要再次执行删除命令。然后呢,我们也希望,无论之前是否执行过删除命令,本次都不要弹出警告信息。
以上内容,大概就是 rm 命令的基础用法了。
二. 删除含有文件的文件夹
之前,我们介绍过 rmdir 命令,它的功能,是删除一个空文件夹。可是,有时,我们也希望,无论此文件夹是否为空,我们也想要删除此文件夹,如果里面包含文件,也一并将其中的文件都给删除掉。
如何做呢?
我们给 rm 命令加上 -R 参数,可以完成此任务。
我们来看一下【文档】文件夹的情况。

图19
如图19 所示,【文档】文件夹里面,有一个 【06.txt】文件。
接下来呢,我们在终端里面,执行一次下图的红色框线所示的命令。

图20
结果呢,会在【文档】文件夹里面,新建一个 dir_tmp 文件夹。此时,这个文件夹是一个空文件夹。
接下来呢,我们在【文档】文件夹里面,单击【06.txt】文件,然后按下【Ctrl + X】快捷键,将 06.txt 剪切到剪贴板里面,然后呢,我们双击进入【dir_tmp】文件夹里面,然后按【Ctrl + V】快捷键,将【06.txt】剪切到【dir_tmp】文件夹里面,如下图所示。

图21
然后呢,我们来点击图21 中,上方的红色框线的【文档】字样,回到【文档】文件夹里面,如下图所示。

图22
接下来呢,我们在终端里面执行下述命令。
rm -R dir_tmp
结果如下面的两个图所示。

图23

图24
如图24 所示,dir_tmp 文件夹连同它里面的 06.txt 文件都给删除掉了。
接下来呢,我们在终端里面依次执行下述两条命令。
mkdir dir_01
touch 07.txt 08.txt 09.txt
结果如下面的两个图所示。

图25
执行的结果,是在【文档】文件夹里面创建一个 dir01 文件夹,创建 07.txt、08.txt 和 09.txt 三个文件。
然后呢,我们用鼠标选中 07.txt 和 08.txt,然后按下【Ctrl + X】快捷键,将这俩文件剪切到剪贴板。然后呢,我们双击进入 dir_01 文件夹里面,然后按下【Ctrl + V】快捷键,将剪贴板里的 07.txt 和 08.txt 粘贴到 dir_01 文件夹里面,结果如下图所示。

图26
接下来呢,我们在图26 里面,单击红色框线中的【文档】字样,回到【文档】文件夹,结果如下图所示。

图27
如图27 所示,【文档】文件夹里面,07.txt 和 08.txt 都不见了,09.txt 还存在着,dir_01 文件夹也还存在着。
接下来呢,我们要来执行一条命令,以便将 dir_01 文件夹连同它里面的两个文件,以及 09.txt 文件,都给删除掉。
我们可以采用下述的块引用中的命令。
rm -R dir_01 09.txt
这是比较精准的删除命令。
我们也可以采用下述命令。
rm -R dir_01 07.txt 09.txt
采用这个命令,大家可以想到,终端会给出警告信息。因为,此时,工作目录【文档】文件夹里面,此时并不存在 07.txt 文件,而存在着 09.txt 文件。
为了执行此命令,而又不想看到警告信息,我们可以给 rm 命令再加上 -f 参数。你可以采用下面两行之一,来执行 rm 命令。
rm -R -f dir_01 07.txt 09.txt
rm -f -R dir_01 07.txt 09.txt
也就是说,-f 参数和 -R 参数的位置可以颠倒顺序。
选择其中的一个命令来执行,执行的结果如下面的两个图所示。

图28

图29
如图29 所示,dir_01 连同它里面的文件被删除了,09.txt 也被顺利地删除了。至于 07.txt 文件,虽说工作目录【文档】文件夹里面并不存在它,但是呢,终端里并未给出警告信息。
三. 安全提示
**rm 命令具有破坏性,删除的文件不会进入回收站,而是被永久删除,无法恢复。**在使用 rm 命令之前,请务必确认以下几点:
- 确认路径:执行删除前,先用 pwd 命令确认当前工作目录,再仔细核对要删除的文件或文件夹名称,避免误删。
- 谨慎使用 -R 参数:-R 会递归删除文件夹及其内部所有内容,威力很大,使用前务必确认该文件夹确实不再需要。
- 谨慎使用 -f 参数:-f 会强制删除且不给出警告,一旦误删,连提示都没有,建议在重要文件上慎用。
- 不要轻易使用 rm -R -f /:这条命令会尝试删除根目录下的所有内容,极其危险,请绝对不要执行。
- 重要数据先备份:对于重要的文件或文件夹,建议先复制到其他位置备份,再执行删除操作。
四. rm 命令的通用语法
综合本节内容,rm 命令的通用语法可以概括为:
rm 选项 文件或文件夹名1 文件或文件夹名2 ......
其中,常用的选项有:
- -f:强制删除,即使文件不存在也不会给出警告信息。
- -R:递归删除,可以删除文件夹及其内部的所有内容。
需要注意的是,-f 和 -R 选项可以组合使用,且两者的书写顺序可以颠倒,例如【rm -R -f dir_01 07.txt 09.txt】和【rm -f -R dir_01 07.txt 09.txt】都是合法的写法。
五. 小结
到了这里,rm 命令,我们就算是讲完了。
本身不难。
还是要强调一点,本节所讲的 rm 命令,所删除的,仅仅是工作目录中的文件或文件夹。实际上,rm 命令也可以删除非工作目录中的文件或文件夹。不过,那得在我们讲完了 Linux 的文件目录结构以后,才能去讲。
结束语
到了这里,其实,我们已经是学习了一些个 Linux 命令了。这些个命令,不足以是你成为 Linux 大神,但是呢,简单地在 Linux 里面玩,算是可以做到的。
关于 Linux 操作命令,我们还得是学习一些个课节。
你需要耐住性子,才能够学好本专栏啊。