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