• 很详细的系列Shell基础— Shell简介


    一、Shell的由来

    我们比较熟悉Windows系统的图形化界面,对于图形界面来说,用户点击某个图标就能启动某个程序。在此之前我们一直在使用Linux系统的命令行模式学习,对于命令行来说,用户输入一个命令就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。
    然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
    由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),所以就需要另外再开发一个程序,使该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,同时内核执行完成的结果,也经过该程序的处理,返回给用户。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
    用户界面和命令行就是我们所说的这个另外开发的程序,就是这层“代理”,在Linux下的这个命令行程序就叫做Shell。
    Shell所处的位置如下图所示:

    总结:
    Shell的英文含义是“壳”。
    Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,返回给用户。换句话说,shell是为用户与机器之间搭建成的一个桥梁,让我们能够通过Shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。
    Shell独立于内核,内核是Linux系统的心脏,从开机自检就驻扎在计算机内存中,直到计算机关闭为止。用户的应用程序存储在计算机硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登陆Linux系统时,Shell就会被调用到内存执行。

    二、shell的两种执行指令方式

    1、第一种方式:交互式(Interactive)

    是用户直接在shell界面(终端界面)上执行Shell命令,由于Shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。(换句话说我们操作的终端就是一个Shell)

    2、第二种方式:批处理(Batch)

    是用户事先编写一个Shell脚本文件,内含Shell脚本,而后使用Shell程序执行该脚本,这种方式,我们习惯称为Shell编程。(简单的理解脚本就是一堆命令的集合。)

    三、什么是Shell脚本?

    Shell脚本就是把命令、变量和流程控制语句等有机的结合起来。
    Shell脚本擅长处理纯文本类型的数据,而Linux系统中,几乎所有的配置文件,日志,都是纯文本类型文件。

    四、Shell 是一种脚本语言

    任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。
    有的编程语言,如 C/C++、Java、Go语言等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,是看不到源码的。
    这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。
    而有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。
    这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。
    编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。
    脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合Web开发以及小工具的制作。
    Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。

    对Shell的一些认知
    Shell脚本是给自己或者团队内部用的,主要是实现功能,效率可以次之(甚至不考虑)。
    Shell脚本思路越简单,脚本就有可能很长、很难看。
    Shell语言不是很难,但是要求对Linux系统的熟悉程度比较高。

    感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    ① 2000多本Python电子书(主流和经典的书籍应该都有了)

    ② Python标准库资料(最全中文版)

    ③ 项目源码(四五十个有趣且经典的练手项目及源码)

    ④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

    ⑤ Python学习路线图(告别不入流的学习)

    重点:配套学习资料和视频教学

    那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

  • 相关阅读:
    83、SpringBoot --- 下载和安装 MSYS2、 Redis
    C语言 - 文件
    软件测试经典面试题:如何进行支付功能的测试?
    万宾科技内涝积水监测仪使用效果一览
    2023最新版Android逆向教程——第3天:ADB原理及其常用命令
    Java的JDK新特性
    [CVE-2016-4437] Apache Shiro 安全框架反序列化漏洞复现与原理详细分析
    卡尔曼滤波算法的matlab实现
    verilog实现分频(奇数分频和偶数分频,通用版)
    浪潮服务器安装CentOS 7 教程
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/126474543