'rm' 命令用于删除文件和目录,rm 来自 GNU Coreutils 包,默认情况下应该在基于 Unix/Linux 的操作系统中可用。
如何使用 rm 命令示例
- 删除文件
使用 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
- 递归删除
我们可以使用 -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/
- 删除目录
默认情况下 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
- 提示删除
正如我们之前提到的,默认情况下 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
- 忽略其他文件系统
--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
- 保留根目录
默认情况下 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 选项禁用它,该选项不会以特殊方式处理 '/'
- 详细输出
使用 -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/’
- 显示版本
我们可以使用 --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.
- 显示帮助
如果我们需要使用 --help 选项获得更多详细信息,我们可以显示有用的帮助信息。请注意,为简洁起见,未显示该命令的完整输出。
- 显示帮助
[jack@onitroad ~]# rm --help Usage: rm [OPTION]... FILE...
日期:2020-07-07 20:57:00 来源:oir作者:oir