Linux系统下的shell外壳

简介: Linux系统下的shell外壳

本篇文章我们来深挖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系统及周边相关的深入解析、应用案例和趣味玩法等。感兴趣的话给博主点个关注,获取最新的内容消息!


目录
相关文章
|
4天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
16 1
|
2天前
|
Ubuntu Linux
Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)
请注意,以上步骤是在临时基础上进行配置的。如果要永久保存静态IP地址,通常还需要修改 `/etc/network/interfaces`文件,以便在系统重启后保持配置。同时,确保备份相关配置文件以防止出现问题。
14 1
|
3天前
|
Linux 数据安全/隐私保护
Linux系统忘记密码的三种解决办法
这篇博客介绍了三种在Linux忘记密码时重置登录密码的方法:1) 使用恢复模式,通过控制台界面以管理员权限更改密码;2) 利用Linux Live CD/USB启动,挂载硬盘分区并使用终端更改密码;3) 进入单用户模式,自动以管理员身份登录后重置密码。每个方法都提供了详细步骤,提醒用户在操作前备份重要数据。
|
3天前
|
JSON Unix Linux
Linux系统之jq工具的基本使用
Linux系统之jq工具的基本使用
32 2
|
3天前
|
数据采集 监控 安全
linux系统被×××后处理经历
linux系统被×××后处理经历
|
3天前
|
监控 安全 Linux
Linux系统之安装ServerBee服务器监控工具
【4月更文挑战第22天】Linux系统之安装ServerBee服务器监控工具
42 2
|
4天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
4天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
20 0
|
4天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
7 0
|
5天前
|
资源调度 JavaScript Ubuntu
Linux系统之部署briefing视频聊天系统
【4月更文挑战第21天】Linux系统之部署briefing视频聊天系统
40 2