8 个你不一定全都了解的 rm 命令示例
创始人
2024-03-01 21:44:58
0

删除文件和复制/移动文件一样,都是很基础的操作。在 Linux 中,有一个专门的命令 rm,可用于完成所有删除相关的操作。在本文中,我们将用些容易理解的例子来讨论这个命令的基本使用。

但在我们开始前,值得指出的是本文所有示例都在 Ubuntu 16.04 LTS 中测试过。

Linux rm 命令概述

通俗的讲,我们可以认为 rm 命令是用于删除文件和目录的。下面是此命令的语法:

rm [选项]... [要删除的文件/目录]...

下面是命令使用说明:

GUN 版本 rm 命令的手册文档。rm 删除每个指定的文件,默认情况下不删除目录。

当删除的文件超过三个或者提供了选项 -r-R--recursive(LCTT 译注:表示递归删除目录中的文件)时,如果给出 -I(LCTT 译注:大写的 I)或 --interactive=once 选项(LCTT 译注:表示开启交互一次),则 rm 命令会提示用户是否继续整个删除操作,如果用户回应不是确认(LCTT 译注:即没有回复 y),则整个命令立刻终止。

另外,如果被删除文件是不可写的,标准输入是终端,这时如果没有提供 -f--force 选项,或者提供了 -i(LCTT 译注:小写的 i) 或 --interactive=always 选项,rm 会提示用户是否要删除此文件,如果用户回应不是确认(LCTT 译注:即没有回复 y),则跳过此文件。

下面这些问答式例子会让你更好的理解这个命令的使用。

Q1. 如何用 rm 命令删除文件?

这是非常简单和直观的。你只需要把文件名(如果文件不是在当前目录中,则还需要添加文件路径)传入给 rm 命令即可。

(LCTT 译注:可以用空格隔开传入多个文件名称。)

rm 文件1 文件2 ... 

如:

rm testfile.txt

How to remove files using rm command

Q2. 如何用 rm 命令删除目录?

如果你试图删除一个目录,你需要提供 -r 选项。否则 rm 会抛出一个错误告诉你正试图删除一个目录。

(LCTT 译注:-r 表示递归地删除目录下的所有文件和目录。)

rm -r [目录名称]

如:

rm -r testdir

How to remove directories using rm command

Q3. 如何让删除操作前有确认提示?

如果你希望在每个删除操作完成前都有确认提示,可以使用 -i 选项。

rm -i [文件/目录]

比如,你想要删除一个目录“testdir”,但需要每个删除操作都有确认提示,你可以这么做:

rm -r -i testdir

How to make rm prompt before every removal

Q4. 如何让 rm 忽略不存在的文件或目录?

如果你删除一个不存在的文件或目录时,rm 命令会抛出一个错误,如:

Linux rm command example

然而,如果你愿意,你可以使用 -f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示。

rm -f [文件...]

How to force rm to ignore nonexistent files

Q5. 如何让 rm 仅在某些场景下确认删除?

选项 -I,可保证在删除超过 3 个文件时或递归删除时(LCTT 译注: 如删除目录)仅提示一次确认。

比如,下面的截图展示了 -I 选项的作用——当两个文件被删除时没有提示,当超过 3 个文件时会有提示。

How to make rm prompt only in some scenarios

Q6. 当删除根目录是 rm 是如何工作的?

当然,删除根目录(/)是 Linux 用户最不想要的操作。这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。(LCTT 译注:早期的 rm 命令并无此预防行为。)

How rm works when dealing with root directory

然而,如果你非得完成这个操作,你需要使用 --no-preserve-root 选项。当提供此选项,rm 就不会特殊处理根目录(/)了。

假如你想知道在哪些场景下 Linux 用户会删除他们的根目录,点击这里

Q7. 如何让 rm 仅删除空目录?

假如你需要 rm 在删除目录时仅删除空目录,你可以使用 -d 选项。

rm -d [目录]

下面的截图展示 -d 选项的用途——仅空目录被删除了。

How to make rm only remove empty directories

Q8. 如何让 rm 显示当前删除操作的详情?

如果你想 rm 显示当前操作完成时的详细情况,使用 -v 选项可以做到。

rm -v [文件/目录]

如:

How to force rm to emit details of operation it is performing

结论

考虑到 rm 命令提供的功能,可以说其是 Linux 中使用频率最高的命令之一了(就像 cpmv 一样)。在本文中,我们涉及到了其提供的几乎所有主要选项。rm 命令有些学习曲线,因此在你日常工作中开始使用此命令之前 你将需要花费些时间去练习它的选项。更多的信息,请点击此命令的 man 手册页


via: https://www.howtoforge.com/linux-rm-command/

作者:Himanshu Arora 译者:yizhuoyan 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

龙芯中科:通过IP授权、开...
证券之星消息,龙芯中科(688047)07月10日在投资者关系平台...
2025-07-10 21:12:41
58同城开源“Omni-U...
近日,由58同城自主研发的HarmonyOS企业级组件库“Omni...
2025-06-30 17:41:29
豪掷200亿澳元!亚马逊加...
当地时间6月14日,亚马逊宣布,计划在今年至2029年期间在澳大利...
2025-06-15 18:43:14
古尔曼:苹果 iOS 26...
IT之家 6 月 8 日消息,苹果公司旗下的 AirPods 产品...
2025-06-08 09:40:31
论文解读:ChangeFo...
论文地址:https://arxiv.org/pdf...
2025-06-01 21:32:54
Linux: crash:...
文章目录 介绍错误说明从网上搜到类似的问题。手写代码做CPU的PM...
2025-06-01 19:43:32

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...