Linux rm 命令详解
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
查看所有帮助信息:
删除一个文件
要删除一个文件,直接在rm
后面加上你要删除的文件名:
rm filename
执行后会发生了下面两种情况中的一个:
- 如果你没有父目录的权限,将会输出 “Operation not permitted” 错误;
- 如果没有写入保护,文件将被直接删除并且没有提示。
强制删除文件
使用-f
参数允许用户无需确认即可删除写保护的文件:
rm -f filename
注意:-f
参数不适用于写保护的目录。
删除多个文件
要删除多个文件,直接在rm
后面加上你要删除的所有的文件名,用空格隔开即可:
rm atp1.txt atp2.txt atp3.txt
还可以使用 ‘*’ 任意匹配,例如用上面的命令可以写为:
rm atp*.txt
同样的,如果要删除该目录下所有.txt
文件:
rm *.txt
删除目录
rm
命令可用于删除目录,但是我们使用两种不同的方法来删除空目录和非空目录。
删除空目录
要删除空目录,可以使用-d
参数(等同于rmdir
命令):
rm -d dirname
删除非空目录
要删除非空目录及其内容,需要使用-r
参数:
rm -r dirname
删除文件前确认提示
-i
参数用于在删除文件之前要求确认。此时需要按下y
键确认或者n
键取消:
rm -i filename
删除多个文件或目录时,-i
参数可以派上用场,在删除每个文件之前提示确认,例如:
rm -i atp*.txt
如果删除三个以上的文件,只想要提示一次,可以使用-I
参数,将只会确认被删除的文件数,例如:
rm -I atp1.txt atp2.txt atp3.txt atp4.txt
输出删除过程/结果
rm 命令通常以静默方式删除文件,如果你想知道每个文件删除的过程,可以使用-v
参数,例如:
rm -v atp1.txt atp2.txt atp3.txt
删除的文件名中包含特殊字符
文件名包含空格
删除包含空格的文件时,有两种方式:
将文件名用引号括起来:
rm -i 'filename with spaces'
.使用反斜杠转义每个空格:
rm -i filename\ with\ spaces
文件名以破折号开头
因为rm
会将 ‘-’ 识别为一个参数,所以删除以破折号开头的文件时需要注意一下,有两种方法:
有两种方法可以做到这一点:
前面加上双破折号:
rm -- -filename
加上文件的路径:
rm /home/-filename
注意:不推荐创建文件/目录的名称中包含特殊字符或空格。