shell与kernel的理解

Shell 的英文释义是外壳,与kernel 内核名词遥相呼应,一外一内,一壳一核。内核就像瑞士银行的金库,存放着客户的黄金等众多的(硬件)资产,闲杂人等(包括客户)当然是严格禁止入内的,而作为客户要存取金库中的资产则需要通过专门的特定管理人员代为操作完成,并把存取(操作)的结果呈现给客户。在Linux操作系统中,shell的职能就类似于金库的操作人员,客户就是计算机使用者,使用者只需要告诉shell相应的操作需求,shell会把操作需求提交给内核,并把结果返回给操作者,至于过程是怎么实现,对操作者而言是无需可见的。

 

  当然去过银行的都知道,干啥事都得填表,表就相当于一种规范,操作员与shell交流也需要遵循规范,这个规范就是所谓的命令。比方客户要更改自己银行账户的密码,如果是本人,验明正身后按规范只需要写passwd,shell就会提示你把你的新密码在键盘上输入,shell将转交给内核;如果不是本人,请获得授权后,并在passwd 命令后面加上你代为更改的账户名称,如passwd centos,centos就是我们所说的命令参数。至于shell编程则是相当于客户一次性把需求写纸上都提交给金库操作人员,金库操作人员来回一趟就能完成,减少了等待,提高了效率。当然作为操作者,只需要填表,不需要把表翻译成shell与内核交流的黑话,这就是说我们无需编译。

 

Shell脚本的按龟腚必须有一个开头字段 #!,叫Shebang。它的名字来自于sharpbang ,分别代指#!两个符号的Unix名称。相当于上文打的比方中的金库操作员的工作牌,通过这个,金库知道这是什么身份的内部人员,戴着工作牌的就是客户指定的金库操作员——通常是/bin/bash,当然客户也可以指定其他自己喜欢的,比如/bin/csh。操作员后面长长的一串就是客户的一列操作需求。

 

   Shell编程既然叫做编程,那么也算做一种语言。对计算机编程语言来说,就势必要有一个概念叫做变量,这玩意就类似于初中所学的几元几次方程组里的XY。也用金库的例子来打比方,就像客户说我要在瑞士银行的金库里存个东西,但我还不知道要存的东西是什么类型的,是美刀还是金条,金库先给我留个位吧。于是银行就会在金库存放东西的地方(内存)给先划一块空间,既然不知道是什么类型,那就叫个笼统的名字(类型):东西(字符串),总是不会错的。至于最终存进去并且按客户的需要拿美刀投资增值还是把金条变现(运算),金库到时候会自行按类型隐式转换。

原创文章,作者:喵,如若转载,请注明出处:http://www.178linux.com/10366

(2)
喵
上一篇 2016-02-14
下一篇 2016-02-14

相关推荐

  • Linux系统常用命令介绍

    [root@alibaba ~]# ifconfig #查看或者配置网络适配器的接口信息 eth0      Link encap:Ethernet  HWaddr 00:16:3E:0A:7B:2A inet addr:172.18.10.115  Bcast:172.18.15.255  Mask:255.255.240.0 [root@alibaba …

    Linux干货 2018-03-04
  • 始于此

         “路漫漫其修远兮,吾将上下而求索”,一段路程的结束,意味着一段路程的开始,同岁月般,永远也不能回到出发的那一刻,你所能做的,就是一路走下去。回顾珍惜,却不能逗留。         我的学习宣言是“功崇惟志,业广惟勤”,时刻告诉自己,“功”出…

    Linux干货 2016-11-28
  • yum相关知识及源码编译安装http

    二.源码编译安装http 获得源码,将源码放在/usr/local/src下,并将其解压缩到此目录下 进入解压缩文件下,查看INSTALL文件 文件内容如下 黄色区域即为安装步骤 在当前目录下执行./configure –prefix=/usr/local/appach2 编译  make make install  把目标文…

    系统运维 2016-08-24
  • shell脚本编程基础之二(if、case、for、while、until、continue、break语句使用)

    在shell脚本编程中,我们可以根据命令的状态结果,判断要不要执行下一步,但是有时候要判断的问题不止一个,甚至对问题本身都要做判断;同时问题的结果有时也不止一个,这时要借助简单的逻辑与和逻辑或,就显得很无力;要完成复杂的任务,需要借助一定的流程控制:顺序执行、选择执行、循环执行、同时在脚本执行过程中,有用户交互输入的需; if语句 case语句 for语句 …

    Linux干货 2016-08-21
  • 优云软件:双态运维下,老司机是怎么玩CMDB的?

    行业内有个科技公司,CMDB前后建设12年,重构了N次,一言不合就重构,我深深的被这种屡拆屡战,初心不改精神所折服。我真心想问下做CMDB的兄弟,各位是怎么熬过来的?请不要回避,其实我们都曾被这样虐过! 近几年我司承建国内很多传统行业的CMDB项目,坦白的说,随着互联网+热潮的冲击,因很多传统企业也慢慢的在转变业务,把很多传统型的业务互联网化,或者开辟新型业…

    2016-08-05
  • 【原创】Tengine+LUA+Nginx-GridFS+jemalloc编译安装

    操作系统 ubuntu 14.04 LTS Nginx-GridFS为nginx直接访问mongoDB的扩展模块,目前只支持到mongodb2.6.12 mongodb安装请自己百度 #安装依赖包保平安 apt-get install root-system-bin autoconf automake gcc c++ libgeoip-devlibxml++…

    Linux干货 2016-11-30