Linux rmdir 初学者命令示例
作为 Linux 用户,我们经常与文件和目录交互。用户执行的一项常见操作是从文件系统中删除目录。但是,我们在删除目录时必须格外小心。因为粗心执行的删除操作可能会导致数据丢失。
在这篇适合初学者的文章中,我们将学习 rmdir 命令。我们还将讨论一些可以在日常中使用的实际示例。
rmdir命令的语法与其他 Linux 命令类似。从高层次上讲,它分为两部分 -选项和参数:
$ rmdir [OPTIONS] ... <DIRECTORY1> <DIRECTORY2> ...
这里,方括号([])
表示可选参数,而尖括号(<>)
表示强制参数。
Linux 中 rmdir 命令的基本用法
顾名思义,rmdir命令用于删除目录。但需要注意的是,它只能删除空目录。在本节中,我们将了解rmdir命令的基本用法。
在 Linux 中删除空目录
首先,创建几个空目录:
$ mkdir dir1 dir2 dir3 dir4
让我们验证是否已创建所需的目录:
$ ls -l
现在,让我们删除dir1目录并验证它是否已被删除:
$ rmdir dir1 $ ls -l
以类似的方式,我们可以使用rmdir命令一次删除多个空目录。
让我们删除剩余的目录:
$ rmdir dir2 dir3 dir4
最后,验证所有目录是否都已被删除:
$ ls -l
在这里,我们可以看到ls 命令没有显示任何目录。
rmdir 详细模式
在上一节中,我们使用ls 命令来验证目录删除。但是,为了验证前面命令的操作而再执行一个命令是没有意义的。
在这种情况下,我们可以使用该选项启用详细模式-v
,该选项为每个处理的目录提供诊断。
让我们创建与之前相同的目录结构:
$ mkdir dir1 dir2 dir3 dir4
现在,让我们删除启用了详细模式的目录:
$ rmdir -v dir1 dir2 dir3 dir4 $ ls -l
从上面的输出,我们可以得出结论,所有目录都已被删除。
删除 Linux 中的空子目录
我们经常在文件系统上创建子目录,这使我们能够以适当的方式组织数据。让我们看看如何处理空子目录。
如第一个示例所述,我们可以使用rmdir命令删除多个目录。但是,当子目录数量很多时,情况就会变得棘手。
在这种情况下,我们可以使用-p
删除目录及其所有祖先的选项。让我们通过一个例子来理解这一点。
首先,创建子目录结构:
$ mkdir -p dir1/dir2/dir3/dir4/dir5
在这个例子中,我们使用了mkdir 命令-p
的选项来创建子目录结构。
让我们一次性删除所有这些目录:
$ rmdir -p -v dir1/dir2/dir3/dir4/dir5 rmdir: removing directory, 'dir1/dir2/dir3/dir4/dir5' rmdir: removing directory, 'dir1/dir2/dir3/dir4' rmdir: removing directory, 'dir1/dir2/dir3' rmdir: removing directory, 'dir1/dir2' rmdir: removing directory, 'dir1'
这里,详细模式删除了dir5目录及其所有祖先目录。
处理目录非空失败
我们已经知道rmdir只能删除空目录。任何删除非空目录的尝试都会导致错误。虽然这可以防止数据丢失,但在极少数情况下,它可能会造成问题。
例如,如果我们尝试从Jenkins正在执行的脚本中删除非空目录,那么该作业将报告失败。
为了模拟这一点,让我们尝试删除非空目录:
$ mkdir -p dir1/dir2/dir3/dir4/dir5 $ rmdir dir1 rmdir: failed to remove 'dir1': Directory not empty
对于这样的错误情况,我们可以使用该--ignore-fail-on-non-empty
选项,忽略由于非空目录而发生的所有失败。
让我们将此选项与命令一起使用并检查返回值:
$ rmdir --ignore-fail-on-non-empty dir1 $ echo $? 0
在此示例中,我们可以看到命令没有报告任何错误,并且零返回值表示命令执行成功。但需要注意的是,此选项只是抑制错误,而不会删除非空目录。
在 rmdir 命令中使用正则表达式
与其他 Linux 命令类似,我们可以在rmdir命令中使用正则表达式。让我们看看以下两个正则表达式的用法:
?
– 它匹配一个字符。*
– 它匹配前面的字符零次或多次出现。
首先,创建几个空目录:
$ mkdir dir1 dir2 dir-01 dir-02
现在,让我们使用'?'
带有字符串“dir”的正则表达式来删除dir1和dir2目录:
$ rmdir -v dir? rmdir: removing directory, 'dir1' rmdir: removing directory, 'dir2'
在这里,我们可以看到该命令删除了正确的目录。
接下来,使用'*'
正则表达式删除另外两个目录:
$ rmdir -v dir-* rmdir: removing directory, 'dir-01' rmdir: removing directory, 'dir-02'
在这个例子中,我们可以看到另外两个目录已被删除。
在本节中,我们仅讨论了两个正则表达式的用法。但是,我们也可以在rmdir命令中使用其他高级正则表达式。
在本文中,我们首先了解了rmdir命令的基本用法。然后我们讨论了详细模式和子目录的删除。接下来,我们了解了当目录不为空时如何处理失败。最后,我们讨论了如何使用正则表达式。