Linuxrm 命令示例

'rm' 命令用于删除文件和目录,rm 来自 GNU Coreutils 包,默认情况下应该在基于 Unix/Linux 的操作系统中可用。

如何使用 rm 命令示例

    1. 删除文件
      使用 rm 命令,我们可以指定要删除的文件,默认情况下,系统会提示我们确认我们确实要删除文件,“y”表示yes,“n”表示no。
[jack@onitroad test]# rm test.txt
rm: remove regular file ‘test.txt’? n
  • 2.强制删除
    我们可以指定 -f 选项来强制删除而不需要任何进一步的提示,而不是被提示确认。
[jack@onitroad test]# rm -f test.txt
    1. 递归删除
      我们可以使用 -r 选项递归删除指定目录中的文件和目录。
      首先,我们将创建 dir1 目录,然后在该目录中包含子目录 dir2 和 dir3,以及每个目录中的一些空测试文件。
[jack@onitroad test]# mkdir -p dir1/dir2/dir3
[jack@onitroad test]# touch dir1/file dir1/dir2/file dir1/dir2/dir3/file

在此之后,我们使用 -r 选项运行 rm 并使用前面讨论的 -f 选项,这样我们就不会被提示输入每个文件和目录。

[jack@onitroad test]# rm -rf dir1/
    1. 删除目录
      默认情况下 rm 命令不会删除目录,除非我们还指定了 -d 选项,但这仅适用于空目录。
[jack@onitroad test]# mkdir dir
[jack@onitroad test]# rm -d dir/
rm: remove directory ‘dir/’? y

如果目录中有文件或者子目录,我们将需要使用 -r 选项删除目录以递归删除所有内容。在以下示例中,我们重新创建“dir”目录并使用 touch 命令其中创建一个空文件。我们可以看到 rm -d 失败,因为目录不是空的,所以我们使用 -r 来确认我们要进入目录,删除其中的内容,然后最后删除目录本身。

[jack@onitroad test]# mkdir dir
[jack@onitroad test]# touch dir/test-file
[jack@onitroad test]# rm -d dir/
rm: cannot remove ‘dir/’: Directory not empty
[jack@onitroad test]# rm -r dir/
rm: descend into directory ‘dir/’? y
rm: remove regular empty file ‘dir/test-file’? y
rm: remove directory ‘dir/’? y
    1. 提示删除
      正如我们之前提到的,默认情况下 rm 会在继续之前提示我们进行确认,这可以通过 -i 选项启用。默认使用 -i 的原因是它自动设置为别名。
[jack@onitroad ~]# alias | grep rm
alias rm='rm -i'

如果我们愿意,我们可以从别名中删除 -i 选项,这是实际提示并让我们确认的部分,默认情况下它是作为一种安全措施来帮助避免意外删除的。

  • 6.提示一次
    与 -i 类似,我们可以使用 -I 选项在删除超过 3 个文件之前提示一次,这被认为比 -i 侵入性小,但仍然可以防止大多数错误。
    在这个例子中,我们删除了 3 个目录和 3 个文件,但只收到一次提示,这是一个很好的选择,介于使用 -i 确认所有内容和使用 -f 不确认任何内容之间。
[jack@onitroad test]# mkdir -p dir1/dir2/dir3
[jack@onitroad test]# touch dir1/file dir1/dir2/file dir1/dir2/dir3/file
[jack@onitroad test]# rm -rI dir1/
rm: remove 1 argument recursively? y
    1. 忽略其他文件系统
      --one-file-system 选项在递归删除时使用,并将跳过位于不同文件系统上的任何目录到指定为参数的目录。如果我们有不同的文件系统,例如辅助磁盘或者 NFS 挂载安装到我们系统的某个地方,这可能非常有用,默认情况下,'rm -rf /' 将下降到这些文件系统中并删除这些内容,此选项将防止这种情况发生。
      在本例中,我们添加了一个新的虚拟硬盘 /dev/sdb1 并将其挂载到 /root/test/mount。当我们尝试删除 /root/test 中的所有内容时,会跳过挂载目录,因为它是一个单独的文件系统。
[jack@onitroad test]# mount /dev/sdb1 mount/
[jack@onitroad test]# rm -rf --one-file-system /root/test/
rm: skipping ‘/root/test/mount’, since it's on a different device
    1. 保留根目录
      默认情况下 rm 使用 --preserve-root 选项运行,该选项不会删除“/”目录,这有助于防止意外删除文件系统。
[jack@onitroad test]# rm -rf /
rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe

我们可以使用 --no-preserve-root 选项禁用它,该选项不会以特殊方式处理 '/'

    1. 详细输出
      使用 -v 选项,我们可以打印出另外的详细信息,包括已删除的所有内容的列表。
[jack@onitroad test]# mkdir -p dir1/dir2/dir3
[jack@onitroad test]# touch dir1/file dir1/dir2/file dir1/dir2/dir3/file
[jack@onitroad test]# rm -rfv dir1/
removed ‘dir1/dir2/dir3/file’
removed directory: ‘dir1/dir2/dir3’
removed ‘dir1/dir2/file’
removed directory: ‘dir1/dir2’
removed ‘dir1/file’
removed directory: ‘dir1/’
    1. 显示版本
      我们可以使用 --version 选项显示安装的 rm 版本。
[jack@onitroad ~]# rm --version
rm (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Paul Rubin, David MacKenzie, jack M. Stallman,
and Jim Meyering.
    1. 显示帮助
      如果我们需要使用 --help 选项获得更多详细信息,我们可以显示有用的帮助信息。请注意,为简洁起见,未显示该命令的完整输出。
[jack@onitroad ~]# rm --help
Usage: rm [OPTION]... FILE...
日期:2020-07-07 20:57:00 来源:oir作者:oir