一 、 shell命令解析以及识别通配符
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行 。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
shell是一个抽象概念,shell的一切操作都在计算机内部,负责处理人机交互,执行脚本等,是操作系统能正常运行的重要组 成部分
shell在解释命令的过程中类似于编译器的预编译过程。shell对于输入的命令优先解释所有的特殊字符,再对转换完成的新命令行进行内核的系统调用。在输入命令的过程中,输入完命令直到按下enter的时候,然后shell才会以进程方式执行你所提交的命令,输入的命令的每一个charactor(字符)分为如下两种:
*literal(文字):也就是普通纯文字,对shell来说没有特殊功能。
*meta(元字符):对shell来说,具有特定功能的保留字。
解释过程: 分割管道(将指令切成个别的命令,以哥哥命令进行以下解析)------》取出token(使用分割字符-----空格、tab或者eter将命令分割成token)---》替换别名(检查命令的第一个token是不是别名,若是则把别名替换成真正的命令)---》括号扩展
(如ltouch a{a,b}会扩展