【Linux系统编程】shell的感性理解——王婆说媒

news2024/12/25 12:41:49

文章目录

    • 1. shell是什么?它有什么作用?
    • 2. 透过王婆说媒感性理解shell的运行机制
      • 开端
      • 发展
      • 波澜渐起(正常命令的处理)
      • 故事角色与处理过程中各部分的映射
      • 走向高潮(非法请求的处理)
      • shell 存在的意义
      • 结尾

1. shell是什么?它有什么作用?

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)
主要工作包含:将使用者的命令翻译给核心(kernel)处理;同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

这些概念大家可以先了解一下,接下来,正式进行今天的学习!

在之前的文章里我们学习了Linux中常见的一些基本指令,那不知道大家有没有一些疑惑:

在这里插入图片描述
我们输入相关的指令,然后它就会被执行,并返回对应的结果。
那我们输入的命令是怎么被执行的呢?
其实这里面要借助一个叫shell的东西。

那shell是个什么东西呢?

Shell是一种命令行解释器,Shell充当了用户和内核之间的接口,负责解析用户输入的命令并将其传递给操作系统内核执行,并将执行结果返回给用户。
Linux中的shell一般是bash,Bash(Bourne Again SHell)是一种常见的shell。
在这里插入图片描述

我们可以画个图来理解一下:

假设这是我们的操作系统
在这里插入图片描述
而我们作为用户,其实是不能直接访问操作系统的,那我们如何和操作系统进行交互呢?
🆗,那在操作系统的外面呢,包裹了一层软件层,我们一般把它称为shell,或者叫外壳程序,那我们现在其实就可以把它认为是命令行。
在这里插入图片描述
那对应Windows下面其实就是Windows GUI,即Windows的图形化界面。
那我们输入的命令其实就先给到了shell,shell负责解析用户输入的命令并将其传递给操作系统内核执行,并将执行后的结果返回给我们用户。
在这里插入图片描述

那通过这张图,大家可能还是不能很好的理解。下面我们讲一个故事,来帮助大家更好的理解

2. 透过王婆说媒感性理解shell的运行机制

认真听,故事开始了✈

开端

在这里插入图片描述
故事的主人公——小帅,住在一个美丽的小村庄里,村上有这样几户人家
在这里插入图片描述
小帅是村长家的儿子,有权有势,但小帅却是一个闷骚且害羞的程序员,喜欢隔壁的MM如花。

发展

小帅呢,今年已经不小了,已经到了该找媳妇的年纪了。
它的老爹也是非常着急,每天催小帅。
在这里插入图片描述
终于有一天,小帅鼓起勇气跟他爹说,我们觉得隔壁的如花不错,我挺喜欢的,但是我不敢去找人家。
小帅的村长老爹胸脯一拍,说,包在我身上,于是就想到了村东头著名的媒婆——王婆。打算请王婆去如花家给小帅说媒。

波澜渐起(正常命令的处理)

第二天,王婆就如约来到小帅家,问小帅,你对你的另一半有什么要求吗?
小帅告诉王婆说,没什么要求,我就喜欢隔壁的如花,您帮我说一说。
需求很明确,于是王婆出门直奔如花家,跟如花说道,你家隔壁的小帅,工作也不错,还是村长家的儿子,并且对你一直有意思,你看你们两个能不能处一处。
可是如花一直对小帅的印象不好,一口回绝了王婆
王婆于是便返回了小帅家,告诉小帅,人家如花对你没有那个意思,要不就算了吧。

故事角色与处理过程中各部分的映射

那通过上面的故事,相信大家已经有了一点理解了:

在这里插入图片描述
那故事中的小帅,其实就是对应用户,王婆就对应shell,如花就对应操作系统。

为什么小帅不直接找如花呢?

因为小帅害羞内敛,不“善于”直接和如花打交道(用户不能直接和操作系统交互)。那你不善于,有人善于,这个世界上存在一种职业——媒婆,于是呢,小帅就把对应的需求告诉了王婆(用户输入的命令被传递给shell),王婆把小帅的想法整理成自己的话并告诉如花(shell解析用户输入的命令并将其传递给操作系统内核执行),如花思考一番之后,把自己的决定告诉王婆,由王婆转告给小帅(shell将执行后的结果返回给用户)。

故事到这里还没有结束…

走向高潮(非法请求的处理)

上面说到,王婆把如花的意思告知了小帅,但是小帅不想放弃,对王婆死缠烂打,恳求她再去说一说。
王婆拗不过小帅,更拗不过小帅的村长父亲,只能再去找如花。
可是呢,王婆刚走到如花家门口,还没进去呢,就看到如花和同村的李四两个人在一起了,已经准备结婚了。
王婆一看人家都这样了,我再去说媒,不是找打嘛。
王婆知道现在小帅跟如花肯定是不可能了,于是直接原路返回,不再告诉如花小帅还想和她处对象的请求了。

