【Linux基础】详谈Shell运行原理------王婆传媒(高重复率面试题)

news2024/11/18 6:01:24

 

目录

💧前言

 💦Shell的运行原理

 👉Shell的基本概念与作用 

 👉原理的展示与剖析

 👉Shell外壳感性理解【一门亲事】

💧总结 

 💧共勉


💧前言

        在之前的 Linux 讲解中,主要说明了 Linux 常用指令的的用法,那么大家是否了解 指令 输入在了哪里?,指令是如何和操作系统进行交互的呢? 

        这个问题也是大家往后在面试中,经常会被问到的一个问题,所以本次博客来给大家详细解答以下。

 💦Shell的运行原理

👉Shell的基本概念与作用 

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

  • 因为对于普通用户去直接使用OS的内核存在一定的风险性,所以在这个内核(kernel)的外层,就包裹了一层shell,我们虽然不能直接访问操作系统的内核,但是可以通过这层shell与OS内核进行一个中间交互,从而与内核去产生一个互动

 在Windows中,我们以GUI图形化界面作为交互方式;在Linux中,我们以命令行作为交互方式

  • 但它们本质上是一样的,都是为了让用户进行相关操作,而图形化界面和命令行界面就是我们所说的“外壳程序”【shell】
  • 说了这么多,其实对于Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

        1️⃣:将使用者的命令翻译给核心(kernel)处理 

        2️⃣:同时,将核心的处理结果翻译给使用者

 👉原理的展示与剖析

为了更好地帮助理解,我画了如下图示 

  •  对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序
  • shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

  • 其实对于Shell,说白了它就是一个【命令行解释器】,等待我们去输入一条指令然后对这条指令进行一个解析,把解析之后的命令传递给操作系统,然后把结果以特定的方式拿到后以不同的形式展现给用户,比如说“打印”

  • 从作用上来将,Shell其实和我们现在所使用的图形化界面是一模一样的,比方说在Windows中我们双击打开了软件这个文件夹后,也就进入了这个文件夹,查看到了里面所放的内容,看到了另外一个界面,这其实就和【cd】+【ls】是一个道理,只是获取输入和显示的方式不一样。
  • 对于Windows的图形化界面来说它的制作更加复杂一些,因此用户体验感更好,Linux的这种纯命令行式的操作比较直观一些,但是体验感不是很佳

 【于是有个同学他就说,对于我们在Windows下点击一个图标时操作系统是不是将它解析成指令然后反馈给操作系统去执行】
===》完全不是❌,大家不要将Linux中的指令和Windows中的图形化界面混为一谈。当你点击图形化界面这种操作的时候,它就直接被操作系统执行了,如果非要说有指令存在的话那执行的就是这段指令的代码,双击图标显示就是执行【cd + ls】的代码。而不是说点击了某个图标就是变成了对应的指令去执行

 对于Shell这一块的理解光这么说说坑大家还是难以深刻地理解,所以我们通过一个生活中的小案例来看看👀


 👉Shell外壳感性理解【一门亲事】

了解了Shell的一些基本概念和原理之后,接下去我们通过一个小场景来感性地理解一下Shell 

  • 故事背景是这样的:你呢叫张三,你的爸爸是村里的村长,在毕业后你找了一份很好的工作回到家里,此时你的爸爸说:“儿子呀,现在你已经完成了一件很重要的事情,就是找到一份得体的工作,但是呢,还有一件更加重要的事需要你去完成,你看你年纪也不小了,也到了谈婚论嫁的地步,那是不是应该去找个女朋友谈谈呢”
  • 此时你回应说:老爸,我听喜欢我们家隔壁的那个小花,她也是我的初中同学。你老爸听了你的这番说辞,立马就找到了村东头的王婆,王婆呢也是你老爸的老同学了,现在想要找她帮你说个媒,那对于村长的请求,王婆肯定是不能拒绝,当天立马就去了小花家里,和她说:“小花呀,最近又漂亮了不少,你看你现在还单身着呢,隔壁的张三现在找到了一份很好的工作,他爸也是村长,你们两个也是老同学,年纪也相当,看看能不能和他处处。”但是呢小花她不喜欢你呀,于是就对王婆说:“我对他不感兴趣,叫他别来找我了”,那此时王婆也是非常无奈呀,回到村长家之后,就跟你和你爸爸说了小花的态度。

