首页 > 系统相关 >在 Linux 环境下模拟实现命令解释器

在 Linux 环境下模拟实现命令解释器

时间:2023-04-26 23:04:40浏览次数:35  
标签:文件 解释器 一个 子目录 指定 复制 Linux 目录 模拟

访问【WRITE-BUG数字空间】_[内附完整源码和文档]

操作系统大作业 Linux 命令行,在 Linux 环境下模拟实现命令解释器。在指定的一个目录及其子目录中查找指定的文件和目录,并输出查找到的文件和目录的绝对路径,并指明是文件还是目录。详细设计见md文件。

一.程序概述

1.完成的任务:

1)显示当前所在目录的路径名;

2)列出指定目录中所有的目录和文件;

3)改变当前工作目录;

4)新建一个目录即新建一个文件夹;

5)删除一个目录即删除一个文件夹;

6)退出命令解释程序;

7)重命名一个文件或目录;

8)复制已经存在的目录;

9)在指定的一个目录及其子目录中查找指定的文件和目录,并输出查找到的文件和目录的绝对路径,并指明是文件还是目录。

2.遇到的困难及解决的问题

1)一开始不知道用什么方式在不用 system()的情况下完成这个命令解释程序,后来看到了要求里面的函数也不知道用来干嘛,所以就去拿每一个函数去百度,知道它们分别用在哪里;

2)关于列出指定目录中所有的目录和文件这个功能,不知道用什么方式遍历目录中的所有节点,后来,通过查询 opendir()、readdir()、closedir()的用法解决了这个难题;

3)在实现复制功能时,关于复制整个目录的内容到另一个目录下的这个功能不知道如何实现,递归但是不知道如何定位所复制目录中的文件;

4)关于查找文件的功能,使用了 ftw()函数的回调,实现了对指定目录的遍历,并且通过判断实现待查找文件的匹配。

5)在复制文件时出现文件权限不足、复制出来的文件无法正常打开的情况,经过多次尝试,发现是在创建文件的时候没有把权限设置完整,在完整之后就解决了这个问题。

二.概念原理

1.目录:为了方便对存储介质中的文件的管理而产生的一种索引结构,可以理解为目录中包含有另外的目录和文件。

2.路径:说明一个文件或者一个子目录在整个目录系统中的位置,用于定位一个文件或者子目录,包括绝对路径和相对路径两中方式。

3.文件:文件是指存储在存储介质中的一段特定格式的数据资料。

4.目录流:对一个目录中的每个项进行读取的方式,是目录中所有节点的信息序列。

5.文件流:是该文件中数据资料的格式化序列,代表着所有数据的信息。

6.文件复制:将一个文件中所有的内容全部备份到另外一个文件中。

7.函数回调:回调是一种双向调用模式,C 中通过函数指针来实现。

在 Linux 环境下模拟实现命令解释器_指定目录

在 Linux 环境下模拟实现命令解释器_指定目录_02

在 Linux 环境下模拟实现命令解释器_子目录_03

在 Linux 环境下模拟实现命令解释器_指定目录_04

标签:文件,解释器,一个,子目录,指定,复制,Linux,目录,模拟
From: https://blog.51cto.com/u_16075443/6229026

相关文章

  • How to get Linux kernel Information using the command line All In One
    HowtogetLinuxkernelInformationusingthecommandlineAllInOne如何使用命令行获取Linux内核信息uname#macOS$uname-aDarwinxgqfrms-mm.local22.2.0DarwinKernelVersion22.2.0:FriNov1102:08:47PST2022;root:xnu-8792.61.2~4/RELEASE_X86_64x......
  • linux查看某个服务的启动端口号
    可以使用以下命令查看某个服务的启动的端口号:使用netstat命令netstat-tlnp|grep服务名其中,-t表示TCP协议,-l表示监听状态,-n表示不解析域名,-p表示显示进程名和进程ID。例如,查看SSH服务的启动端口号:netstat-tlnp|grepsshd使用lsof命令lsof-i:端口号其中,-i表......
  • 在linux中如何读取使用tcpdump命令抓取保存的tcpdump capture file类型的数据文件
    笔者在之前的文章中,说明了如何在linux使用tcpdump命令进行抓包,以及将抓包结果保存到文件具体操作,可以参考:https://www.cnblogs.com/5201351/p/17357444.html如果是使用tcpdump命令,-wxxxxxx.dump这种方式保存的文件,我们可以通过file命令发现其文件类型[root@localhostqq-52......
  • ADC模拟转换器
    【ADC简介】ADC(Analog-DigitalConverter)模拟数字转换器,简称AD转换器可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁:STM32主要是数字电路,只有高低电平,没有电压多少的概念工作模式:逐次逼近型关键参数分辨率:12位AD值,表示范围是0~(2^12......
  • 关于在linux中使用tcpdump命令进行简单的抓包操作
    如果需要在linux操作系统中对网络数据进行抓包,然后进行数据分析,一般使用最多的就是tcpdump命令了这里笔者介绍一下,关于linux下tcpdump命令的简单使用方法,首先是需要在OS中安装tcpdump软件包的(最小化安装的系统中是没有tcpdump的)[root@localhostqq-5201351]#yuminstalltcpd......
  • 60秒内检查Linux服务器性能,你能做到吗?
    导读如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述:通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解uptim......
  • Linux 任务控制(bg job fg nohup &)
    Linux任务控制(bgjobfgnohup&)转载自https://www.cnblogs.com/mfryf/archive/2012/03/09/2387751.html一、简介    Linux/Unix区别于微软平台最大的优点就是真正的多用户,多任务。因此在任务管理上也有别具特色的管理思想。我们知道,在Windows上面,我们要么让一个......
  • Linux笔记
    Linux注:笔记中带有特殊标识,特殊标识仅为作者自己设立,起提醒作用枫染:主要是标识额外的其他命令,或补充命令幻舞:主要是标识命令的其他用法,多用法,或选项寒星:主要是标识快捷方式和键盘操作落霞:主要是标识其他操作或危险命令操作Linux用户Linux的用户有三种:root 普通用户 系统......
  • linux下分析java程序占用CPU、内存过高
    转:https://www.cnblogs.com/wu-wu/p/11923250.html CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低,说明CPU占用率......
  • Linux 字体管理相关操作
    查看已经安装的字体fc-list#提示不是命令则先安装包fontconfigyum-yinstallfontconfig下载党政机关字体党政机关字体提取码:xixv在进入目录/usr/share/fonts/winfonts没有则创建,刷新字体库sudofc-cache–fv再次查看已经安装的字体fc-list/usr/shar......