小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
前言
我们对操作系统(OS)其实并不陌生,从接触电脑开始,我们就已经进入到Windows操作系统或者MAC 操作系统
当我们学习操作系统这门课时,全面地认识操作系统从Unix到Linux再到现代的Windows、MAC操作系统的演进
由于Linux是基于服务器端、使用Linux内核,命令行控制操作且开源的特性,Linux系统一直流行在我们日常生活,比如物联网智能家电TV、AI音箱等都是搭载的Linux系统
Linux系统一般由两部分组成:用户空间、内核空间(kernel)
本期,我们将学习Linux系统中,连接用户空间和内核空间的工具shell,为Linux进行传递命令
shell 概述
shell 是Linux系统的用户界面,为用户和内核进行交换操作的一种桥梁。shell 接收用户输入的命令并把它送入内核去执行。
shell 特点:
- shell 是一个命令解释器:它将用户输入的命令进行解释之后送到内核进行运行
- shell 是一个程序设计语言:它定义各种变量和参数,并提供控制结构,如循环和条件判断
shell 工作流程
shell 本身是C语言程序,作为命令语言解释器,拥有自身内建的shell 命令集。
系统中其他应用程序也能调用Shell命令
同时,作为Linux系统的一部分,shell 能调用Linux系统核心的大部分功能来执行程序,协调各个程序运行
shell 接收到用户传来的命令后,主要执行以下步骤:
- shell 检查命令是否是内部命令
- 如果不是内部命令,shell会在搜索路径中,检查是否是有某个应用程
- 如果没有找到应用程序(可执行文件),将会显示一条错误的信息
- 如果检查到是内部命令或者应用程序,shell会将内部命令或者应用程序分解为系统调用,并传给Linux内核
shell 类型
在Linux系统中,默认将bash作为默认的shell
目前流行的shell主要有5种:
-
ash(ash shell)
ash 是 Linux 系统中占用资源最小的shell,只包含24个命令
-
bash(BournAgain shell)
BourneAgain shell 是 Linux 系统中默认使用的shell,内部命令拥有40个,兼容Bourn shell,有许多特性。
- 提供命令快速查询功能,可用方向键查询、快速输入命令、修改命令
- 可支持命令自动补全功能
- 提供提示符下面的help查询相关的指令的操作帮助
-
ksh(Korn shell)
Korn shell 拥有42个命令,可与商业版ksh完全兼容
-
csh(C shell)
csh 是 指向 /bin/tcsh 的shell,在Linux中占比最大内核,共有52个内部命令
-
zch
zch 拥有最多的内部命令的shell,共84个内部命令。
shell 优缺点
shell 不仅是命令解释器,还是解释性程序设计语言,因此可以在众多的使用场景中去使用shell。
shell 优点:
- 语法简单,上手快速
- 命令查找迅速
- 解释性语言,不需要编译
- 脚本开发效率高,可以快速替代重复性步骤
- 通过 awk、sed 来快速处理文本方面的需求
shell 缺点:
- 对于复杂问题,实现繁琐,表达式不易阅读
- 对于变量定义传参,不直观,易造成误导
- 由于shell本身是一个接口,执行任务,需要开销大量的系统资源
shell使用场景:
- 对复杂的命令步骤如git上传代码,集成化一个步骤
- 替换一些必要的步骤如安装APK等步骤,自动化脚本
- 软件自动打包、编译、发布等功能
- 清空磁盘文件,创建文件等操作
总结
本次,我们对Linux系统组成、shell工作流程、种类等进行了解和学习,对shell脚本特点和使用场景进行掌握。
shell脚本是一个解释性编程语言,它凭借着语法简单、快速上手的特点,在我们工作场景中,随处可见
以上是本期内容,欢迎大佬们点赞评论,下期再见~