Linux-Project

1.【minishare】

1.1项目要求

1.1.1编写项目文档

1.项目需求项目背景描述实现该原因及背景需求分析分析项目要求(不涉及技术)概要设计根据需求设计相关技术实现功能软件框图:各个模块之间的功能及其关系模块设计具体每个功能的模块设计流程图:每个模块实现功能的具体步骤及方式2.将用户输入命令的时间及其命令写入到日志文件中并纪录[%d-%d-%d %d:%d:%d]:%s 3.根据代码功能,将代码划分成若干个文件,并使用多文件编程来实现代码main.cmain.hterminal.cterminal.hcommand.c command.hMakefile 编写文档 -> 分析整体软件设计及实现 -> 编写代码 -> 调试代码 -> 答辩

1.2项目解析

利用Linux中IO接口实现MiniShell
[linux@ubuntu:/]
1.ls
ls -a
ls -l
ls filename
ls -l filename

2.touchtouch filename 3.rmremove4.mkdir mkdir 5.rmdirrmdir 6.cd chdir7.cpIO8.mvrename 9.pwdgetcwd10.catIO11.chmodchmod12.lnlinksymlink

1.3实现过程

1.3.1创建工程项目文件夹【minishell】

1.3.2创建工程项目文件

【main.c】/【main.h】:项目实现主程序
【terminal.c】/【terminal.h】:终端输出
【command.c】/【command.h】:命令实现函数的封装
【Makefile】:自定义编译规则,进行工程项目文件的联合编译

1.3.3【command.c】

1.3.3.1【ls】

1.【ls】
函数原型:【int r_ls(void)】

函数功能:
遍历当前目录,并显示所有目录项

函数参数:

返回值:
【成功】:0
【失败】:-1

完成度:
成功实现

1.【ls-a】
函数原型:【int r_lsa(void);】

函数功能:
遍历当前目录,并显示所有目录项,包含隐藏文件

函数参数:无

返回值:

完成度:遇到问题,已解决。
问题1:接收【ls -a】命令时,【ls】和【-a】被识别为两个参数:
问题提炼:接收用户指令时,如何区分操作符和操作对象?

2.【ls-l】
函数原型:
【int r_lsl(void);】

函数功能:
遍历当前目录,并显示所有目录项信息:【文件类型】【文件权限】【文件链接数】【属主ID】【组ID】【文件大小】【创建时间:月,日,时,分】【文件名】

3.【ls filename】
函数原型

4.【ls -l filename】

1.3.3.2【touch】

【linux@ubuntu:/】

需要思考的功能:
1.打印终端命令行如何实现?
[linux@Ubuntu:当前所在目录] getcwd -> 绝对路径 -> 显示最后一部分内容
/home/linux/Desktop/dirname

2.能够接收用户的命令?ls									   gets -> 解析字符串获得命令及其参数touch a.txt 							rmdir dirname cp a.txt b.txt 3.实现对应命令?ls 									  opendir readdir closedir ls -a 								  opendir readdir closedir ls -l 								  touch 								  fopen fclose rm                                    remove mkdir 								  mkdir rmdir 								  rmdir cp 									  IO cat									  IO ln                                    symlink link pwd                                   getcwd cd                                    chdir mv                                    rename chmod                                 chmod 4.命令记录写入文件							  fopen fprintf fclose 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖店类目怎么选?七大类目详尽分析,总有一个适合你!

我是电商珠珠 在类目的选择上,很多人都会大意。认为类目跟风选一个热销的,后期着重选品就可以了。但做店铺最重要的就是类目,类目作为一个店铺的方向,决定着店铺的流量和后期的订单量。所谓的确定类目,就相当于你写作…

分布式学习Day5

文章目录 初始ES介绍倒排索引ES和MYSQL对比安装ES及其组件1.1.创建网络1.2.加载镜像1.3.运行2.1.部署 分词器 操作索引库文档操作RestAPI介绍 初始ES 介绍 倒排索引 ES和MYSQL对比 安装ES及其组件 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kiban…

【鸿蒙 HarmonyOS 4.0】网络请求

一、介绍 资料来自官网:文档中心 网络管理模块主要提供以下功能: HTTP数据请求:通过HTTP发起一个数据请求。WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。Socket连接:通过Socket进行数据传输。 日常…

如何在Linux搭建Inis网站,并发布至公网实现远程访问【内网穿透】

如何在Linux搭建Inis网站,并发布至公网实现远程访问【内网穿透】 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.…

