什么是shell
shell 翻译成中文就是壳,外壳的意思。它是一个命令行解释器,负责接收用户命令,然后调用相应的应用程序。它将用户和系统内核隔离开来,做他们两者间交互的桥梁。
这就是为什么我们发送一系列命令,系统都知道对应的操作是什么。
shell的功能
1.用户发送命令给shell:将使用者的命令翻译解释给中央内核处理
2.内核发送反馈结果给shell:将核心处理结果翻译呈现给使用者
举个例子:古代为了保证闺中少女的名节,保护少女们收到伤害,和男子决定婚嫁沟通是由媒婆来完成之间交流等活动的。那我们这个shell是不是和媒婆很像呢。
shell这个命令行解释器是一个统称概念,具体到Linux中是有/bin/bash//根目录下bin目录中的bash完成的
模拟shell过程
我们先观察一下Linux下的shell是工作呈现的结果是什么吧。
以ls命令为例子:
我们的显示格式有命令提示符:[用户@主机名 目录] 以及我们的命令组成。
我们暂且忽略命令提示符,先完成命令部分。
1.首先利用vim一个文件
具体操作见博客linux vi/vim详解
vim myshell//进入
//从普通模式进入可写模式,然后开始写代码
2.从输入终端获取字符串,因为scanf(%s)不能接收空格,所以采用另一种格式接收整一行数据
2.分解字符串,按照空格位置拆分到一个一个的命令参数,分别存入数组的各个单元中去
3.创建一个子进程,在子进程中调用exec进行进程替换,让子进程去运行命令
关于exec函数,父子进程以及进程替换详细见博客linux 如何创建子进程fork和fork,vfork,exec函数组详