shell的工作原理

news2025/3/4 12:32:21

本文旨在讲解shell的工作原理,希望读完本文,能使读者对shell的工作原理有一定的认识,废话不多说,开唠!


在讲解shell的工作原理之前,我要首先给大家讲一下什么是操作系统,以Linux操作系统为例:

狭义上的操作系统:指的就是我们的Linux中的内核!

广义下的操作系统:就是Linux内核+Linux外壳以及相配套的程序!


既然简单介绍了什么是操作系统,那么我们就来分享一下什么是Linux外壳呢?其作用是什么呢?以及存在的意义是什么呢?

如果想要了解shell,我们就得从是什么,为什么,怎么做这几点进行分析,那么下面我就简单的举一个例子来介绍一下shell把!

小故事:

假如呢有一个程序员小王,他毕业了,找到了一个不错的工作,家里条件也差不多,但是呢,他却没有对象,因为其是一个程序员么,技术宅,经常跟电脑打交道,很少跟外人进行接触,自然呢,连对象也没有,于是等他毕业之后,家里人也开始催他找对象,但是家里人一想,这孩子确实挺内向的,如果让他自己去找对象,那比登天还难,于是他的母亲,就找了一个媒婆王婆,来对他进行说媒,简单询问小王之后,发现小王对其隔壁那个姑娘翠花感兴趣,想要和她交往,那么王婆就说没问题,小王,专业的事交给专业的人来做,你的亲事我来替你办,于是呢王婆就去隔壁翠花家表示小王对其有意思,想和她进行交往,但是翠花不喜欢小王,于是就将王婆给拒绝了,于是王婆就返回小王家对小王说,隔壁翠花不喜欢你。听到这,小王也就没再多想了!就不再让王婆找翠花了!

到这里,从这一段故事中可以看出,我们将王婆简单的比喻成外壳,翠花比喻成内核,小王就是用户,因为小王不熟悉相亲这种事,于是找了专业的王婆来进行了说亲,这里我们可以看出外壳有一个特点就是将用户的指令转交给内核,以及内核的返回信息再转交给用户!

故事后序:经过一次的相亲之后呢,小王还是忘不了翠花,于是又找王婆让其再次去说媒,王婆想,既然孩子都说了,那就再跑一趟吧,这次呢,没等王婆进入到翠花家里,王婆就看见隔壁的小张和翠花的一家其乐融融的坐一起吃饭呢,这时王婆想,人家都发展成这地步了,你小王肯定没戏了,于是这次王婆根本就没有进入到翠花家,直接就返回到小王家,对小王说,小王,放弃吧,人家都有意中人了!

对于第二次,当王婆发现了问题之后,就不再直接访问翠花家了,而是直接告知小王让其放弃,对于这,我们可以理解成,用户发出的指令不行,直接被外壳程序进行了拦截,可以看出外壳程序会对内核做出保护的机制!!

故事最后:小王还是不死心,再次找到了王婆,可是王婆想了想,人家都到了谈婚论嫁的时候了,你再进去就不合适了,王婆想,我做的可是方圆五公里的相亲呀,不能因为你而败了我的名声呀,又因为王婆比较成功,其名下有婚介所,所以其就让实习生来帮小王进行说媒,这样也不会败了我王婆的名声!于是王婆就让实习生上去帮小王!如此反复.....

对于最后这里,王婆发现小王根本不行,于是找了实习生进行替她操作,防止因为这件事,影响她的名声,这里我们可以简单的理解为shell自己不做,而是让其下面的子进程进行操作,而其自己继续接受其他命令行!

读完这个小故事,应该对shell的工作原理有了一定的认识! 下面就来总结一下吧!

是什么:

所谓的Linux外壳,其实就是用户与内核交互的中间媒介!

作用是什么:

其作用就是将用户输入的指令传递给内核,然后内核执行完命令之后,得到结果,通过外壳再传递给用户。可以看出外壳的作用就是一个中间的媒介!

