「rm(1)」-

移除文件或者目录

命令语法格式

rm [OPTION]… [FILE]…

命令描述

rm命令用于删除文件和目录,默认是不删除目录的。本文中的rm命令是GNU实现的rm命令。

如果给出-I或–interactive=WHEN选项,并且有三个以上的文件FILE或给出了-r、-R、–recursive,则rm会提示用户是否继续执行整个操作,如果用户的响应不是肯定的,则整个命令中止。

否则,如果文件不可写,标准输入是终端,并且未给出-f或–force选项,或者给出-i或–interactive=WHEN选项,则rm会提示用户是否删除 文件。如果用户的响应不是肯定的,则跳过该文件。

拒绝删除.和..文件,这是POSIX的要求。

警告:如果你使用rm删除文件,通常可以恢复该文件的内容。如果你想要确保内容真正无法恢复,请考虑使用shred(1)命令。

命令支持的选项及含义

-f, –force
忽略不存在的文件和丢失的参数,并且不会提示用户。忽略以前的任何前面的–interactive (-i)选项。

-i
对每个要删除的每个文件进行提示是否要删除。如果用户的响应不是肯定的,则跳过该文件。忽略任何前面的–force(-f)选项。相当于–interactive=always。

-I
如果有三个以上的文件或进行递归删除,则提示一次是否继续执行命令。忽略任何前面的–force(-f)选项。相当于–interactive=once。

–interactive[=WHEN]
指定何时显示交互式提示。WHEN可能被省略,或者是下面中的一个:

never
不进行提示。

once
如果超过了三个以上的文件或执行递归删除时,会提示一次。相当于-I。

always
对每个要被删除的文件进行提示。如果没有指定WHEN,这个是默认的。

–one-file-system
当递归地删除时,如果遇到的目录与命令行参数中指定的目录在不同的文件系统上,则跳过该目录。

此选项在删除通常不包含有价值数据的构建“chroot”层次结构时非常有用。但是,绑定挂载/归入这样的层次结构并不罕见,以便更容易地使用其启动文件。问题在于很容易忘记卸载/归位。然后,当你使用rm -rf删除通常丢弃的chroot时,该命令也会删除/ home下的所有内容。使用–one-file-system选项,它会警告并跳过其他文件系统上的目录。当然,如果它和你的chroot碰巧在同一个文件系统上,这将不会保存你的/ home。

–no-preserve-root
递归删除时不要特别处理根目录(/)。除非你确实要删除计算机上的所有文件,否则不推荐使用此选项。参考特别对待根目录

–preserve-root
与–recursive选项一起使用时,尝试删除根目录(/)时会失败。这是默认行为。参考特别对待根目录

-r, -R, –recursive
递归地删除列出的目录及其内容。通常删除目录时需要使用该选项。

-d, –dir
如果命令行中列出的目录为空,请将其删除。

-v, –verbose
在执行删除前,打印要被删除的文件。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

使用示例

如果要删除以-开始的文件,比如,’-foo’,可以使用下面的命令:

# rm — -foo

# rm ./-foo

默认情况下,rm不会删除目录,需要使用–recursive(-r、-R)来删除列出的目录,以及内容:

# rm -r bar

相关手册

unlink(1), unlink(2), chattr(1), shred(1)

查看在线手册:http://www.gnu.org/software/coreutils/rm

查看info手册:info ‘(coreutils) rm invocation’

参考文献

  • man 1 rm, version GNU coreutils 8.26

更新日志

  • 08/24/2017 创建文章
  • 06/12/2018 更新文章内容