那与之对应

如果我们用户输入的指令是非法请求,在shell层就直接被拒绝了
在这里插入图片描述

继续我们的故事:

王婆原路返回,告诉小帅,人家已经有男朋友了,你们不可能了,死了心吧,也不要再去打扰和纠缠人家了。
那在这里王婆的做法其实也是对如花的一种保护,想让小帅死心,害怕小帅疯狂的迷恋会影响到如花的生活。
那由此我们也得出shell存在的另一个意义或者说作用,就是可以保护操作系统。

那我们来总结一下:

shell 存在的意义

  1. Shell是一种命令行解释器,Shell充当了用户和内核之间的接口,负责解析用户输入的命令并将其传递给操作系统内核执行,并将执行结果返回给用户。
  2. 保护操作系统。

结尾

王婆上一次已经很明确地表明了如花和小帅是不可能的了,可是痴情的小帅依然不死心,苦苦哀求王婆再次传达自己的心意。
而王婆也确实不好拒绝,因为小帅是顾客啊,是用户啊,况且小帅还有个村长老爹。
但是呢,王婆又考虑到,如果最后自己跑了好多趟,还是办不成这件事,还自己的招牌不就被砸了嘛,我王婆可是十里八村著名的媒婆啊。
王婆苦思冥想,终于想到一个办法,既能把事办了,如果失败了,也不影响自己的名声。那就是找自己招的实习生去干,这样即使没说成,对王婆自己的名声也没影响。
在这里插入图片描述
那这样久而久之,王婆也有了一套自己的操作方式,再有人找我说媒,就派几个实习生去做。

那与之对应的:

就是我们后面要讲的——执行命令时,创建子进程去执行。

那这个大家先了解一下,我们后面会讲,王婆说媒的故事到此也就告一段落了…
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch:删除快照安全吗?

快速回答:是的! 删除快照是安全的,因为每个快照在逻辑上都是独立的。 了解如何以及为何可以继续阅读。 Elasticsearch 使用增量快照,使你能够高效地备份和恢复数据。 你可以在这篇精彩的文章中找到它的工作原理 “Elasticsearch&…

【select2下拉框】带搜索功能以及实现关联下拉框

需求 1、有两个下拉框 地区下拉框机构下拉框 2、地区变化&#xff0c;机构下拉框中内容也随之变化。 3、当地区为空时&#xff0c;显示全部机构列表 效果展示 代码实现 1、前端 &#xff08;具体样式相关代码不在此展示&#xff09; <div class"form-group"…

简单的手机记事本怎么把内容标记为完成状态?

很多人平时会在手机记事本上记录一些自己身边需要记住的事情&#xff0c;有的事情做完之后不想删除&#xff0c;又想要和未完成的内容区分开&#xff0c;那么这种情况下可以将它标记为已完成状态。简单的手机记事本怎么把内容标记为完成状态呢&#xff1f;以iPhone手机端敬业签…

阿里云原生大数据计算服务maxcompute学习体验

这两天有兴趣学习了下阿里的maxcompute大数据&#xff0c;随便谈谈自己的感受。 一、感受 阿里云相关的产品线太多了&#xff0c;热门产品一页已经放不下了。正因为东西太多给人一种杂乱的感觉&#xff0c;也可能这是给技术人员用的&#xff0c;所以不用太讲客户体验&#xf…

C# Lable增删改查

文章目录 C# Lable 增删改查&#xff08;1&#xff09;项目截图Insert&#xff08;新增&#xff09;新增执行SQL语句方法 Delete&#xff08;删除&#xff09;删除执行SQL语句方法 Update&#xff08;修改&#xff09;删除执行SQL语句方法 Select&#xff08;查询&#xff09;查…

DeepC 实用教程(二)建模流程

目 录 一、前言二、单位制与容差三、环境数据四、浮体模型4.1 定义浮体数据4.2 浮力补偿4.3 创建系泊连接点 五、系泊系统5.1 创建系泊连接点5.2 定义各种属性5.3 创建线对象 六、参考文献 一、前言 SESAM &#xff08;Super Element Structure Analysis Module&#xff09;是由…

JUC之CAS和原子操作类

文章目录 1 CAS1.1 是什么1.2 原理1.3 UnSafe1.4 自旋锁1.5 CAS的问题1.5.1 死循环消耗CPU资源1.5.2 ABA问题 2 原子操作类2.1 引用类型原子类2.1.1 AtomicReference2.1.2 AtomicStampedReference2.1.3 AtomicMarkableReference 2.2 基本类型原子类2.3 数组类型原子类2.4 对象的…

