Linux——shell外壳程序

2023-10-20 20:36
文章标签 linux 程序 shell 外壳

本文主要是介绍Linux——shell外壳程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

shell外壳程序

1. 什么是shell外壳程序

  • Linux严格意义上说的是一个操作系统,我们称之为“核心 “ ,但我们一般用户,不能直接使用核心。
    而是通过核心的“外壳”程序,也就是所谓的shell

  • shell是所有外壳程序的统称

  • 平时程序员所用的指令操作和开发操作都是在shell外壳之上操作
  • Linux中,shell外壳指的就是命令行,在windos中指的就是图形化界面

我们可以用下面的关系图来表示:

在这里插入图片描述


2. 为什么要有shell外壳

有小伙伴会有疑问:作为Linux系统的使用者,我们为什么不直接向操作系统交互,反而要通过shell外壳这一媒介呢?

我们先来引入一个生动的故事:

2.1 讲个故事:

阶段一:

从前有个村庄,村里村长有一个儿子——小李,他仰慕儿时的女玩伴——小花,一天,小李想对小花提出交往的请求,但奈何小李性格腼腆,不敢和小花当面交流,因此就找来了村里的媒婆——王姨。

阶段二:

王姨听了小李的诉求后就去找小花商量,但是小花却对小李不感兴趣,随便找了个理由搪塞了过去。小李从王姨那听说了后仍不死心,希望王姨再争取一下。当王姨第二次来到小花家时,远远地便望见小花正在和另一个男生还有她的父母正坐一桌吃饭,有声有笑、其乐融融,这时王姨便意识到这个时候再去找小花便是一个不明智的危险的行为——小花已经名花有主,再去说媒就会招人嫌。但小李仍旧不死心,希望王姨想想办法。这时王姨就苦恼了,既不能得罪了村长的儿子,又不能硬找已经有对象的小花,砸自家招牌,怎么办呢?

阶段三:

王姨心生一计,她开了一个事务招待所,并招揽了大量实习生。她让实习生去做那些成功率低的媒事,而自己只做成功率高的。这样就算实习生失败了,也不会影响到自己的声誉,同时也可以用“实习生经验不足”的理由来对付求媒人。两全其美。

  • 看完了这个故事,我们可以将故事中的小花比作是Linux中的内核,将小李比作是不断向内核操作系统发送请求的用户,而王姨就是沟通内核和用户的shell外壳。

    即:小花 -> Linux内核 小李 -> 用户 王姨 -> shell外壳

  • 做完类比,我们再从易用程度安全两个角度来讨论为什么要有shell外壳这个问题:

2.2 易用程度

  • 就像小李难以直接向小花表达感情,用户也难以直接向操作系统直接发送请求
  • 为了能够让小花听到小李的心意,就需要王姨这个中间媒介来传达。同样,为了能让内核能够清楚地知道用户的需求,我们都会通过shell外壳程序来间接地对内核进行交互

2.3 安全

  • 就像故事中小花明明已经名花有主,但小李仍要提出交往,王姨认为这个行为不合适,直接不执行
  • 当shell外壳程序认为用户向系统内核提出的请求不合理甚至危险时,shell外壳会对该指令直接拦截,不予执行。
  • 因此我们可以说:对于某些不合理的非法指令,shell外壳会进行拦截,一定程度上保护了内部的操作系统

3. shell外壳程序的特点

  1. shell是一切外壳程序的统称

    • 在Linux的centOSubuntu中,这个外壳程序一般叫做bash:将用户的命令进行解析,并传达给内核;同时将内核的反馈结果进行解析在返回给用户。
    • 在Windows系统中,这个外壳程序一般叫做图形化界面:通过鼠标双击、右键、左键等一些列操作实现于内核的交互。
  2. shell外壳的子进程

    • 从本质上来说,shell外壳实际上已是一个程序(进程),系统只要启动就会一直存在
    • 故事中我们讲到,如果王姨认为一桩媒事的成功概率不大,那么她就会让实习生来做。
    • 同样,如果shell外壳认为用户输入的指令是有风险的,那么shell外壳就会用创建子进程的方式让子进程来执行,而让自己规避风险

4. 总结

在学习Linux的过程中,我们不免会发出疑问,下图的字符串到底是什么?

在这里插入图片描述

  • 实际上,上面那一串等待我们输入指令的字符串就叫做命令行解释器

  • 而命令行解释器的背后有一个程序,它用来接收用户输入的指令,并执行由用户到内核,再由内核返回到用户翻译工作

  • 这个程序就叫做shell外壳程序

经过本次的学习,我们可以做出如下的总结

  • shell外壳程序是一切外壳程序的统称
  • shell外壳程序是连接用户和系统内核间的桥梁
  • shell外壳在方便用户和内核交互的同时也在一定程度上保护了内核的安全

这篇关于Linux——shell外壳程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249565

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm