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

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

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

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

原文 http://www.178linux.com/10366?utm_source=tuicool&utm_medium=referral

shell与kernel的理解 转载的更多相关文章

  1. shell编程——if语句【转载】

    (2)shell编程——if语句_macg_新浪博客http://blog.sina.com.cn/s/blog_6151984a0100ekl6.html shell编程——if语句转载 if 语句 ...

  2. linux kernel menuconfig【转载】

    原文网址:http://www.cnblogs.com/kulin/archive/2013/01/04/linux-core.html Linux内核裁减 (1)安装新内核: i)将新内核copy到 ...

  3. SHELL网络爬虫实例剖析--转载

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://nolinux.blog.51cto.com/4824967/1552472 前天 ...

  4. shell基础——字符串处理(转载)

    Shell的字符串处理   1 得到长度   %x="abcd"  #方法一      %expr length $x      4  # 方法二      %echo ${#x} ...

  5. Oracle中B-TREE索引的深入理解(转载)

    索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.只不过,在索引里的数据存放形式与表里的数据存放形式非常的不一样.在理解索引时,可以想象一本书, ...

  6. iOS-深入理解(转载)

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...

  7. Shell学习笔记2》转载自runnoob

    学习且转载地址:http://www.runoob.com/linux/linux-shell-passing-arguments.html 这个网站整理的的确不错,看着很清晰,而且内容也很全面,个人 ...

  8. 谈谈对Spring IOC的理解(转载)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  9. upper_bound()和low_bound函数的基本使用和理解(转载,已获博主授权)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sdz20172133/article/details/80101838 前提:一个非降序列!!!!! ...

随机推荐

  1. 。。。Hibernate注解配置的注意事项。。。

    今天本来打算录视频的,突然遇到一个拦路虎,Hibernate注解配置,有一个注意点:要么都在属性上面注解配置,要么都在getXX()方法上面用注解配置,要不然就会报错: Caused by: org. ...

  2. paper 8:支持向量机系列五:Numerical Optimization —— 简要介绍求解求解 SVM 的数值优化算法。

    作为支持向量机系列的基本篇的最后一篇文章,我在这里打算简单地介绍一下用于优化 dual 问题的 Sequential Minimal Optimization (SMO) 方法.确确实实只是简单介绍一 ...

  3. 03---Net基础加强

    多态---虚方法    (子类可以选择重写或者不重写) class Program { static void Main(string[] args) { Chinese cn1 = new Chin ...

  4. -XX:+PrintGCTimeStamps 打印CG发生的时间戳

    -XX:+PrintGCTimeStamps –打印CG发生的时间戳   –[GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374 ...

  5. opencv之深拷贝及浅拷贝,IplImage装换为Mat

    一.(1)  浅拷贝: Mat B; B = image  // 第一种方式 Mat C(image); // 第二种方式 这两种方式称为浅copy,是由于它们有不同的矩阵头,但是它们共享内存空间,即 ...

  6. 【海岛帝国系列赛】No.6 海岛帝国:战争前线

    50234237海岛帝国:战争前线 [试题描述] 总指挥官WHT出神入化的计谋虽然大有用武之地,但是聪明的恐怖分子们采取了城市核武器防御系统,可以有效地抵制WHT的炸弹.YSF对此头痛不已,因此 召开 ...

  7. UIView属性及方法

    @property(nonatomic) CGFloat alpha //设置视图的透明度 //透明度的设置从最小0.0到1.0 ,1.0为完全不透明, //其中这个属性只影响当前视图,并不会影响其子 ...

  8. 有趣的insert死锁

    昨天看到一个很有意思的死锁,拿来记录下: 环境:deadlock on 事务隔离级别: read commited 表结构: root::>show create table lingluo\G ...

  9. 【python cookbook】【字符串与文本】8.编写多行模式的正则表达式

    问题:用正则表达式对一段文本块做匹配,但是希望在进行匹配时能够跨越多行 解决方案: 1.正则表达式添加对换行符的支持: 2.re.compile()函数一个有用的标记-re.DOTALL使得正则表达式 ...

  10. api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案

    api-ms-win-crt-runtime就是MFC的运行时环境的库, 在windows上编译也是用微软的visual studio C++编译的软件, 底层也会用到微软提供的C++库和runtim ...