『忘了再学』Shell基础 — 1、Shell的介绍
2021/12/19 7:20:49
本文主要是介绍『忘了再学』Shell基础 — 1、Shell的介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 1、Shell的由来
- 2、Shell的两种执行指令方式
- 3、什么是Shell脚本
- 4、Shell 是一种脚本语言
1、Shell的由来
我们比较熟悉Windows系统的图形化界面,对于图形界面来说,用户点击某个图标就能启动某个程序。
在此之前我们一直在使用Linux系统的命令行模式学习,对于命令行来说,用户输入一个命令就能启动某个程序。
这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。
然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),所以就需要另外再开发一个程序,使该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。同时内核执行完成的结果,也经过该程序的处理,返回给用户。
如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
用户界面和命令行就是我们所说的这个另外开发的程序,就是这层“代理”,在Linux下的这个命令行程序就叫做Shell。
Shell所处的位置如下图所示:
总结:
- Shell的英文含义是“壳”。
- Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,返回给用户。换句话说,Shell是为用户与机器之间搭建成的一个桥梁,让我们能够通过Shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。
- Shell独立于内核,内核是Linux系统的心脏,从开机自检就驻扎在计算机内存中,直到计算机关闭为止。用户的应用程序存储在计算机硬盘上,仅当需要时才被调入内存。
- Shell是一种应用程序,当用户登陆Linux系统时,Shell就会被调用到内存执行。
2、Shell的两种执行指令方式
(1)第一种方式:交互式(Interactive
)
是用户直接在Shell界面(终端界面)上执行Shell命令,由于Shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。(换句话说我们操作的终端就是一个Shell)
(2)第二种方式:批处理(Batch
)
是用户事先编写一个Shell脚本文件,内含Shell脚本,而后使用Shell程序执行该脚本,这种方式我们习惯称为Shell编程。(简单的理解脚本就是一堆命令的集合。)
3、什么是Shell脚本
Shell脚本就是把命令、变量和流程控制语句等有机的结合起来。
Shell脚本擅长处理纯文本类型的数据,而Linux系统中,几乎所有的配置文件,日志文件,都是纯文本类型文件。
4、Shell 是一种脚本语言
任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。
有的编程语言,如Java
、Go
语言等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,是看不到源码的。这个过程叫做编译(Compile
),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler
)。
而有的编程语言,如Shell
、JavaScript
、Python
等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script
),完成解释过程的软件叫做解释器。
编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。
脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合Web开发以及小工具的制作。
Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。
拓展:对Shell的一些认知
- Shell脚本是给自己或者团队内部用的,主要是实现功能,效率可以次之(甚至不考虑)。
- Shell脚本思路越简单,脚本就有可能很长、很难看。
- Shell语言不是很难,但是要求对Linux系统的熟悉程度比较高。
参考:http://c.biancheng.net/cpp/view/6994.html
这篇关于『忘了再学』Shell基础 — 1、Shell的介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南