为什么要存在:

1.进行命令解释

2.保护内核!(用户不清楚内核的属性!)

如何进行工作的

1.通过创建子进程,让子进程进行执行命令!(其中子进程就相当于故事中的实习生!)

2.父进程,继续进行命令行获取!(父进程就是王婆,而shell就是那个婚介所!)

总结:

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

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户


至此,就简单了介绍了shell的工作原理,希望能对读者有一定的收获!

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

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

相关文章

【Springboot整合系列】SpringBoot整合WebService

目录 Web服务介绍Web服务的两种类型Web服务架构Web服务的主要特点Web服务使用场景Web服务标准和技术 WebService介绍WebService的作用适用场景不适用场景 WebService的原理三个角色相关概念 WebService开发框架代码实现服务端1.引入依赖2.实体类3.业务层接口接口实现类 4.配置类…

vue中使用图片url直接下载图片

vue中使用图片url直接下载图片 // 下载图片downloadByBlob(url, name) {let image new Image()image.setAttribute(crossOrigin, anonymous)image.src urlimage.onload () > {let canvas document.createElement(canvas)canvas.width image.widthcanvas.height image…

YoloV8实战:使用YoloV8检测钢材表面缺陷

摘要 本文讲解一下实战,使用YoloV8检测钢材表面缺陷。起因是有粉丝搞不定这个数据集,检测的时候出现了不收敛的情况。所以,给大家讲讲如何去做。 不收敛的原因 一般遇到不收敛的情况,就是数据转化的时候出错了,大家可以打开runs下面的训练日志,观察一下是否正常。 如…

CTF题型 nodejs(2) Js沙盒vmvm2逃逸原理总结典型例题

CTF题型 nodejs(2) Js沙盒逃逸原理&典型例题 文章目录 CTF题型 nodejs(2) Js沙盒逃逸原理&典型例题一.vm原理以及逃逸1.基本用法2.如何逃逸汇总1)this为对象2)this为null( Object.create(null))a .可用输出直接触发toString方法b.调用属性触发 3)Object.create(null)沙…

Verilog语法之if-else语句学习

if_else 条件分支语句的作用是根据指定的判断条件是否满足来确定下一步要执行的操作。它在使用时可以采用如下三种形式&#xff1a; if(<条件表达式>) 语句或语句块&#xff1a; 在 if_else 条件语句的这种使用形式中没有出现else 项&#xff0c;这种情况下条件分支…

java入门学习Day02

本文介绍的内容主要有&#xff1a;java的注释&#xff08;样式&#xff09;、关键字、字面量。 一、java中的注释 1、基本语法 ① 单行注释 //注释信息 ② 多行注释 /* 注释信息1 注释信息2&#xff0c; */ ③ 文档注释 /** 注释信息1 注释信息2&#xff0c; */ public class…

OpenHarmony:RichEditor组件样例开发

使用 richEditor 组件实现一个富文本编辑框&#xff0c;包含富文本编辑区域和功能栏&#xff0c;功能栏中有多个按键&#xff0c;可以调整字体大小、字体样式、字体颜色、布局&#xff0c;并可以插入图片。 api 版本&#xff1a;api11 主页面 import { TitleBar } from ../.…

iOS - Runloop介绍

文章目录 iOS - Runloop介绍1. 简介1.1 顾名思义1.2. 应用范畴1.3. 如果没有runloop1.4. 如果有了runloop 2. Runloop对象3. Runloop与线程4. 获取Runloop对象4.1 Foundation4.2 Core Foundation4.3 示例 5. Runloop相关的类5.1 Core Foundation中关于RunLoop的5个类5.2 CFRunL…

【机器学习】深度解析KNN算法

深度解析KNN算法 KNN&#xff08;K-最近邻&#xff09;算法是机器学习中一种基本且广泛应用的算法&#xff0c;它的实现简单直观&#xff0c;应用范围广泛&#xff0c;从图像识别到推荐系统都有其身影。然而&#xff0c;随着数据量的增长&#xff0c;KNN算法面临着严峻的效率挑…

