实现一个简单的shell(1)

本文来自TOMORROW 星辰博客。

原文链接:DIY Shell之——shell的基本框架(1)


 

 

这是本博客的第一个文章专辑。主要介绍如何用 C 语言基于Linux系统来实现一个简单shell,DIY 一个shell。通过自己编程实现一个Linux下的shell,可以使得个人对进程的概念、进程的通信和操作系统的运行的理解更加的深刻。还会大大增加个人学习的成就感,提供学习兴趣。

这一个文章专辑被命名为 StupidShell ,这也是作者所实现的shell的名称,已经开源放到了 GitHub:StupidShell 代码仓 上,感兴趣的读者可以自行前去查看下载,也欢迎对该项目进行星标、提出改善建议、或者自行 fork 之后改善。

 

本专辑会首先从Linux下的 shell 的实现思想上来解读shell的工作原理和一些必要的知识要点,然后从完整的代码实现来解读具体的工作原理。

 

这是 StupidShell 专辑本章里的第一篇文章,主要介绍什么是 shell 和 Shell 的基本代码架构。

 

shell 的中文翻译为“外壳”,它的定义就是提供接口给用户与操作系统内核交互的软件。是 Linux 系统下,可以大大提高生产效率的工具。类似于 Windows 下的命令提示符。

简单来说就是一个可以分析并执行用户所输入的命令的软件。

 

shell 的工作流程应该是这样的:

1、打印命令提示符$或者#;

2、读取并分析命令;

3、执行命令;

4、执行完命令后,重复 1-3;

 

是不是很简单?看起来轻而易举,三两行代码就可以实现了是不是?

1
2
3
4
5
6
while true
{
         printf ( "$" ); //打印命令提示符
         if ( 'p' ==gerchar()) //读取命令;分析命令
                 print( "Hello ,I am a shell .\n" ); //执行命令
}

上面的代码是不是就已经实现上述的 shell 的 3 个工作流程?虽然,它只能执行一个命令,看起来非常 stupid;

但是,它已经把 shell 的三个关键步骤的思想体现在里面了。

 

当然这个小东西还不配叫做 shell。因为 shell 执行的命令不仅仅包括内建命令(像以上代码段所实现的命令),还包括外部命令。

欲知何为内建命令和外部命令,且听下回分解。

 

 

 

本文来自TOMORROW 星辰博客。

原文链接:DIY Shell之——shell的基本框架(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值