Linux基本命令篇 —— rm命令
Linux系统中的rm命令是用于删除文件和目录的强大工具,但使用不当可能造成严重后果。摘要:1)基本功能包括删除文件和目录(需搭配-r/-d选项);2)常用选项:-f强制删除、-i交互确认、-v显示过程;3)高危操作警告:如rm -rf /*会破坏系统;4)安全建议:使用-i选项、先ls确认、建立回收站机制;5) 删除后恢复困难,建议提前备份。该命令与rmdir的主要区别在于能否删除非空目录和文件
rm是 Linux 系统中用于删除文件和目录的命令,它是 "remove" 的缩写。这是一个功能强大但潜在危险的命令,需要谨慎使用。
目录
一、基本语法
rm [选项] 文件或目录...
二、功能说明
rm 命令用于删除文件或目录。与 rmdir 不同,当使用递归选项时,rm 可以删除非空目录(目录这块若没有递归选项则不能删除空目录和非空目录),和各种类型的文件。
rm 命令默认不能直接删除目录(无论目录是否为空),这是 Linux 系统的安全设计,如下,my directory是一个空目录,若我们想删除的话,则会报错:

系统明确提示:目标是一个目录,而 rm 默认只能删除文件!!!
若想要删除目录,我们可以使用下面三种方法来进行操作:
方法1:使用 rmdir(仅限空目录)
方法2:使用 rm -r(可删除非空目录)
方法3:使用 rm -d(等同于 rmdir)
三、常用选项
| 选项 | 说明 |
|---|---|
-f, --force |
强制删除,忽略不存在的文件和参数,不提示确认 |
-i |
删除前逐一询问确认 |
-I |
在删除超过3个文件或递归删除前提示一次确认 |
-r, -R, --recursive |
递归删除目录及其内容 |
-d, --dir |
删除空目录(类似rmdir的功能) |
-v, --verbose |
显示详细的处理信息 |
--one-file-system |
递归时不跨越文件系统边界 |
--no-preserve-root |
不特殊对待"/"(危险选项) |
--preserve-root |
默认选项,不删除"/" |
--help |
显示帮助信息 |
--version |
显示版本信息 |
四、使用示例
1. 删除单个文件
rm filename
直接使用rm不带选项的话,不会询问确认,会直接删除文件且不提示任何信息(除非文件不存在或遇到权限问题)。

2. 删除多个文件
rm file1 file2 file3

删除特殊命名文件时也要使用\转义字符,不然会报错!!!
3. 强制删除文件(不提示)
rm -f filename

4. 交互式删除(删除前询问)
rm -i *.txt
通配符之一的*是指指代*后面的所有类型的文件。

5. 删除目录及其内容(递归删除)
两种情况:
情况一:
rm -r testdir/subdir
testdir/subdir 明确指向的是 testdir 下的子目录 subdir,命令的执行效果是仅删除 testdir 目录下的 subdir 子目录,而父目录 testdir 本身未被删除,因为它不是命令的直接目标:

情况二:
rm -r testdir # 删除整个 testdir 目录及其内容
如果想连同父目录 testdir 一起删除,需要明确指定:

6. 删除目录(选项-rf组合)
两种情况(与上面一致):
情况一:
rm -rf testdir/subdir
testdir/subdir 明确指向的是 testdir 下的子目录 subdir,命令的执行效果是仅删除 testdir 目录下的 subdir 子目录,而父目录 testdir 本身未被删除,因为它不是命令的直接目标:

情况二:
rm -rf testdir # 删除整个 testdir 目录及其内容
如果想连同父目录 testdir 一起删除,需要明确指定:

7. 显示删除过程
rm -v *.log

8. 删除空目录
rm -d empty_dir

五、危险操作警告(特别要注意的)
-
rm -rf /或rm -rf /*
这将尝试删除系统上的所有文件,可能导致系统无法使用。现代系统通常有保护措施阻止这种操作。 -
rm -rf .
这会删除当前目录及其所有内容。 -
rm -rf *
这会删除当前目录下的所有文件和目录。
六、安全使用建议
-
使用
-i选项进行交互式删除,特别是当使用通配符时:rm -i *.tmp
-
可以先使用
ls查看要删除的文件:ls *.log rm *.log -
对于重要文件,考虑使用
trash-cli等工具代替rm,这些工具会将文件移动到"回收站"而不是直接删除。 -
使用
-v选项查看正在删除的内容:
-
考虑创建别名使
rm更安全:alias rm='rm -i'alias rm='rm -i'是一个 Shell 别名(Alias) 的定义,它的作用是 将rm命令默认替换为rm -i,从而在删除文件或目录时要求用户确认。
七、恢复删除的文件
Linux 中没有内置的"撤销删除"功能。一旦使用 rm 删除文件,通常很难恢复。以下是一些可能的恢复方法:
-
使用专业数据恢复工具如
extundelete或testdisk -
从备份中恢复
-
如果是SSD,恢复可能性更低(因为TRIM可能已立即擦除数据)
八、与 rmdir 的区别
| 特性 | rm | rmdir |
|---|---|---|
| 删除文件 | 可以 | 不可以 |
| 删除空目录 | 可以(-d选项) | 可以 |
| 删除非空目录 | 可以(-r选项) | 不可以 |
| 安全性 | 较低 | 较高 |
九、总结
rm 是一个强大但危险的命令,使用时需要格外小心,特别是与 -r 和 -f 选项结合使用时。建议:
-
删除前确认目标文件/目录
-
重要数据先备份再删除
-
考虑使用更安全的替代方案如
trash-cli -
对于脚本中的删除操作,先测试再执行
记住:在Linux中,删除的文件通常难以恢复,谨慎使用rm命令!!!!!!!!!!!
更多推荐
所有评论(0)