作为 Linux 用户,我们经常与文件和目录进行交互。用户经常执行的一项操作就是从文件系统中删除目录。不过,在删除目录时,我们必须格外小心。因为不小心执行删除操作可能会导致数据丢失。
在这篇适合初学者的文章中,我们将学习 rmdir 命令。我们还将讨论一些日常使用的实用示例。

rmdir 命令的语法与其他 Linux 命令类似。它分为两个部分,--选项和参数:
rmdir [OPTIONS] ... <DIRECTORY1> ...
这里的方括号 [] 代表可选参数,而尖括号 <> 代表必选参数。
rmdir 命令用于删除目录。但需要注意的是,它只能删除空目录。在本节中,我们将了解 rmdir 命令的基本用法。
首先,创建几个空目录,并验证一下所需目录是否已创建:
mkdir dir1 dir2 dir3 dir4
删除 dir1 目录并验证它是否已被删除:
rmdir dir1
类似地,我们可以使用 rmdir 命令一次性删除多个空目录:
rmdir dir2 dir3 dir4
上面操作过后,可以看到 ls 命令没有显示任何目录。
在上一条示例中,我们使用了 ls 命令来验证目录的删除,不过,为了验证前几条命令的操作而多执行一条命令是没有意义的。在这种情况下,我们可以使用 -v 选项来启用 "verbose "模式,它可以为每个处理过的目录提供诊断信息。
我们创建与之前相同的目录结构:
mkdir dir{1,2,3,4}
使用 -v 参数显示删除的详细信息:
rmdir -v dir{1,2,3,4}
我们经常在文件系统中创建子目录,这样就能以适当的方式组织数据。
如第一个例子所述,我们可以使用 rmdir 命令删除多个目录。但是,当子目录数量较多时,情况就变得棘手了。在这种情况下,我们可以使用 -p 选项来删除目录及其所有父目录。让我们通过一个例子来理解。
首先,创建一个子目录结构:
mkdir -p dir1/dir2/dir3/dir4/dir5
在本例中,我们在 mkdir 命令中使用了 -p 选项来创建子目录结构。
一次性删除所有这些目录:

rmdir 只能删除空目录,任何删除非空目录的尝试都会导致错误。虽然这可以防止数据丢失,但在某些罕见的情况下也会产生问题。
例如,如果我们试图从 Jenkins 正在执行的脚本中删除一个非空目录,那么作业就会报告失败。
为了模拟这种情况,让我们尝试删除非空目录:

对于此类错误,我们可以使用 --ignore-fail-on-on-non-empty 选项,它可以忽略所有因目录非空而导致的故障。
在命令中使用该选项并检查返回值:
rmdir --ignore-fail-on-non-empty dir1
echo $?
在这个例子中,我们可以看到命令没有报告任何错误,返回值为 0 表示命令执行成功。 不过,需要注意的是,该选项只是抑制错误,并不会删除非空目录。

与其他 Linux 命令类似,我们也可以在 rmdir 命令中使用正则表达式。下面是两个正则表达式的用法:
首先,创建几个空目录:
mkdir dir1 dir2 dir-01 dir-02
使用正则表达式"? "和字符串 "dir "来删除 dir1 和 dir2 目录:
rmdir -v dir?
这里可以看到命令删除了正确的目录。接下来,使用 "*"正则表达式删除另外两个目录:
rmdir -v dir-*
在这个例子中,我们可以看到另外两个目录已被删除。

这里我们只讨论了两种正则表达式的用法。不过,还可以在 rmdir 命令中使用其他高级正则表达式。
通过本文的介绍,相信你已经掌握了 rmdir 命令的核心用法和实用技巧。作为 Linux 文件管理的基础工具,rmdir 以安全删除空目录的特性,成为防止误删数据的守护者。记住它的黄金法则:
"只删空目录,谨慎保数据"
如果你想删除非空目录,可以探索 rm -r 命令(但请务必小心使用)。欢迎在评论区分享你的使用心得或遇到的困惑,也别忘了将这篇文章分享给正在学习 Linux 的小伙伴!