# rm

用于删除给定的文件和目录

## 补充说明

rm 命令 可以删除一个目录中的一个或多个文件或目录，也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件，只是删除整个链接文件，而原有文件保持不变。

注意：使用rm命令要格外小心。因为一旦删除了一个文件，就无法再恢复它。所以，在删除文件之前，最好再看一下文件的内容，确定是否真要删除。rm命令可以用-i选项，这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项，系统会要求你逐一确定是否要删除。这时，必须输入y并按Enter键，才能删除文件。如果仅按Enter键或其他字符，文件不会被删除。

### 语法

    rm (选项)(参数)

### 选项

    -d：直接把欲删除的目录的硬连接数据删除成0，删除该目录；
    -f：强制删除文件或目录；
    -i：删除已有文件或目录之前先询问用户；
    -r或-R：递归处理，将指定目录下的所有文件与子目录一并处理；
    --preserve-root：不对根目录进行递归操作；
    -v：显示指令的详细执行过程。

### 参数

文件：指定被删除的文件列表，如果参数中含有目录，则必须加上`-r`或者`-R`选项。

### 实例

交互式删除当前目录下的文件test和example

    rm -i test example
    Remove test ?n（不删除文件test)
    Remove example ?y（删除文件example)

删除当前目录下除隐含文件外的所有文件和子目录

    # rm -r *

应注意，这样做是非常危险的!

rm 命令删除当前目录下的 package-lock.json 文件

    find .  -name "package-lock.json" -exec rm -rf {} \;

rm 命令删除当前目录下的 node_modules 目录

    find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

rm 命令删除文件

    # rm 文件1 文件2 ...
    rm testfile.txt

rm 命令删除目录

> rm -r [目录名称] -r 表示递归地删除目录下的所有文件和目录。 -f 表示强制删除

    rm -rf testdir
    rm -r testdir

删除操作前有确认提示

> rm -i [文件/目录]

    rm -r -i testdir

rm 忽略不存在的文件或目录

> -f 选项（LCTT 译注：即 “force”）让此次操作强制执行，忽略错误提示

    rm -f [文件...]

仅在某些场景下确认删除

> 选项 -I，可保证在删除超过 3 个文件时或递归删除时（LCTT 译注： 如删除目录）仅提示一次确认。

    rm -I file1 file2 file3

删除根目录

> 当然，删除根目录（/）是 Linux 用户最不想要的操作，这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。 然而，如果你非得完成这个操作，你需要使用 --no-preserve-root 选项。当提供此选项，rm 就不会特殊处理根目录（/）了。

    不给实例了，操作系统都被你删除了，你太坏了😆

rm 显示当前删除操作的详情

    rm -v [文件/目录]