项目需求:
1.获取终端用户输入的命令,并输出相应的执行结果。
touch
cp
mv
ls
ls -a
ls -l
mkdir
rmdir
pwd
cd
ln
ln -s
exit ---------->退出minishell
2. 使用多文件方式实现,使用Makefile管理
重要函数预习:
1.首先,我们需要了解Linux的相关函数调用,举例可知。
例如:cp 1.txt 2.txt 其分为三段,cp函数调用,1.txt与2.txt 两个文件的文件名,其效果为,将1.txt的内容拷贝到2.txt。
由此可知,我们需要将截取的函数分段,及接收cp-1.txt-2.txt
所有我们迎来第一个函数:strtok将接收的字符串遇到空格截断
我们定义了一个指针用来接收指向的截断地址,存放在cmd-arg[i]中。
2.理解题目要求,我们还需要进行多文件管理
我们要开始多文件管理,首先就要进行分类,我们将.h文件放在include中集中管理,将.c文件和makefile文件放在src文件中进行调控,那么,makfile中包含的是什么呢 ,内容如下:
app:$(src)
$(cc) $^ -o $@ -I(INCLUDE) $(FLAG)i
$^(依赖文件)指代$(src)
$@(目标文件)指代app。之后使用方式为make更新,./app使用
-I(INCLUDE)指代上一层的include文件夹内的,h文件。
大体轮廓已经构造完成,我们开始进行具体功能的实现。
具体功能:
1.touch:
分包装.c文件
分包装.h文件
主函数内进行分段之后的if判断语句touch阶段(完整代码在文章结尾)
2.cp
同样分为.c .h 主函数内容。后面简写由左至右。
判断条件接上面touch
3.mv
我们这次写的mv只包括了更改文件名,没有包括文件的移动。
4.ls类(着重ls -l)
我们可知ls有三种方式分别为(ls , ls -a , ls -l),我们从接收的k[i]中判断位置,例如k[0]指代ls位置,k[1]指代{-a或者-l},由此判断进入哪个函数进行执行。
5.mkdir和rmdir
6.pwd和cd
7.ln和ln -s
有陷阱ln,判断ln 与-s阶段,将截断分为了四段,软链接ln -s 1.txt 1.link为四段,在软链接传参中要注意。
完整代码: (切记添加头文件)
成果代码展示(部分)
编程学习,继续加油!