Welcome to 9ilk's Code World
(๑•́ ₃ •̀๑) 个人主页: 9ilk
(๑•́ ₃ •̀๑) 文章专栏: Linux网络编程
🏠 shell命令以及运行原理
📌 引入例子理解shell
假设八里村有一个人叫张三,他的父亲是这个村的村长。张三喜欢隔壁的如花,但是张三本人不擅长交际,却想跟如花谈恋爱结婚,于是希望村里的王婆帮其说媒。在这个场景下,我们的张三相当于是用户,而如花相当于是系统内核,王婆相当于是外壳程序(kernel),张三想让王婆帮他和如花说媒相当于是用户想访问系统内核,需要通过指令让外壳程序帮我们返回内核。
Linux严格意义上说的是一个操作系统,我们称之为"核心(kernel)",但我们一般用户,不能直接使用kernel。而是通过kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通。
📌 shell三问
- Q1 : 为什么需要外壳程序?
在上面这个例子中,张三不擅长跟人交流,需要王婆帮助他解释他的需求给如花。对应的,用户不擅长也无法直接访问内核,他需要外壳程序解释他的需求。
因此广义上Linux系统 = Linux内核 + 外壳程序。
而技术角度shell的最简单定义是命令行解释器,它包括:
1. 将使用者的命令翻译给核心(kernel)处理。
2. 同时将核心的处理结果翻译给使用者。
在这里shell这个命令行解释器就相当于王婆,将指令(也就是张三的要求)解释给内核(如花)。
注 :
1.对比Windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作。(比如我们进入D盘的操作通常是通过双击D盘盘符)。
2.shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果再通过内核运行出结果,通过shell解析给用户。
- Q2 :shell是如何进行指令解释的?
我们故事继续,王婆知道如花不喜欢张三,但是迫于张三的父亲是村长,怕自己说媒不成功丢了招牌,因此不管说媒结果如何都要办这件事,于是王婆决定成立说媒公司,她通过招实习生来帮助她给张三说媒,这样即使说媒没成功也可以说是实习生干的,同时不会丢了她自己的招牌。
从这个故事我们可以类比理解,其实外壳程序shell是通过创建子进程,让子进程来帮忙进行命令解释,以此来保证自身的安全和稳定性。
- Q3 : Shell和Bash是什么关系?
王婆她是个媒婆,媒婆是她们这一行的统称,而王婆是一个具体的媒婆;类比理解,其实王婆相当于是bash,而媒婆就是shell外壳。
也就是说,我们对不同平台的外壳程序统称为shell,它是包在操作系统外面的一个软件层,而Linux的外壳程序叫bash。
🏠 理解Linux权限
📌 一个认识
假设你是张三,是一个学校的校长,你能在学校活动发表讲话是因为你此时的身份是学校校长,而张三这两个字对你而言代表你是一个具体的人,校长代表的是你的角色/身份。
我们需要认识到:我们在现实生