Shell 概述

什么是 Shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 也是 Linux 的命令解释器,用于解释用户对操作系统的操作;Shell 会把用户所执行的命令翻译给 Linux 内核,Linux 内核将执行命令的结果反馈给用户。

比如 ls 命令,Shell 会分析 ls 命令中的选项和参数,然后将该命令交给文件管理器;文件管理器再去和硬盘打交道将返回结果,最终再反馈给用户;如果将 Shell 脚本编写好的话,用户就不用去编写驱动程序,也不用去开发 c 语言,这也就可以去控制内核,控制操作系统去实现自己想做的事情,不用去了解很多操作系统硬件相关的知识。

Shell 也有很多的版本,有 C shell、K shell、TCSH、zsh、ash、bash 等等,而 Linux 默认使用的 Shell 是 bash。

Shell 的分类

目前 Shell 的版本有很多种,如 BourneShell、CShell、Bash、ksh、tcsh 等,版本之间各有特点。

Shell 类别 易学性 可移植性 编辑性 快捷性
Bourne Shell(sh) 容易 好 较差 较差
Korn Shell(ksh) 较难 较好 好 较好
Bourne Again (Bash) 难 较好 好 好
POSIX Shell (psh) 较难 好 好 较好
C Shell(csh) 较难 差 较好 较好
TC Shell(tcsh) 难 差 好 好

简要介绍一下后续文章所用到的的 Shell 版本。

BashShell 也就是 Bourne Again(Bash),是 GNU 计划的重要工具之一,也是 GNU 系统中标准的 Shell。Bash 与 sh 兼容,所以许多早期开发出来的 BourneShell 程序都可以继续在 Bash 中运行。现在使用的 Linux 就使用 Bash 作为用户的基本 Shell。

Bash 于 1988 年发布,并在 1995-1996 年推出 Bash2.0。在这之前,广为使用的版本是 1.14,Bash2.0 增加了许多新的功能,以乃且备更好的兼容性。

Shell 脚本的格式

Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、一键搭建 Web 开发环境、日志分析等,Shell 都非常合适。

使用 Shell 的熟练程度反映了用户对 Linux 的掌握程度,运维工程师、网络管理员、程序员都应该学习 Shell。

尤其是 Linux 运维工程师,Shell 更是必不可少的,是必须掌握的技能,它使得我们能够自动化地管理服务器集群,否则你就得一个一个地登录所有的服务器,对每一台服务器都进行相同的设置,而这些服务器可能有成百上千之多,会浪费大量的时间在重复性的工作上。

Shell也是一种编程语言,它的编译器(解释器)是Shelli这个程序。我们平时所说的Shell.,有时候是指连接用户和内核的这个程序,有时候又是指Shell编程。

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,后续出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell 脚本的格式和现在的编程语言结构很相似,它们都是自上而下执行命令的;在此过程中也会用到变量去临时存储一些数据,这些命令也不一定是顺序执行的,包括了判断和分支、以及循环、定时等功能。

Shell 脚本都有哪些元素构成呢?有 Sha-Bang 、注释、命令组成

Sha-Bang

脚本文件的后缀名一般是 .sh

当该脚本需要传给其他系统去执行,其他系统的默认 Shell 可能不是 bash,那我这个脚本能不能去执行呢?这就引出了 Shell 脚本的文件头格式,示例:

1
2
3
4
5
vim demo.sh

#!/bin/bash

## 你的shell 命令

在以上的文件中可以发现,我在脚本的文件头添加了 #!/bin/bash 这一行命令,这一行命令被叫做 Sha-Bang ,也就意味着告诉执行脚本的系统,使用什么版本的 Shell 去执行该脚本,在本文件中使用 /bin/bash 去执行该脚本。

如果执行该脚本使用的是 bash demo.sh 命令,那么该 Sha-Bang 就会被当作注释;如果使用 ./demo.sh 方法去运行的话,因为不知道该系统默认的 Shell 版本,所以 Sha-Bang 就会被执行,告诉系统使用 /bin/bash 版本的 Shell 去执行该脚本。

注释

在 Shell 脚本文件中,注释是以 # 开头的,# 后面跟的就是该 Shell 脚本的注释。

命令

Shell 也是一种编程语言,虽然没有 C/C++、Java、Python 等强大。但也支持了基本的编程元素,例如:

  • if...else 选择结构、switch...case 开关语句、for、while、until 循环语句等流程控制语句。
  • [变量](/2022/10/24/Shell 中的变量/)、数组、字符串、注释、加减乘除等常用[运算](/2022/11/02/Shell 中的常用运算符/)等概念。
  • 函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)。

后续会详细展开以上部分。


Shell 概述
https://sunshinechen.cn/2022/10/19/Shell 概述/
作者
sunshine
发布于
2022年10月19日
许可协议