Linux系统下的shell外壳

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 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系统及周边相关的深入解析、应用案例和趣味玩法等。感兴趣的话给博主点个关注,获取最新的内容消息!


目录
相关文章
|
9天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
124 78
|
12天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
47 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
132 48
|
8天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
61 13
|
1月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
36 3
|
9天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
28 0
|
1月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
33 0
Linux 如何更改默认 Shell
|
1月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
38 1
|
1月前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
90 1
|
1月前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?