通过上面的小案例,我们可以去理解Shell外壳的工作原理,这里可以将张三也就是你看做是用户,然后将小花呢看做是操作系统,平常我们来使用操作系统的时候,其实并不是直接对操作系统的内核进行处理,而是通过鼠标的点击进行一些对应的访问,此时呢你和操作系统之间就存在着一个交互的东西叫做Shell,Shell可以作为你和操作系统之间的一个传递者,通过Shell让操作系统知道你的想法,然后操作系统执行你的命令,再通过Shell返回出去,所以可以看出这个王婆也就是Shell,起到一个中介的作用

  •  但是事情完了吗,很明显没有,因为可以看到图中还有一个李四呢🐶,因为你呢就是喜欢小花,还是想要再坚持一下,于是你老爸就又找到了王婆,并且给了她一些好处,此时王婆就不得不再度厚着脸皮去找小花,但是当王婆走到小花家门前的时候,看到她隔壁家的李四正手拉手坐在沙发上看电视,旁边还坐着双方的父母,经验丰厚的王婆看到这一幕心想:这生米都快煮成熟饭了,我在去把电线拔了是不是不太好呀🍚
  • 于是这个时候王婆就毅然决然地放弃了这个念头,想要回到你家和说明这件事,但是呢因为你老爸是村长,所以王婆比较忌惮,所以想了想:而且若是带着这样的消息回来的话,不是坏了我这么多年积攒下来的名誉了。所以还是先选择回到了自己家,此时。。。

上面的描述其实就反映了Shell的一些原理===> ①帮忙进行命令传递和返回结果 ②保护操作系统(不去打扰小花) 

  •  事情完了,当然没有😜
  • 当王婆带着万千思绪准备回家的时候她突然想到:为什么要我自己去做这件事呢,我招募几个人替我去说媒,这样若是失败了既不会影响我的名誉,又可以把事情办成,毕竟我这么个老太婆怎么说得动现在的年轻人呢。所以此时王婆就上招聘网站招募了几个实习生,然后对她们培训了一段时间后让她们去进行说辞,然后就带回了好消息,不得不说现在的年轻人都怎么想的,随随便便就在一起,然后一言不合就分手了,可谓是亵渎爱情呀❤
  • 有了这样的好消息,此时王婆就马上开启她的小毛驴到村长家邀功,然后你就可以趁虚而入了😍

 上述的王婆(资本家)招募实习生这段故事其实就是Shell在执行用户所给出的命令时,会创建子进程来执行

 看完上面的这个生活小案例,你是否对Shell有了一些深入的理解呢?

💧总结 

好,我们来总结一下本文所学习的内容 

  •  在本篇文章中,首先了解了一下什么事shell,它是用于与操作系统之间的一个中间者用于将用户执行的一些操作转达给操作系统,然后操作系统执行之后再反馈给shell,最后通过shell将执行的结果反馈给操作的用户
  • 理解了shell的基本概念和作用之后,便对其原理展开剖析,讲了对于Windows中的鼠标点击操作和Linux中的命令行操作其实本质都是一样的,对于双击图标也就是我们执行的cd + ls的执行。但是有一点要明白的是对于Windows中的图形化界面操作和Linux中的命令行操作还是存在本质区别的,不要混淆了
  • 在最后,我们又通过一个小故事对shell有了一个感性的理解,相信你在看了这个小故事后一定是有了自己的想法,也想明白了一些事情】
  • 参考:https://blog.csdn.net/Fire_Cloud_1/article/details/128694045
     

 💧共勉

 以下就是我对【Linux基础】Shell 运行原理 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对【Linux基础】Linux 权限 的理解,请持续关注我哦!!! 

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

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

相关文章

【管理运筹学】第 10 章 | 排队论(2,到达时间间隔的分布和服务时间的分布)

文章目录 引言一、普阿松分布二、负指数分布三、爱尔朗分布 引言 解决排队问题,首先要根据原始资料做出顾客到达时间间隔和服务时间的经验分布,然后按照统计学的方法(如 χ 2 \chi^2 χ2 检验)以确定属于哪种分布理论&#xff0…

JS数组方法合集(含应用场景)

