rm 是 Linux 系统中用于删除文件或目录的核心命令,其名称来源于 "remove"(移除),该命令功能强大但操作具有不可逆性,一旦文件被删除,在未提前备份的情况下通常难以恢复,因此使用时需格外谨慎,以下从基本用法、选项参数、高级场景及注意事项等方面详细解析 rm 命令。

基本用法
rm 命令最简单的格式是 rm [文件名],用于删除指定文件,删除当前目录下的 test.txt 文件,只需执行:
rm test.txt
如果删除的文件不存在,命令会报错提示 "No such file or directory",若要批量删除多个文件,可将文件名作为参数依次列出,
rm file1.txt file2.txt file3.txt
常用选项参数
rm 命令通过选项参数扩展功能,以下为最常用的选项及其作用:
| 选项 | 全称 | 功能说明 | 示例 |
|---|---|---|---|
-f |
--force |
强制删除,忽略不存在的文件且无需确认,适用于脚本中避免交互提示 | rm -f nonexistent.txt(不报错直接跳过) |
-i |
--interactive |
交互式删除,每次删除前都会询问用户确认(默认行为,若终端为交互式终端) | rm -i test.txt(提示 "remove regular empty file 'test.txt'? ") |
-r / -R |
--recursive |
递归删除,用于删除目录及其所有子目录和文件(必须配合使用,否则无法直接删除目录) | rm -r mydir(删除 mydir 目录及内部所有内容) |
-d |
--dir |
仅删除空目录,若目录非空则报错 | rm -d emptydir(仅当 emptydir 为空时生效) |
-v |
--verbose |
详细模式,显示删除的文件名 | rm -v file1.txt file2.txt(输出 "removed 'file1.txt'" "removed 'file2.txt'") |
| 参数终止符,用于区分选项和文件名(当文件名以 开头时使用) | rm -- -file(删除文件 -file) |
高级场景应用
删除目录及其内容
要删除非空目录,必须使用 -r(或 -R)选项递归删除,删除包含文件的 mydir 目录:

rm -r mydir
若希望在删除时强制跳过确认提示(如批量清理时),可结合 -f 使用:
rm -rf mydir
注意:rm -rf 是 Linux 中最危险的命令之一,一旦执行,目录及其所有内容将被永久删除,且不会进入回收站,务必确认路径正确。
结合通配符批量删除
通配符(、、[] 等)可配合 rm 实现批量删除。
- 删除所有
.tmp文件:rm *.tmp - 删除以
log开头且扩展名为.txt的文件:rm log*.txt - 删除文件名中包含数字的文件:
rm *[0-9]*
⚠️ 警告:使用通配符时需格外谨慎,特别是 rm -rf * 或 rm -rf /*(误操作会清空整个系统),建议先用 ls 预览匹配的文件,确认无误后再执行删除。

交互式批量删除
对于需要谨慎操作的批量删除场景,可通过 -i 选项逐个确认。
rm -i *.old
命令会逐个提示是否删除每个 .old 文件,输入 y 确认,n 跳过。
删除符号链接
rm 会直接删除符号链接本身,而不会指向的实际文件,若 linkfile 是指向 targetfile 的链接:
rm linkfile # 仅删除 linkfile,targetfile 不受影响
注意事项
- 数据不可逆性:Linux 文件删除后,除非通过专业数据恢复工具(如
extundelete),否则很难恢复,重要文件务必提前备份。 - 权限问题:删除文件需要对该文件有写权限,且对所在目录有执行权限,若无权限,会提示 "Permission denied"。
- 避免误操作:
- 脚本中慎用
rm -rf,可先添加set -e(遇到错误立即退出)或预检查目录是否存在。 - 关键操作前可通过
ls -l或find命令确认文件路径。
- 脚本中慎用
- 系统文件保护:切勿尝试删除 (根目录)下的关键文件或目录,可能导致系统崩溃。
相关问答FAQs
Q1: 使用 rm -rf 删除文件后,如何尝试恢复?
A1: rm -rf 删除的文件若未被新数据覆盖,可通过以下方式尝试恢复:
- ext4 文件系统:使用
testdisk或extundelete工具,安装extundelete后,执行extundelete --restore-all /dev/sdX(/dev/sdX为文件系统所在设备)。 - xfs 文件系统:使用
xfsdump和xfsrestore,或专业工具如PhotoRec。
注意:恢复成功率取决于文件是否被覆盖,操作前应卸载或只读挂载文件系统,避免新数据写入覆盖原文件。
Q2: 为什么执行 rm 命令时提示 "Permission denied"?
A2: 该错误通常由以下原因导致:
- 文件权限不足:当前用户对文件无写权限(可通过
ls -l检查文件权限,若为-rw-r--r--,则所有者或 root 可删除)。 - 目录权限不足:删除文件需要对所在目录有执行权限(
x),否则无法访问目录内容。
解决方法:
- 若文件属于当前用户:
chmod u+w file添加写权限后删除。 - 若文件属于其他用户:使用
sudo rm file(需 sudo 权限)。 - 若目录权限不足:
sudo chmod +x /path/to/directory后再删除。
