Linux系统下的shell外壳

news2025/6/18 5:53:14

往期回顾:

⭐Linux系统常用指令(一)

⭐Linux系统常用指令(二)

⭐Linux系统常用指令(三)

⭐Linux系统常用指令(完)

本篇文章我们来深挖Linux的知识!

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


1.为什么不能直接使用kernel

        Linux操作系统是基于内核(kernel)构建的。内核是操作系统的核心部分,负责管理系统的硬件资源、提供系统调用接口、调度进程等。然而,内核本身并不提供用户与系统交互的接口,也不提供文件系统、网络协议栈等高级功能。因此我们是无法直接与操作系统交互的,就要shell来帮助我们.


2.shell详解

Shell是一种命令行解释器,它提供了一种与操作系统交互的方式。它可以解析用户输入的命令,执行相应的操作,并将结果输出给用户。Shell可以根据用户的需要进行定制,例如设置环境变量、定义别名、编写脚本等。不同的操作系统和发行版可能会使用不同的shell,默认情况下在Linux系统中Bash会作为默认的shell。

Shell的存在是为了提供一个用户友好的界面,使用户能够通过简单的命令来操作系统。它可以让用户通过命令行的方式快速、高效地完成各种任务,例如文件管理、进程管理、系统配置等。Shell还可以编写脚本,将一系列命令组合起来,以实现更复杂的操作。

Shell命令是一种在shell环境下执行的命令,它可以用来操作文件、执行程序、管理进程等。

Shell的运行原理是通过解析用户输入的命令,将其转化为相应的系统调用或者其他程序的调用,然后执行这些调用来完成相应的操作。Shell会读取用户输入的命令,解析命令中的参数和选项,根据解析结果执行相应的操作,并将结果输出给用户。

shell子进程:

Shell本质上也是一个进程。在系统启动期间,Shell会被加载并一直存在于内存中,等待用户输入命令并执行相应的操作。

当用户输入一条指令时,Shell会创建一个子进程来执行该指令。这样做的好处是可以将指令的执行隔离在子进程中,防止出现意外情况导致整个系统崩溃。如果指令执行过程中发生错误或异常,子进程会退出并返回相应的错误码给Shell。Shell会根据子进程的退出状态来判断指令是否执行成功,并做出相应的处理。

通过创建子进程来执行指令还有另外一个好处,即可以在子进程中进行一些敏感操作,例如修改系统配置、删除文件等。这样做可以限制对系统的影响范围,提高系统的安全性。

需要注意的是,Shell本身并不执行指令,它只负责解析用户输入的命令并创建子进程去执行。子进程执行完指令后会将结果返回给Shell,然后Shell再将结果输出给用户。这样的设计可以使Shell具备交互性和扩展性,用户可以根据需要编写脚本来自动化一系列操作。


3.故事趣讲:

张三是一个年轻的程序员,他正在寻找一个适合自己的伴侣。但是由于他比较害羞腼腆,你知道的不善于和异性沟通,所以他找到了一个媒婆,媒婆听说了张三的需求,决定帮他找到一个合适的女朋友。

媒婆开始询问张三的要求,他希望找一个善良、聪明、有共同兴趣的女孩子。媒婆听完了张三的要求后,决定帮他筛选合适的候选人。

媒婆开始搜索并筛选一些女孩子的信息,她查找了一些社交媒体和交友网站,寻找与张三要求相符的女孩子。她还与一些朋友和熟人交流,询问他们是否认识合适的人选。

最终,媒婆找到了一个叫做如花的女孩子,她符合张三的要求。媒婆将如花的信息告诉了张三,并安排了他们见面。

张三和如花见面后,发现彼此非常合拍,有着相似的兴趣爱好和价值观。他们决定发展下去,并成为了一对幸福的情侣。

在这个故事中,张三是用户,媒婆是Shell,如花是Linux内核。张三通过媒婆来寻找合适的伴侣,媒婆根据他的要求筛选和推荐了如花这个合适的候选人。类似地,用户通过Shell来与操作系统交互,Shell根据用户的命令解析并调用相应的系统调用来执行操作。Linux内核提供了系统调用接口,负责管理硬件资源和提供操作系统的功能,类似于如花在故事中的角色。

这个故事说明了用户、Shell和Linux内核之间的关系,以及Shell作为用户与内核之间的桥梁,让用户能够方便地使用操作系统的功能。

总结:

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

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



        感谢您的阅读,如果喜欢这篇文章,可以点赞、评论,这将对我提供巨大的鼓励和支持。另外,我会在未来的更新中持续探讨与Linux系统相关的内容。为您带来更多关于Linux系统及周边相关的深入解析、应用案例和趣味玩法等。感兴趣的话给博主点个关注,获取最新的内容消息!

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

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

相关文章

技术路线决定出海方向:中国车企的全球市场密码

摘要:面对全球化的挑战,中国汽车企业站在了一个十字路口:选择大众市场还是豪华市场?背后涉及的不仅是消费者的购车偏好,更有技术路线和产业链的深层次支撑。从丰田的Prius到宝马的驾驶乐趣,不同的市场策略背后隐藏着怎样的全球化密码? 随着全球化浪潮的…

网络库OKHTTP(3)拦截器扩展,一个好用的网络请求监控工具Chuck

序、慢慢来才是最快的方法。 场景一 明明是服务端的接口数据错误,而QA(测试)第一个找到的可能是客户端开发的你,为什么这个页面出现错误了? 而作为客户端开发的你,可能要拿出测试机连上电脑,打…

ftp服务开启——windows

