rm (remove),是一个基本的 UNIX 命令,在 Linux 系统中是一个非常重要的命令,用于删除文件或目录。同时这也是一个应谨慎使用的命令,错误的使用此命令可能会删除重要的文件和数据。要使用 rm 删除文件,用户不需要具有读取/写入权限,但是必须有该文件上级目录的写入权限。在 Linux 中删除文件或目录不像 Windows 那样简单,因为一旦删除文件,它不会进入回收站而是完全删除,之后要想恢复非常困难的。

下面就详细介绍下 rm 命令以及在删除文件或目录时应该如何选择合适的参数。

rm 命令语法

默认情况下,rm 命令无需确认即可删除文件。一旦删除文件,文件或目录的内容将无法恢复。出于这个原因,在使用该命令时要格外小心,以避免出现不可挽回的损失。别问我怎么知道的

rm 命令的一般语法为:

rm [OPTION] [FILENAME]...

rm 命令参数

命令参数 描述
-f, –force 在没有确认删除提示的下删除文件并忽略不存在的文件和参数
-i 删除文件前提示确认
-I 在删除三个以上的文件或递归删除文件之前提示确认,与 -i 选项相比,侵入性较小,同时提供防止频繁错误的保护。
-interactive [=WHEN] 根据指定的 WHEN 进行确认提示:never,once (-I),always (-i),如果此参数不加 WHEN 则总是提示
–one-file-system 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件
–no-preserve-root 不对根目录 ‘/’ 进行任何特殊处理
–preserve-root [=all] 不对根目录 ‘/’ 进行递归操作(默认启用)
-r, -R, -recursive 以递归方式删除目录及其内容
-d, –dir 不使用 -r/-R/-recursive 删除空目录,rm -dir 等同于 rmdir
-v, –verbose 显示正在进行的步骤
–help 显示可用的命令选项
–version 输出 rm 命令的版本信息

可以输入 rm --help 查看所有帮助信息:

linux-rm-help

删除一个文件

要删除一个文件,直接在 rm 后面加上你要删除的文件名:

rm filename

执行后会发生了下面两种情况中的一个:

  • 如果你没有父目录的权限,将会输出 “Operation not permitted” 错误;
  • 如果没有写入保护,文件将被直接删除并且没有提示。

强制删除文件

使用 -f 参数允许用户无需确认即可删除写保护的文件:

rm -f filename

注意:-f 参数不适用于写保护的目录。

删除多个文件

要删除多个文件,直接在 rm 后面加上你要删除的所有的文件名,用空格隔开即可:

rm atp1.txt atp2.txt atp3.txt

还可以使用 ‘*’ 任意匹配,例如用上面的命令可以写为:

rm atp*.txt

linux-rm-muti-files

同样的,如果要删除该目录下所有 .txt 文件:

rm *.txt

删除目录

rm 命令可用于删除目录,但是我们使用两种不同的方法来删除空目录和非空目录。

删除空目录

要删除空目录,可以使用 -d 参数(等同于 rmdir 命令):

rm -d dirname

删除非空目录

要删除非空目录及其内容,需要使用 -r 参数:

rm -r dirname

删除文件前确认提示

-i 参数用于在删除文件之前要求确认。此时需要按下 y 键确认或者 n 键取消:

rm -i filename

删除多个文件或目录时, -i 参数可以派上用场,在删除每个文件之前提示确认,例如:

rm -i atp*.txt

linux-rm-i-file

如果删除三个以上的文件,只想要提示一次,可以使用 -I 参数,将只会确认被删除的文件数,例如:

rm -I atp1.txt atp2.txt atp3.txt atp4.txt

linux-rm-I-file

输出删除过程/结果

rm 命令通常以静默方式删除文件,如果你想知道每个文件删除的过程,可以使用 -v 参数,例如:

rm -v atp1.txt atp2.txt atp3.txt

linux-rm-I-file

删除的文件名中包含特殊字符

文件名包含空格

删除包含空格的文件时,有两种方式:

  1. 将文件名用引号括起来:
rm -i 'filename with spaces'
  1. 使用反斜杠转义每个空格:
rm -i filename\ with\ spaces

文件名以破折号开头

因为 rm 会将 ‘-’ 识别为一个参数,所以删除以破折号开头的文件时需要注意一下,有两种方法:

有两种方法可以做到这一点:

  1. 前面加上双破折号:
rm -- -filename
  1. 加上文件的路径:
rm /home/-filename

注意:不推荐创建文件/目录的名称中包含特殊字符或空格。

如果你认为这篇文章还不错,可以考虑为我充电 ⚡️