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 10:15
下一篇 2016-02-14 10:18

相关推荐

  • keepalived高可用haproxy配合varnish实现wordpress的动静分离

    haproxy和nginx都可以作为七层和四层反代服务器对外提供服务,此文通过haproxy和keealived配置varnish搭建wordpress的动静分离站点 一、实验环境 五台虚拟机: haproxy-1:搭建haproxy和keepalived服务,ip地址:192.168.11.176 haproxy-2:搭建haproxy和keepalive…

    2017-07-03
  • 第三天作业

    1、列出当前系统上所有已经登录的用户的用户名。注意:同一个用户登录多次,则只显示一次即可 [root@localhost ~]# who | cut -d ' ' -f1 | sort | uniq [root@localhost ~]# who (unknown) :0         &nbsp…

    Linux干货 2016-08-30
  • linux基础学习第十一天(shell循环、软件包管理)

    2016-08-16 授课内容: shell脚本基础:循环,for,while,until(未讲完) 软件包管理(未讲完): 软件运行环境 软件包基础 Rpm包管理 循环执行 将某代码段重复运行多次 重复运行多少次: 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 循环控制语句: break:【提结束循环,循环将不再执行】指前面的循环退出,退…

    Linux干货 2016-08-18
  • samba

    Samba 简介:      Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。…

    系统运维 2016-11-01
  • Shell脚本编程中作业

    一、作业: 1、1、编写服务脚本/root/bin/testsrv.sh,完成如下要求 (1) 脚本可接受参数:start, stop, restart, status (2) 如果参数非此四者之一,提示使用格式后报错退出 (3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功” 考虑:如果事先已经启动过一…

    Linux干货 2016-08-24
  • 用户管理

    用户管理 用户通过uid来识别,用户的uid是全局唯一,Linux用户分三大类: 用户类别可以分为 管理员 系统用户 普通用户 ——管理员的id为0,系统用户的id为1-499,一般用户的id为500- 组也是一样(centos6.9和centos7.3 id编号有所不同)上述是centos6.9的id编号。 管理员账户:root,可…

    2017-06-01