适合初学者的 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命令的基本用法。然后我们讨论了详细模式和子目录的删除。接下来,我们了解了当目录不为空时如何处理失败。最后,我们讨论了如何使用正则表达式。