Linux Shell和Shell脚本介绍
如果你使用任何主要的操作系统,你都会间接地与shell互动。当你在Ubuntu、Linux Mint或其他一些Linux传播系统上利用终端时,你就是在与shell进行交互。
在这篇文章中,我将描述Linux的shell和shell脚本。然而,在我们理解shell脚本之前,我们必须首先学习以下术语。内核、外壳和终端。
前提条件
你将需要以下物品来学习本教程。
- 一个代码编辑器,例如:[Visual Studio Code]。
- 一台运行任何Linux操作系统的计算机
在这篇文章中,我使用了Ubuntu 20.04版本的操作系统。
- 一些关于使用Linux操作系统的知识
什么是内核
kernel 是计算机软件,它是计算机操作系统的核心,控制着其中的一切。它负责以下Linux系统的资源。
- 文件管理
- 进程的管理
- I/O的管理
- 设备管理,内存管理,等等。
Linus Torvalds有时被误认为是Linux操作系统的创造者,但他只负责创建Linux内核。
一个完整的Linux内核由以下部分组成
- 内核
- GNU系统实用程序和库
- 额外的管理脚本
- 安装脚本
什么是Shell
shell 是一个独特的用户程序,允许用户与操作系统功能进行交互。Shell接受用户可读的命令并将其转换为对内核友好的命令。它是一个命令的解释器,可以读取和运行键盘或文件上的命令。当用户登录或启动一个终端时,shell就被启动了。
壳可以分为两类。
- 命令行外壳
- 图形化外壳
命令行外壳
通过shell接口shell可以进行访问。一种叫做 "终端 "的工具被用来键入人类可读的命令,如Linux/MacOS中的cat 和ls ,或Windows中的 "命令提示符",随后执行任务。然后,用户会在终端上看到结果。这就是Ubuntu终端的模样。

在上面的截图中,ls 命令是与-l 选项一起使用的。对于一个长的列表,文件显示在当前工作目录中。
对于初学者来说,使用命令行shell是一种挑战,因为有很多命令需要记住。它非常强大,因为它允许用户将命令保存在一个文件中,然后一次性执行它们。任何重复性的任务都可以通过这种方式轻松实现自动化。Windows中的批处理记录和Linux/MacOS框架中的Shell Scripts是这些文件的正常名称。
图形化外壳
图形化的shells允许使用一个GUI 程序来打开、关闭、移动和调整窗口的大小,以及在窗口大小之间切换焦点。窗口操作系统或Ubuntu操作系统是提供图形用户界面(GUI)的操作系统的显著例子,用于与程序互动。对于每个活动,用户不需要输入命令。一个典型的Ubuntu用户界面如下图所示。

对于Linux系统来说,有各种可用的shell,如:。
-
Bourne Again Shell(BASH):在Linux系统中,它是使用最广泛的shell。它是Linux和macOS计算机上的默认登录壳。该系统也与Windows兼容。
-
C壳(CSH):C外壳与C编程语言的语法和使用非常相似。
-
Korn Shell (KSH):Korn shell也是POSIX Shell标准要求的基础,除此之外。
每个shell都完成相同的任务,但它能识别各种命令,并有不同的内置功能。
Shell的脚本
Shell通常是交互式的,所以它们接受并执行用户的命令。然而,有时我们需要定期执行一系列的指令,而且每次都要在终端上输入所有的指令。
我们可以在shell中编写和执行这些指令,以避免这种重复性的工作,因为shell可以把文件中的指令作为输入。Shell脚本或Shell程序是给这些文件的名字。MS-DOS的批处理文件与shell脚本相似。在每个shell脚本中都有一个扩展名.sh ,如myscript.sh 。
Shell脚本的语法与其他编程语言相同。如果你熟悉任何编程语言,如Python、C/C++或其他语言,它们将很容易创建。
下面这些部分组成了一个shell脚本。
- 外壳关键字,如
if, else, and break - 贝壳命令,如
cd, ls, echo, PWD, and touch - 函数
- 控制流程,如
If...then...else, case and shell loops
为什么我们需要shell脚本?
Shell脚本有几个原因可以派上用场。
- 为了避免重复性的工作和自动化的使用
- Shell脚本被系统管理员用来做常规备份
- 对系统进行监控
- 将额外的功能纳入shell中
外壳脚本的优点
- 程序员不需要转用不同的语法,因为命令和语法与直接在命令行上输入的命令和语法是相同的
- 编写shell脚本要比编写Java脚本快得多
- 快速上手
- 实时调试
外壳脚本的缺点
- 容易出现代价高昂的失误,一个失误就可以改变指令,也许会造成伤害。
- 执行时间很慢。
- 语言的语法或实现上有设计缺陷
- 与其他脚本语言不同,它不太适合大型和复杂的任务,只提供有限的数据结构
Bash Shell脚本的简易演示
在这个演示中,我们将做一个用增量运算符将一个变量增量三次的bash脚本。
程序
- 打开终端,移动到桌面目录,运行下面的命令,创建一个文件并命名为
firstscript.sh。
$ touch "name of the file"
- 运行
ls -l命令,查看你所创建的文件的权限。
从上面的命令来看,读和写的权限已经启用,而文件的可执行权限没有启用。
- 要启用可执行的权限,请运行下面的命令。
$ chmod +x "name of the file"
- 打开你创建的文件,复制/粘贴下面的文字。
#!/bin/bash
VAR=1
echo "$VAR"
VAR=$((VAR+=1))
echo "$VAR"
VAR=$((VAR+=1))
echo "$VAR"
VAR=$((VAR+=1))
echo "$VAR"
- 运行下面的命令来打开你创建的文件。
$ ./"your file name"
它将显示递增的变量1至4,如下图所示。

总结
在这篇文章中,我们学习了shell脚本的基础知识,了解了shell脚本中的术语,shell脚本的优点和缺点,并做了一个Bash shell脚本的例子。我呼吁读者利用上面所学的知识来创建和学习更多的shell脚本,以了解更多的shell脚本。