【2022 JCR 期刊影响因子】(四)水资源

原文链接&#xff1a; 【2022 JCR 期刊影响因子】&#xff08;四&#xff09;水资源 微信公众号同步更新 地信学子GISer and Coder 2022 JCR 期刊影响因子刚刚发布&#xff0c;今年的影响因子只保留1位小数。水资源领域的 SCIE 收录期刊的影响因子如下。 微信公众号同步更新 …

Unity基础-Vector3.Lerp的使用给一个简单的实例

一个简单的实例&#xff0c;演示了如何使用Vector3.Lerp来实现物体在两个位置之间平滑移动的效果&#xff1a; using UnityEngine;public class ObjectMovement : MonoBehaviour {public Transform startPoint;public Transform endPoint;public float moveDuration 2f;priva…

[PMLR 2021] Zero-Shot Text-to-Image Generation:零样本文本到图像生成

[PMLR 2021]Zero-Shot Text-to-Image Generation&#xff1a;零样本文本到图像生成 Fig 1. 原始图像(上)和离散VAE重建图像(下)的比较。编码器对空间分辨率进行8倍的下采样。虽然细节(例如&#xff0c;猫毛的纹理、店面上的文字和插图中的细线)有时会丢失或扭曲&#xff0c;但图…

为什么有些前端一直用 div 当按钮,而不是用 button?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言div 和 button使用…

Linux学习之进程控制和进程之间的关系

nice值的设定 关于vim四种模式一些介绍&#xff0c;可以看《Linux学习之vim正常模式和插入模式》 vim a.sh&#xff0c;按i进入到插入模式&#xff0c;这样才能输入字符到a.sh文件中。 把下边的内容写进去&#xff1a; #!/bin/bashecho $$ while : # 无限循环 do: done按Es…

Redis设计与实现笔记之SDS

1 数据结构与对象 1.1 简单动态字符串 SDS简单动态字符串&#xff08;simple dynamic string&#xff0c;SDS&#xff09;是Redis中字符串的底层数据结构。 struct sdshdr {// 记录 buf 数组中已使用字节的数量// 等于 SDS 所保存字符串的长度int len;// 记录 buf 数组中未使…

房屋信息怎么做二维码?户型文件怎么批量转二维码?

现在很多房产开发商都会用二维码来储存各个楼每户的信息&#xff0c;可能是建筑平面图、验房信息、楼区信息等等。那么如果将每户信息导出单独的文件之后&#xff0c;怎样才能够将每个文件批量转成二维码呢&#xff1f;下面教大家使用二维码生成器&#xff08;免费在线二维码生…

pytorch快速入门中文——07(TensorBoard)

使用 TensorBoard 可视化模型&#xff0c;数据和训练 原文&#xff1a;https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html 在 60 分钟突击中&#xff0c;我们向您展示了如何加载数据&#xff0c;如何通过定义为nn.Module子类的模型提供数据&#xff0c;如…

HTTP协议、存储、Ajax

HTTP协议、存储、Ajax 前端数据交互与HTTP协议 前后端通信 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>初识前后端通信</title></head><body><script>// 1.前后端通信…

手术麻醉临床信息系统源码:实现手术全流程自动化和信息化

手术麻醉临床信息系统遵循“以病人为中心、服务于临床”的宗旨&#xff0c;使医护人员从繁琐的病历书写中解放出来&#xff0c;集中精力关注病人的诊疗&#xff0c;将更多的时间用于分析、诊断。以服务围术期临床业务工作的开展为核心&#xff0c;为医护人员、业务管理人员、院…

APP外包开发闪退解决工具

APP上线后出现闪退问题往往不好解决&#xff0c;解决这些问题耗时耗力&#xff0c;但解决好了会对用户体验有非常大的帮助。今天和大家分享解决APP闪退问题的一般流程&#xff0c;但具体情况可能会因为问题的复杂性和具体情况有所不同。北京木奇移动技术有限公司&#xff0c;专…

机器学习李宏毅学习笔记34

文章目录 前言一、Knowledge distillation二、Parameter quantization三、Architecture design四、Dynamic computation总结 前言 神经网络压缩&#xff08;二&#xff09;其他方法 一、Knowledge distillation 先train一个大的network叫做teacher network&#xff0c;小的ne…

Java微服务金融项目智牛股-基础知识二(Sentinel简介)

Sentinel 背景 微服务架构设计由众多为服务组成&#xff0c;为保障高可用&#xff0c;通常会采用集群方式部署。由于服务自身原因或网络等其他问题&#xff0c;并不能保证100%可用性&#xff0c; 若单个服务出现问题&#xff0c; 会导致进入该服务的线程阻塞&#xff0c; 如果…