【转】实现新建多级目录(树形)linux-c语言

本文介绍了使用C语言实现创建目录的功能,通过调用系统函数如`access`和`mkdir`来检查文件权限并创建目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <unistd.h>
#include<sys/stat.h>
int CreateDir(const char *sPathName);
int main() {
char *dir="/test1/test2/";
CreateDir(dir);
return 0;
}
int CreateDir(const char *sPathName) {
char DirName[256];
strcpy(DirName, sPathName);
int i, len = strlen(DirName);
if (DirName[len - 1] != '/')
strcat(DirName, "/");

len = strlen(DirName);

for (i = 1; i < len; i++) {
if (DirName[i] == '/') {
DirName[i] = 0;
/*  功 能: 确定文件的访问权限,检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,
* 否则函数返回-1
用 法: int access(const char *filename, int amode); */
if (access(DirName, 0) != 0) {
/*int mkdir(const char *path)mkdir函数的第一个参数是目录名,第二个参数则指定了文件的模式
* 后面参数的值包括三位八进制,每一个数字指定不同用户对该文件的权限,第一个数字代表文件所有者的权限,
* 第二个数字代表指定组(group)的权限,第三个数字指定其他所有人的权限(public)。
其中,每一个数字包含三种权限:read,write,exec,他们权限值为4,2,1,
三个值想加就是某个用户对某个文件的权限!例如:如果允许自己有read,write ,exec,
本组人员有read,exec,其他人员仅有read 权限,则可以把mode设定为751*/
if (mkdir(DirName, 0755) == -1) {
perror("mkdir error");
return -1;
}
}
DirName[i] = '/';
}
}

return 0;
}
嗯,用户给了我一个关于在RHEL系统上完成一系列任务的查询。我需要仔细分析每个步骤,确保回答准确且符合要求。首先,用户需要介绍如何熟悉RHEL的基本操作,包括启动应用程序、浏览系统设置、使用文本编辑器、访问移动磁盘等。这部分可能需要分点说明,每个操作给出具体的方法,比如使用gnome-terminal或者应用程序菜单。 接下来是CLI下创建目录树的任务。用户要求在家目录下创建深度为四的目录树,每个子目录要有文件,包括特定文本和C语言文件。我需要考虑如何用mkdirtouch命令创建目录和文件,同时注意目录结构的深度。可能需要使用-p选项来创建多级目录,并且用花括号扩展来简化流程。例如,mkdir -p dir1/dir2/dir3/dir4,然后在每个目录中生成文件。这里还要注意文件名包含姓名或学号,所以可能需要用变量或者直接替换成用户的实际信息。 第三个任务是在GUI下截屏目录树。需要指导用户如何使用截图工具,比如在GNOME中使用快捷键或命令行工具如gnome-screenshot。同时,可能需要说明如何用nautilus打开文件管理器,并导航到目录进行截图。 删除目录树的部分,用户可能知道使用rm -rf,但需要提醒谨慎操作,确认路径正确,避免误删。此外,可能还要提到检查当前目录,避免在错误的位置执行删除命令。 最后是编辑命令历史并添加注释。这部分需要说明如何查看历史命令(history),将输出重定向到文件,然后用文本编辑器清理和注释。可能需要演示如何用nano或vim编辑文件,删除无用的命令,并为每个命令添加中文注释。 在思考过程中,还要注意用户可能的错误点,比如创建目录时的权限问题,或者删除目录时的风险。需要提醒用户注意这些细节,确保操作顺利。另外,对于不熟悉CLI的用户,可能需要更详细的步骤解释,比如如何进入家目录,如何确认目录结构是否正确。 同时,要确保所有命令符合RHEL的环境,避免使用其他发行版的特定工具。例如,文本编辑器部分,RHEL默认可能有vi或nano,而截图工具可能依赖GNOME环境。如果用户使用其他桌面环境,可能需要调整建议。 最后,整理命令历史时,要指导用户如何有效管理命令,避免误操作,并强调注释的重要性,方便日后回顾。整个回答需要结构清晰,步骤明确,适合不同层次的用户理解和操作。 一、熟悉RHEL基本操作(45分钟) 1. 启动应用程序 - GUI方式:点击左上角"Activities" → 输入应用名称(如Firefox、Files) - CLI方式:在终端输入`gnome-terminal &`(启动新终端),`firefox &`(后台运行浏览器) 2. 浏览系统设置 - 点击右上角状态栏 → 选择设置图标(齿轮形状) - 或终端执行`gnome-control-center`打开控制中心 3. 使用文本编辑器 - GUI文本编辑器:`gedit 文件名 &` - CLI编辑器:`nano 文件名` 或 `vim 文件名` 4. 访问移动磁盘 - 插入设备后自动挂载到`/run/media/[用户名]/`目录 - 使用`lsblk`命令查看挂载点 - 访问示例:`cd /run/media/[用户名]/U盘名称` 二、创建目录树(CLI操作) ```bash # 创建四级目录结构(替换张三为您的姓名/学号) mkdir -p ~/dir1/dir2/dir3/dir4 # 在各目录创建文件(示例使用张三_001学号) touch ~/dir1/张三_001_第1次linux实验.txt touch ~/dir1/dir2/张三_001_hello.c touch ~/dir1/dir2/dir3/testfile touch ~/dir1/dir2/dir3/dir4/final.txt # 验证目录结构 tree ~/dir1 ``` 三、GUI目录树截图 1. 打开文件管理器:`nautilus ~/dir1 &` 2. 使用截图工具: - 快捷键:Shift+PrintScreen 区域截图 - 或终端执行:`gnome-screenshot -i` 四、删除目录树 ```bash # 谨慎操作!确认路径正确 rm -rf ~/dir1 # 验证删除结果 ls ~/ | grep dir1 ``` 五、命令历史管理 ```bash # 查看历史命令(显示行号) history # 将历史命令保存到文件(假设本次操作从命令1000开始) history | awk '$1>=1000' > linux_lab_commands.txt # 编辑文件添加注释(示例内容): nano linux_lab_commands.txt ``` 示例带注释的命令文件内容: ``` # 创建多级目录 1001 mkdir -p ~/dir1/dir2/dir3/dir4 # 创建实验文档 1002 touch ~/dir1/张三_001_第1次linux实验.txt # 创建C语言源文件 1003 touch ~/dir1/dir2/张三_001_hello.c # 删除目录树(谨慎操作) 1015 rm -rf ~/dir1 ``` 注意事项: 1. 创建目录时注意权限问题,建议在家目录操作 2. 删除操作前务必确认路径,避免误删系统文件 3. 建议定期备份重要文件到移动存储设备 4. 使用`tab`键补全路径可减少输入错误 5. 实际文件名请替换为自己的姓名/学号 画出实验流程图
最新发布
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值