shell是什么意思啊(什么是shell,它的作用是什么)
我们日常使用的操作系统如Windows、Mac OS、Android、iOS等系统,都是带有美美的图形操作界面的,根据图形加简短的文案提示,就知道该程序是干嘛的,任何人都可以上手。然而在计算机的初期,并没有类似这样的图形界面,如果要使用计算机只能用一个个的命令去操作。想想成天面对着黑屏,敲着成百上千个命令来做事,这样的计算机只能给专业人士使用,无法普及。
当然,无论是图形界面还是命令行,最终要实行的目的是一致的:用户需要控制计算机。然而真正能够对计算机进行控制的只有系统内核Kernel,而用户不需要也很难直接去接触系统内核,那么就需要有有一个“中间件”或者桥梁将用户与Kernel连接起来,用户界面和命令行程序就是这座桥梁,在Linux系统中,这个命令行程序叫Shell。以上只是对Shell的通俗解释。
什么是shell?
Linux系统的shell介于系统内核与用户之间,相当于系统与用户间的桥梁,负责解析输入的命令和输出的二进制码。另外,shell也属于一种程序设计语言,为用户提供操作机器的交互接口,使用户输入的命令能够传送到内核执行并把处理结果反馈回来。
一句话:shell就是在操作系统和应用程序之间的一个命令翻译工具。
shell的分类
- 图形界面shell,桌面就是一个图形界面shell
- 命令行shell,如:linux系统下的bash
Shell连接用户与内核的真相
Shell程序本身的功能是很弱的,我们运行一个命令,Shell去调用内核暴露出来的接口,也就是调用一个个函数,调用函数即是使用内核。比如我们在命令行执行命令cat xxx.log命令来查日志文件内容。然而,这个文件在哪个位置,有多少个数据块等等这些细节,shell都是不知道的,它只能去调用内核提供的read或open函数,告诉内核我需要这样做,你帮我去做。
Shell 是一种脚本语言
有些编程语言可以一边编译一边执行,我们称之为脚本语言(Script)。脚本语言是使用灵活、部署容易、跨平台性好。Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。
Shell 虽然没有其他编程语言那么强大,如C 、Python,但也支持基本的编程元素,例如:
- if...else,case,for、while等
- 变量、数组、字符串、加减乘除、逻辑运算等
- 函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)