tinyshell:学习写一个简单的Shell

2019-07-21

最近三周实现了一个简单的shell: tinyshell

截图

最近三周的空闲时间,我都在学习写一个shell,虽然只完成了一些基础的功能,很多特性尚未实现,代码写的也很挫,而且可以确定的是还藏有不少bug。但我觉得这个项目第一个阶段已告一段落,值得写一篇博客纪念一下。

代码地址:https://github.com/WuHuaJi0/tinyshell。正如其名:tinyshell,到目前为止也只有五百多行的代码。除了实现最基础的:读取用户输出的一串命令并执行的功能外,还实现了:管道,重定向,history,cd 这些特性。还有一些想实现的特性写在readme中,就不复制过来了。

为什么想自己实现这样一个东西:

原因有二: 1,想动手练习一下系统编程的一些概念。 2,想练习一下C语言。

这三周下来,这两个目的都有一定程度的完成。

对于系统编程,这里用到的系统调用并不太多,也就是一些文件io和进程的内容,但也促使我进行了一些思考,自觉对系统编程有了更深一点的体会(后面我还想自己实现以下kill和信号发送相关的内容,后台进程和会话相关的内容,但感觉目前积累不够,日后再实现)

对于C语言的进步是巨大的,之前我的C语言仅限于大学时候学过的一点,有一些基本的概念,毕业后虽然也有复习过一点,但始终缺乏系统的练习,只能称之为了解。经过这三周的一定代码量的练习(虽然目前只有500多行,但估计实验、demo、反复调试这些估计得有2000行了吧),对C语言至少建立了信心,代码依然写的挫,至少很多概念已经比较清晰了:特别是指针和内存的内容,碰到问题也能试着去分析了。

接下来

接下来会不断完善,有不少部分写的真的挫,需要重构一下。也会继续实现一些新的想法。