IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux常用rmdir命令代码实现 -> 正文阅读

[系统运维]Linux常用rmdir命令代码实现

Linux系统是由文件和目录组成的。在日常开发中,可能有很多不再需要的目录。我们需要定期清理它们。

在 Linux 中,有一个常用命令叫 rmdir,该命令用于从我们的 Linux 文件系统中删除目录。在这边文章终年,我们将讨论如何使用带有各种命令行选项的 rmdir 命令,以及最后代码实现rmdir命令。

rmdir 命令说明

rmdir 命令用于从我们的 Linux 操作系统中删除空目录。每个需要删除的目录都不应包含任何文件或子目录。否则,rmdir 命令无法从我们的文件系统中删除该目录。

如果指定的目录不为空,则 rmdir 命令不会删除该目录,而是会尝试删除命令中的其他指定目录。目录按照它们在命令行中指定的顺序(即从左到右)删除。

如何获取 rmdir 命令的帮助

要获得有关 rmdir 命令的帮助,请使用以下命令。

rmdir --help

在这里插入图片描述

rmdir 和 rm –r 的区别

可以使用 rm 命令通过使用 -r 选项来删除目录。 那么这两个命令之间的基本区别是什么?

rm 命令也可用于删除非空目录,而 rmdir 命令仅用于删除空目录。

rmdir命令简单实现

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <err.h> /*warn*/

static int pflag;
static int vflag;

static void usage(void)
{

	fprintf(stderr, "usage: rmdir [-pv] directory ...\n");
}

static int rm_path(char *path)
{
	char *p;

	p = path + strlen(path);
	while (--p > path && *p == '/')
		;
	*++p = '\0';
	while ((p = strrchr(path, '/')) != NULL) {
		/* 删除尾部斜杠*/
		while (--p >= path && *p == '/')
			;
		*++p = '\0';
		if (p == path)
			break;

		if (rmdir(path) < 0) {
			warn("%s", path);
			return 1;
		}
		if (vflag)
			printf("%s\n", path);
	}

	return 0;
}

int main(int argc, char *argv[])
{
	int ch, errors;

	while ((ch = getopt(argc, argv, "pv")) != -1)
		switch(ch) {
		case 'p':
			pflag = 1;
			break;
		case 'v':
			vflag = 1;
			break;
		case '?':
		default:
			usage();
		}
	argc -= optind;
	argv += optind;

	if (argc == 0)
		usage();

	for (errors = 0; *argv; argv++) {
		if (rmdir(*argv) < 0) {
			warn("%s", *argv);
			errors = 1;
		} else {
			if (vflag)
				printf("%s\n", *argv);
			if (pflag)
				errors |= rm_path(*argv);
		}
	}

	exit(errors);
}

编译运行:

在这里插入图片描述

创建一个空目录,然后用实现的版本删除该空目录。

Linux 中的 rmdir 命令示例

让我们讨论以下例子来更好地理解 rmdir 命令,当我们要删除一个空文件时

在这里插入图片描述
如果名为 test 的目录为空,则上述命令将删除该目录。但是我们想要删除非空目录,则会报错

在这里插入图片描述

如果目录不为空,则会产生错误消息。在这种情况下,您必须先删除目录内容,然后再删除它。

可能有人要问,rmdir能不能忽略掉非空目录?答案是可以的。

如何忽略非空目录

默认情况下,如果您尝试删除非空目录,则 rmdir 命令将产生错误消息。 要忽略删除非空目录时出现的错误消息,请使用 --ignore-fail-on-non-empty 选项。 这里没有对该选项做处理,可以使用Linux的自带rmdir实现.

在这里插入图片描述rmdir 命令仅用于删除空目录。用选项–ignore-fail-on-non-empty只是忽略非空目录时出现的错误消息, 绝对没有办法使用 rmdir 命令删除非空目录。

总结

rmdir 命令仅删除空目录,这有助于我们避免数据意外丢失。 这是一个重要的特性,因为在 Linux 系统中,一旦数据被删除,恢复数据是极其困难的。

欢迎关注微信公众号【程序猿编码】,欢迎添加本人微信号(17865354792)交流学习。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:45:32  更:2021-08-28 09:46:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:01:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码