rm 是 Linux 系统中用于删除文件和目录的命令,它是 "remove" 的缩写。这是一个功能强大但潜在危险的命令,需要谨慎使用。

目录

一、基本语法

二、功能说明

方法1:使用 rmdir(仅限空目录)

方法2:使用 rm -r(可删除非空目录)

方法3:使用 rm -d(等同于 rmdir)

三、常用选项

四、使用示例

1. 删除单个文件

2. 删除多个文件

3. 强制删除文件(不提示)

 4. 交互式删除(删除前询问)

 5. 删除目录及其内容(递归删除)

 6. 删除目录(选项-rf组合)

7. 显示删除过程

8. 删除空目录

五、危险操作警告(特别要注意的)

六、安全使用建议

七、恢复删除的文件

八、与 rmdir 的区别

九、总结


一、基本语法

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


五、危险操作警告(特别要注意的)

  1. rm -rf / 或 rm -rf /*
    这将尝试删除系统上的所有文件,可能导致系统无法使用。现代系统通常有保护措施阻止这种操作。

  2. rm -rf .
    这会删除当前目录及其所有内容。

  3. rm -rf *
    这会删除当前目录下的所有文件和目录。


六、安全使用建议

  1. 使用 -i 选项进行交互式删除,特别是当使用通配符时:

    rm -i *.tmp

  2. 可以先使用 ls 查看要删除的文件:

    ls *.log
    rm *.log
  3. 对于重要文件,考虑使用 trash-cli 等工具代替 rm,这些工具会将文件移动到"回收站"而不是直接删除。

  4. 使用 -v 选项查看正在删除的内容:

  5. 考虑创建别名使 rm 更安全:

    alias rm='rm -i'

    alias rm='rm -i' 是一个 ​​Shell 别名(Alias)​​ 的定义,它的作用是 ​​将 rm 命令默认替换为 rm -i​,从而在删除文件或目录时要求用户确认。


七、恢复删除的文件

        Linux 中没有内置的"撤销删除"功能。一旦使用 rm 删除文件,通常很难恢复。以下是一些可能的恢复方法:

  1. 使用专业数据恢复工具如 extundelete 或 testdisk

  2. 从备份中恢复

  3. 如果是SSD,恢复可能性更低(因为TRIM可能已立即擦除数据)


八、与 rmdir 的区别

特性 rm rmdir
删除文件 可以 不可以
删除空目录 可以(-d选项) 可以
删除非空目录 可以(-r选项) 不可以
安全性 较低 较高

九、总结

rm 是一个强大但危险的命令,使用时需要格外小心,特别是与 -r 和 -f 选项结合使用时。建议:

  1. 删除前确认目标文件/目录

  2. 重要数据先备份再删除

  3. 考虑使用更安全的替代方案如 trash-cli

  4. 对于脚本中的删除操作,先测试再执行

记住:在Linux中,删除的文件通常难以恢复,谨慎使用rm命令!!!!!!!!!!!

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