首页 > 技术文章 > c语言编写shell程序myshell

aijingyi 2017-11-24 16:56 原文

前一段时间,一个同学的朋友找到我,让我帮他完成一项作业。

作业的内容大体是制作一款简易的shell程序,程序的框架由命题人已经搭好,需要在现有的框架下完成一系列的命令,例如ls、cd、exit、time等等。

题目要求点击我

写好的程序代码点击我

源码文件分析如下:

myshell.c :主程序,接受参数,输出信息。

myshell.h:头文件定义引用

globals.c:对命令进行分类

parser.c:对命令进行解析,用了487行代码

execute.c:具体执行命令,我的主要是修改了这个文件,大概增加了200行代码

Makefile:编译程序

主要修改了execute.c,用于添加命令函数和执行命令。
还有myshell.h用于添加头文件和声明函数。

使用方法:
在目录下输入make,编译成myshell可执行程序。
然后./myshell进入命令行,即可执行shell名。
例如ls,cd /opt,time,/usr/bin/cal -y等

完成的功能有:
step0
建立了Makefile文件,使用make命令即可编译成myshell程序。

step1
执行外部命令,如/bin/ls或/usr/bin/cal -y

setp3
执行内部命令,也就是自己定义的命令
1. exit 退出命令
2. cd 切换目录,cd为切换到默认目录或者cd /opt 切换到指定目录。
3. time 执行时间命令
4. ls 列出目录ls ,ls /opt

step4
支持顺序执行;
支持与执行&&
支持或执行||

step6
支持文件输出重定向
ls > a.txt 重新写
ls >> a.txt 追加写

step9
后台执行函数
ls; /bin/ps & time
time将会后台执行

题目的目的主要考察c语言的基本功,以及linux函数的使用。

由于水平有限,题目的要求里有很多没法完成,如果小伙伴们有兴趣的话可以进一步完善哦。

推荐阅读