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


目录
相关文章
|
8月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
719 3
Linux系统禁用swap
|
8月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1284 3
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
783 3
Linux系统初始化脚本
|
8月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
731 9
|
8月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
8月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
746 2
|
9月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
621 18
|
8月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
967 1
|
8月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1300 1
|
9月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
2348 10