本文来自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 星辰博客。