1.Array.push() 向数组的末尾添加一个或多个元素,并返回新的数组长度。原数组改变 const arr ["apple", "orange", "grape"]; const arr_length arr.push("banana");console.log("arr", arr, "arr_leng…

JOSEF约瑟 JHOK-ZBM1;JHOK-ZBL1多档切换式漏电(剩余)继电器 面板导轨安装

系列型号: JHOK-ZBL多档切换式漏电(剩余)继电器(导轨) JHOK-ZBL1多档切换式漏电(剩余)继电器 JHOK-ZBL2多档切换式漏电(剩余)继电器 JHOK-ZBM多档切换式漏电&#xf…

【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【动态规划】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

springBoot--web--favicon规则

在静态资源目录中找favicon.icon 推荐图标工具 favicon使用 在静态资源中放入下载好的图片,改名为favicon.ico

互联网医院|互联网医疗模式已从概念走向实体建设阶段

近年来,医疗服务领域新形态不断涌现,“互联网医疗”作为其中突出的一种,在挂号结算、远程诊疗、咨询服务等方面进行了不少探索,而早在2015年全国互联网医院成立,标志着“互联网医疗”模式已经从概念走向了实体建设阶段…

【Arduino TFT】Arduino uzlib库,用于解压gzip流,解析和风天气返回数据

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-10-21 ❤️❤️ 本篇更新记录 2023-10-21 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝&#x1f64…

开源WAF--Safeline(雷池)测试手册

长亭科技—雷池(SafeLine)社区版 官方网站:长亭雷池 WAF 社区版 (chaitin.cn) WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击 1.1 雷池的搭建 1.1.1 配置需求 操作系统:Linux 指令架构&am…

【框架源码篇 03】Spring源码手写篇-手写AOP

Spring源码手写篇-手写AOP 手写IoC和DI后已经实现的类图结构。 一、AOP分析 1.AOP是什么? AOP[Aspect Oriented Programming] 面向切面编程,在不改变类的代码的情况下,对类方法进行功能的增强。 2.我们要做什么? 我们需要在前面手写IoC&…

[Spring] SpringBoot2 简介(一)—— 基础配置

目录 一、SpringBoot 简介 1、Spring 的缺点 2、SpringBoot 功能 二、SpringBoot 入门案例 1、实现步骤 2、访问服务器 3、入门小结 4、Idea 快速构建 SpringBoot 工程 5、起步依赖无需版本号 6、主启动类的在项目中的位置(*重要*) 三、Sprin…

[AUTOSAR][诊断管理][$10] 会话模式控制

文章目录 一、简介二、指令格式请求: 10 SF会话参数记录有P2Server_max(2byte)和P2*Server_max(2byte),高位在前的表示方式。否定相应:7F SID NRC(否定相应码)三、示例代码(1) uds10_session_ctl.c一、简介 $10服务是Diagnostic Session Control诊断会话控制,子功能有01…

机器学习 | Python决策树算法

基本原理 决策树的基本原理是将数据分成不同的子集,使每个子集尽可能纯净。 这意味着子集中的数据属于同一类别或具有相似的属性。 为了做到这一点,决策树会选择一个特征,并根据该特征将数据分成两个子集。 它会选择那个特征,该特征在划分后的子集中具有最好的纯度,通…

Python获取微信公众号文章数据

这是一个通过 Python mitmproxy 库 实现获取某个微信公众号下全部文章数据的解决方案。首先需要创建一个 Python 虚拟环境,并进入虚拟环境下: $ python -m venv venv $ venv/Scripts/activate我们需要使用 mitmproxy 库 来建立一个网络代理,…

设计模式篇---组合模式

文章目录 概念结构实例总结 概念 组合模式:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。 当我们开发中遇到树形结构的业务时,可以考虑使用组合模式。(我也没有想明白为啥…

基于springboot实现财务管理系统项目【项目源码+论文说明】

基于springboot实现财务管理系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&#x…

Ubuntu的EFI分区无法删除

本文解决的问题:双系统装完后需要删除ubuntu的分区,但是EFI系统分区无法删除。 第一步:cmd中输入命令 diskpart 并回车,如图中①; 第二步:在弹出窗口②中依次输入如下命令即可删除EFI分区; /…

基于springboot实现藏区特产销售平台项目【项目源码+论文说明】

基于springboot实现藏区特产销售管理平台演示 摘要 “互联网”的战略实施后,很多行业的信息化水平都有了很大的提升。但是目前很多藏区特产销售信息仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人力物…

USRP-2944 配件讲解,如何选择对应的配件

USRP-2944 产品图片 产品官网价格信息 查看附件和价格 硬件服务 NI硬件服务计划通过简化物流,延长正常运行时间以及根据业界标准维护数据的可追溯性,帮助您节省系统组装、设置和维护所需的时间和金钱。这些计划涵盖多年期维修服务,同时还提…

Python 循环

Python有两个基本的循环命令&#xff1a; while循环for循环 while循环 使用while循环&#xff0c;我们可以在条件为真的情况下执行一组语句。 示例&#xff0c;打印i&#xff0c;只要i小于6&#xff1a; i 1 while i < 6:print(i)i 1注意&#xff1a;记得增加i的值&a…

微机原理:汇编语言语句类型与格式

文章目录 壹、语句类型1、语句分类2、常用伪代码和运算符2.1数据定义伪指令2.1.1字节定义伪指令DB&#xff08;8位&#xff09;2.1.2字定义伪指令DW&#xff08;16位&#xff09;2.1.3双字节伪指令DD2.1.4 多字节定义DF/DQ/DT&#xff08;了解&#xff09; 2.2 常用运算符2.2.1…