命令是运维工作中非常重要的组成部分,通过执行相关的命令就能够完成对系统的日常维护。命令是如何传送到系统中执行的,得益于一个叫Shell的编译器,本小节将对这个编译器的作用和原理进行简单的介绍。
Shell是用户与计算机内核交流的桥梁,负责将用户输入的命令传送到计算机内核中执行,并将执行结果显示给用户。
事实上,Shell是命令语言、命令解释程序及程序设计语言的统称。它是介于系统内核层与用户层之间,为用户提供操作系统资源的接口。进一步说,Shell是一种强大的计算机程序设计语言,通过它能够轻松地调用其他程序并对这些程序的输出进行再次处理,这种能力使得Shell成为完成文本处理任务的一个理想工具。
Shell是在系统启动并初始化后产生的,而用户在登录系统后所使用的Shell实际上是一个新的子Shell,因此只要用户登录后就可以执行操作。当然,在图形界面开启一个终端窗口,实际上也是开启一个子Shell。
系统中的每个Shell程序被称为一个脚本,这是一种很容易使用的工具,通过它可以将系统调用、公共程序、工具以及编译过的二进制程序组合在一起。事实上,系统所有的命令、工具以及公共程序对于Shell脚本来说都是可调用的,这极大地丰富了管理系统的工具和命令。
Shell作为连接系统内核与用户之间的程序接口,为用户提供了一种启动程序、管理文件系统的文件和进程的方式。
需要注意的是,Shell是位于系统内核之外并运行在用户空间的程序,且在用户空间中还存在存放系统命令的命令库。在整个用户空间中,Shell位于用户层的下面并与内核空间的内核相接,且每个Shell都是独立的进程并独立工作。对于每个Shell,首先需要读取用户输入或设定的信息,经过处理后交给内核执行,并将执行结果返回。接下来介绍Shell的工作原理。
用户通过终端的命令提示符将自己的想法(需要计算机做的事)以命令的方式输入Shell中,Shell将用户输入的命令翻译成计算机能够识别的0和1组成的机器码,再将机器码传送到内核中执行,内核就根据这些机器码来操作计算机硬件,最后将操作的结果输出到显示器上。