作为Linux用户,可能经常会定期与文件和目录进行交互,例如用户执行的一项常见操作是从文件系统中删除目录。但是,在删除目录时必须格外小心,因为不小心执行删除操作会导致数据丢失。
在本文当中,小编将简单介绍下rmdir命令。此外,还将介绍一些可以在日常基础上使用Linux rmdir命令的实际示例。
rmdir命令的语法类似于其他Linux命令。在高层次上,它分为两部分——选项和参数:
$ rmdir [OPTIONS] ... <DIRECTORY1> <DIRECTORY2> ...
在这里,方括号([])
代表可选参数,而尖括号(<>)
代表强制参数。
顾名思义,rmdir命令用于删除目录。但是,需要注意的是,它只能删除空目录,下面简单介绍下rmdir命令的基本用法。
1、在Linux中删除一个空目录
$ mkdir dir1 dir2 dir3 dir4
现在验证是否已创建所需的目录:
$ ls -l
现在,让删除dir1目录并验证它是否已被删除:
$ rmdir dir1 $ ls -l
以类似的方式,还可以使用rmdir命令一次删除多个空目录。下面删除剩余的其它目录:
$ rmdir dir2 dir3 dir4
最后,验证所有目录是否已被删除:
$ ls -l
这时候,可以看到ls命令没有显示任何目录,说明已经全部删除:
2、rmdir详细模式
在上面使用了ls命令来验证目录删除。但是,仅仅为了验证先前命令的操作而再执行一个命令是没有意义的。在这种情况下,可以使用-v
选项启用详细模式,该选项为每个处理的目录提供诊断。
现在创建与之前创建的相同的目录结构:
$ mkdir dir1 dir2 dir3 dir4
现在,启用详细模式的目录进行删除:
$ rmdir -v dir1 dir2 dir3 dir4 $ ls -l
从上面的输出中,可以看出,所有目录都已被删除。
3、删除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目录及其所有父目录。
4、处理非空目录失败
众所周知,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
在这个例子中,可以看到命令没有报错,返回值为零表示命令执行成功。但需要注意的是,此选项只会抑制错误并且不会删除非空目录。
5、在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命令的基本用法,同时介绍了详细模式和子目录的删除、当目录不为空时如何处理等相关内容,希望能给对大家有所帮助。对于Linux新手用户而言,可以参考上面的rmdir命令用法。