常见的数学方法

Math类表示数学类&#xff0c;其中的数学方法都被定义成为static形式&#xff0c;所以可以直接通过Math类的类名调用某个数学方法。语法格式&#xff1a; Math.xxx(参数)&#xff1b; 例题 输入n个整数a1,a2,a3,......an,求这n个数的最大值max&#xff0c;最小值min&#xff0…

CSS(三)---【盒子模型、边框、外边距合并】

零.前言 本篇主要介绍CSS中最重要的一种概念模型&#xff1a;“盒子模型”。 关于CSS的更多内容&#xff0c;可以查看作者之前的文章&#xff1a; CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属性使用】-CSDN博客 一.盒子模…

课时79:流程控制_循环控制_控制解析

1.4.1 控制解析 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 所谓的流程控制&#xff0c;主要针对的是&#xff0c;当我们处于流程步骤执行的过程中&#xff0c;因为某些特殊的原因&#xff0c;不得不停止既定的操作进行步…

素材投放效果追踪与精准识别:从数据洞察到策略优化的全方位解析

一、数据洞察&#xff1a;深度解析投放效果的核心指标在数字广告的世界里&#xff0c;数据是投放效果的晴雨表。通过深入的数据洞察&#xff0c;广告主可以清晰地掌握广告的实际表现&#xff0c;为后续的策略调整提供有力的支持。曝光量、点击率、转化率和投资回报率等指标&…

MS Edge浏览器坏了?网页播放视频的速度不对

前言 小白是MS Edge浏览器的重度用户。电脑上必须有的两个浏览器&#xff1a;Google Chrome和Microsoft Edge。 前段时间小白在使用MS Edge的时候出了问题&#xff1a;播放视频或者音频的时候总是被莫名其妙加速或者减速&#xff0c;类似于播放视频时候的0.5x或者2.0x。 当时…

Leetcode的正确打开方式

很多新手朋友在学习完数据结构与算法之后&#xff0c;都想找个平台磨练自己的技艺。那么LeetCode绝对是不二之选。但是官网刷题不是很友好&#xff0c;那么今天给大家介绍一款刷LeetCode神器。也是未来工作之后的摸鱼神器。 leetcode-editor 本打工人的摸&#xff08;nei&am…

OSCP靶场--Zipper

OSCP靶场–Zipper 考点(php zip:// rce[文件上传] CVE-2021-4034提权7z 通配符提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.249.229 -sV -sC -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-29 07:40 EDT …

知识图谱-图数据库-neo4j (1)踩坑记录

1、neo4j 安装 材料 &#xff1a; openjdk11 (neo4j 最低jdk版本要求) neo4j-community-4.4.30 CentOS 7.8 Release Date: 25 January 2024 Neo4j 4.4.30 is a maintenance release with many important improvements and fixes. Neo4j Deployment Center - Graph Database…

使用node爬取视频网站里《龙珠》m3u8视频

1. 找到视频播放网站 百度一下 龙珠视频播放 精挑细选一个可以播放的网站。 如&#xff1a;我在网上随便找了一个播放网站&#xff0c;可以直接在线播放 https://www.xxx.com/play/39999-1-7.html 这里不具体写视频地址了&#xff0c;大家可以自行搜索 2.分析网页DOM结…

【php程序开发从入门到精通】——搭建PHP开发环境

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

大数据学习-2024/3/29-oracle安装

oracle安装 1、检查windows环境是否支持&#xff0c; 企业版和旗舰版。 右键点击属性后查看 2、检查环境中是否存在oracle数据。 此电脑右键点击管理 看开始菜单是否存在Oracle 文件夹。 3、正式安装oracle a、解压我分享的百度网盘数据&#xff0c;&#xff08;也可以…