【Week-P8】YOLOv5-C3模块实现天气识别

YOLOv5-C3模块实现天气识别 一、环境配置二、准备数据三、搭建网络结构-YOLO-C3模块四、开始训练五、查看训练结果六、总结(forward函数内部没有调用新增加的层,训练所使用的网络结构还是原来的结构,注意通道参数的一致,训练结果待…

MATLAB 导出可编辑的eps格式图像

任务描述:部分期刊要求提交可编辑的eps格式图像,方便美工编辑对图像进行美化 我试了直接print或者在figure窗口导出,发现导出的文件放到Adobe AI中并不能编辑,经Google找到解决办法: %EPS exportgraphics(gcf,myVect…

79.SpringBoot的核心注解

一、SpringBoot的核心注解 SpringBootApplication注解:这个注解标识了一个SpringBoot工程,它实际上是另外三个注解的组合,这三个注解是:SpringBootConfiguration:这个注解实际就是一个Configuration,表示启…

细说MSVC和MinGW生成库的差异及如何相互调用

文章目录 MSVC和MinGW的区别静态库和动态库的调用MSVC和MinGW 静态库互相调用MSVC和MinGW 动态库互相调用MSVC不同版本静态库、动态库调用MinGW不同版本动态库、静态库兼容性MSVC和MinGW的区别 MSVC是微软官方提供的C/C++编译器,与Windows平台紧密集成,得到微软官方的支持和…

Linux中的各类时间 与 find命令的常用参数

之前研究wal日志清理的副产物,wal日志名被修改后文件的哪个时间会变?应该如何删除?由此整理一下Linux中atime、mtime、ctime的区别,以及find的常见用法。 一、 Linux中的各类时间 1. 各类时间的定义 Linux中有三种用于文件时间戳…

逻辑回归的输出值为什么可以作为概率?

为什么逻辑回归的输出值可以作为概率?或者说为什么逻辑回归要求假设因变量符合伯努利分布? 这是因为逻辑回归(Logistic Regression)的Sigmoid函数是符合广义线性模型(General Linear Model)的伯努利分布&a…

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错

报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…

2024最佳住宅代理IP服务商推荐

跨境出海已成为了近几年的最热趋势,大批量的企业开始开拓海外市场,而海外电商领域则是最受欢迎的切入口。新兴的tiktok、Temu,老牌的Amazon、Ebay,热门的Etsy、Mecari等等都是蓝海一片。跨境入门并不难,前期的准备中不…

UE4 C++联网RPC教程笔记(三)(第8~9集)完结

UE4 C联网RPC教程笔记(三)(第8~9集)完结 8. exe 后缀实现监听服务器9. C 实现监听服务器 8. exe 后缀实现监听服务器 前面我们通过蓝图节点实现了局域网连接的功能,实际上我们还可以给项目打包后生成的 .exe 文件创建…

LeetCode 0106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看)

【LetMeFly】106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看) 力扣题目链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-an…

代码世界的构建有一个不可或缺的支柱(如何让代码更加稳健)

目录 一.概念引入 二.属性描述符的常见用法 三.实例运用(数据验证) 三.基于JS的属性描述符 使用中常见的问题 最近学JavaScript的过程中,有幸学到了一个新的知识点----属性描述符,尽管它在业务代码中可能并不常见,但是许多库源码中都有它的身影,比如vue 一.概念引入 属性…

FSQ: FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE

Paper name FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE Paper Reading Note Paper URL: https://arxiv.org/abs/2309.15505 Code URL: (官方 jax 实现) https://github.com/google-research/google-research/tree/master/fsq(pytorch 实现) https://github.com/luci…

OSPF综合实验详解

一、实验要求 1,R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用公有IP; 2,R3-R5/6/7为MGRE环境,R3为中心站点; 3,整个OSPF环境IP基于172.16..8/16划分; 4…

外观设计专利的特征和特点

许多人往往将商品包装与外观设计混同起来,其实两者的区别很大,外观设计由专利法予以保护,简单说,外观设计是指工业品的外观设计,也就是工业品的式样,包括形状、图案、色彩等。下面介绍外观设计专利的特征和…

SpringBoot+WebSocket实现即时通讯(一)

前言 本博客姊妹篇 SpringBootWebSocket实现即时通讯(一)SpringBootWebSocket实现即时通讯(二)SpringBootWebSocket实现即时通讯(三)SpringBootWebSocket实现即时通讯(四) 传统方…

OpenWRT部署web站点并结合内网穿透实现无公网ip远程访问

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和…