shell与kernel的理解

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。也用金库的例子来打比方,就像客户说我要在瑞士银行的金库里存个东西,但我还不知道要存的东西是什么类型的,是美刀还是金条,金库先给我留个位吧。于是银行就会在金库存放东西的地方(内存)给先划一块空间,既然不知道是什么类型,那就叫个笼统的名字(类型):东西(字符串),总是不会错的。至于最终存进去并且按客户的需要拿美刀投资增值还是把金条变现(运算),金库到时候会自行按类型隐式转换。

转载于linux运维部落 » shell与kernel的理解http://www.178linux.com/10366

见于张飞online博客

时间: 2024-11-07 05:57:24

shell与kernel的理解的相关文章

shell与kernel的理解 转载

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

对Shell排序算法的理解

Shell排序算法的基础是插入排序算法,所以在开始讲Shell排序算法之前,先讲讲插入排序算法. 我们先来看一个简单的小问题,给出一个已经排序好的数组arr以及另外一个数字n,如何将n放入到数组arr中,使得放入n后arr内的所有数字依然是有序的? int arr[10] = {3,4,7,8,10,33,56,66,100}; int n = 47; 显然我们想要的结果是{3,4,7,8,10,33,47,56,66,100},那么具体该怎么做呢?很容易就可以想到,最简单的做法就是从数组中最大

shell 通配符和正则表达式理解和区别

一.正则表达式: 元字符是用来阐释字符表达式意义的字符,简言之,就是用来描述字符的字符. 正则表达式RE(Regular Expression)是由一串字符和元字符构成的字符串. 正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合.实际上正则表达式完成了数据的过滤,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据.                         基本的正则表达式元字符集合及其意义 符号 意义 * 0个或多个在*字符之前的那个普通字符和前

shell脚本进阶练习题---理解和练习

1.编写脚本/root/bin/createuser.sh, 实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之:显示添加的用户的id号等信息 2.判断/var/目录下所有文件的类型 3.添加10个用户user1-user10,密码为8位随机字符 4.编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态 有几个有意思点的shell脚本 5.九九乘法表 6.等腰三角形 7.国际象棋棋盘 不忘初心 砥砺前行!!! 原文地址:http

Shell 十三问 的学习记录

在 BBS上看到了Shell十三问的帖子,由于比较就远了,怕以后再也找不到了,就把笔记贴过来了, 原帖地址: shell 十三问http://bbs.chinaunix.net/thread-2033675-1-1.html 贴出我做的笔记: <一>.为何叫做shell 使用者通过shell(操作系统即核心kernel的外壳)与kernel沟通,这是shell与kernel的命名的关系. 从技术角度讲,shell的最简单定义是——命令解译器( Command Interpreter ) /et

快,学会 shell

本文分成入门篇和基础篇.基础篇包括变量.字符串处理.数学运算三部分.基础篇包括流控制.函数和函数库三部分.主要是基于例子进行讲解,其中有 4 个复杂一点的脚本,看懂了也就入门了. 我们先来聊一聊 shell 和 shell script 的概念.计算机的运行离不开硬件,我们通过操作系统(OS,Operating System)操作硬件,而我们所说的 linux 严格来说是操作系统(OS)的核心部分--内核(Kernel).我们无法直接操作 kernel,需要借助于 kernel 外的一层壳 sh

Shell条件与测试

分类参考 文件状态测试 -b filename 当filename 存在并且是块文件时返回真(返回0) -c filename 当filename 存在并且是字符文件时返回真 -d pathname 当pathname 存在并且是一个目录时返回真 -e pathname 当由pathname 指定的文件或目录存在时返回真 -f filename 当filename 存在并且是正规文件时返回真 -g pathname 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真 -h

学习 shell脚本之前的基础知识

转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要

Shell 条件测试

文件状态测试 -b filename 当filename 存在并且是块文件时返回真(返回0) -c filename 当filename 存在并且是字符文件时返回真 -d pathname 当pathname 存在并且是一个目录时返回真 -e pathname 当由pathname 指定的文件或目录存在时返回真 -f filename 当filename 存在并且是正规文件时返回真 -g pathname 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真 -h filen