一、打开服务 1、打开控制面板——》选中程序和功能 2、 选择启用或关闭windows功能 3、全选FTP服务器,web管理工具里面的IIS管理控制台,一个都不能漏 4、全选 万维网服务下面的安全性的所有选项,最后点击确定 二、 IIS 配置 1、windows的…

如何使用ai去水印?用这款就够了

AI在图像处理领域的不断成熟确实为我们提供了更多便利和高效率的工具,使得图像处理变得更加便捷,尤其是AI去水印技术,它可以轻松去除图片中的各种杂质,包括水印、文字、标志、物体、以及其他杂乱的干扰元素,有效提高了…

SSM - Springboot - MyBatis-Plus 全栈体系(三十一)

第七章 MyBatis-Plus 二、MyBatis-Plus 核心功能 1. 基于 Mapper 接口 CRUD 通用 CRUD 封装 BaseMapper (opens new window)接口, Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器! 内部包含常见的单表操作! 1.1 Insert 方…

LoongArch 指令集设计——单周期5条指令exp5

对应实验手册请参阅《LoongArch CPU设计实验》。 NOTE: minicpu_env/miniCPU/目录下的代码功能不全,是有意为之,无需提issue修正。mycpu_env/myCPU/目录下的代码有功能错误,亦是有意为之,无需提issue修正。 实验安排简介 // dc…

E053-web安全应用-Brute force暴力破解初级

课程分类: web安全应用 实验等级: 中级 任务场景: 【任务场景】 小王接到磐石公司的邀请,对该公司旗下的网站进行安全检测,经过一番检查发现该论坛的后台登录页面上可能存在万能密码漏洞,导致不知道账号密码也能登录后台&am…

Windows消息 队列

1、 Windows消息机制 Windows是一个消息驱动的操作系统,消息是用一个常量标识符来标记,并且有两个32Bit的消息附加信息。单击鼠标、敲击键盘,都会通过电脑外设向系统发送特定的中断信号,这个中断信息在操作系统中会转化为一个消息…

leetcode每日一题复盘(10.16~10.22)

leetcode 501 二叉搜素树中的众数 对二叉搜索树的性质还不是很熟悉,不懂得利用其性质,做题没有方法论,这是暴露出来的问题,明天重做一下98,530,501这三个题,再进行总结

33 机器学习(一):特征工程

文章目录 机器学习需要用到的包的介绍机器学习做什么深度学习做什么常见的概念 数据介绍数据类型数据的来源数据的构成 特征工程one-hot编码接口集特征提取DictVectorizerCountVectorizerTfidfVectorizer 特征处理归一化 MinMaxScaler标准化 StandardScaler标准化和归一化的对比…

mmdetection及mmengine源码结构

python中的装饰函数 所谓的函数修饰符,就是在函数外面再套一层函数, 装饰函数可以接受不同的参数类型的函数传入,对其进行装饰加工; 在需要装饰的函数前面装饰函数即可; 这样子做的好处在于代码的复用,比…

使用interrupt()中断线程

示例一 : public class Test01 extends Thread {Overridepublic void run() {while (true) {}}public static void main(String[] args) {Test01 t new Test01();t.start();try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.prin…

家用洗地机哪个牌子最好用?质量最好的洗地机推荐

提到家务清洁,相信应该是很多宝妈头疼的事儿,不仅工作量打,耗时又耗力,拥有一款完美的清洁工具,那讲大大的提升幸福指数,而洗地机便是当下的智能清洁神器之一。那么家用洗地机哪个牌子最好用,质…

竞赛 深度学习YOLO图像视频足球和人体检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov5算法5 数据集6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习YOLO图像视频足球和人体检测 该项目较为新颖,适合作为竞赛课题方向,学长非…

使用Nginx实现采集端和数据分析平台的数据加密传输

1. 需求描述 目前鸿鹄暴露出来的重要ports如下表: 在实际的生产环境中,结合我司的使用场景,需要在鸿鹄前端安装proxy,用以解决如下两个问题: 1.1 实现http到https的强制跳转 企业环境中,一般会关闭http 80端…

精准定位——MySQL日志学习的一天【错误、二进制、查询、慢查询】

MySQL 日志是记录 MySQL 数据库服务器运行过程中的各种活动和事件的文件。它们对于监控、故障排查、性能优化和数据恢复等方面都非常重要。 回顾一下Linux中查看文件的指令操作 cat 命令: cat 命令用于将文件的内容一次性输出到终端。它的主要功能是将文件连接起来…

在全志R128上启用USB ADB以及无线ADB配置方法

首先在FreeRTOS的环境下,选择r128_c906_pro: source envsetup.sh lunch_rtos r128s2_pro_c906USB ADB的配置比较常规,注意以下几个驱动的勾选 usb device驱动adb gadget驱动adbd应用 运行menuconfig,选择对应的驱动以及软件包&…

Docker安装ES7.14和Kibana7.14(无账号密码)

一、Docker安装ES7.14.0 1、下载镜像 docker pull elasticsearch:7.14.0 2、docker安装7.14.0 mkdir -p /usr/local/elasticsearch/config mkdir -p /usr/local/elasticsearch/data chmod 777 -R /usr/local/elasticsearch/ echo "http.host: 0.0.0.0" >> /u…

linux下 u2net tensorrt模型部署

TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速…

搭建Redis哨兵集群

目录 一、集群结构二、准备实例和配置三、启动四、测试 一、集群结构 这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图: 三个sentinel实例信息如下: 节点IPPORTs1192.168.239.1027001s2192.168.239.1027002s3…