文章目录(Table of Contents)
简介
从这篇文章开始,我会开始介绍 shell 和 bash 的相关内容。如果想了解关于 Linux 基础的内容,可以参考链接,Linux 基础。本文会分为以下的几个内容来进行介绍:
- Shell 的介绍
- 常用的 Shell;
- 查看以及切换 Shell;
- Bash 的介绍
- 什么是 Bash;
- Bash 的特性;
- Bash 脚本的执行方式;
Shell 的介绍
关于 Shell 我们其实在 Linux 基础中有所介绍,Linux 中 Shell 与终端介绍。我们这里再介绍一下。Shell 是系统的用户界面,提供了用户和内核进行交互操作的一种接口。Shell 不是硬件,而是软件,是操作系统的操作界面。同时,Shell 也是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 Shell 命令组成的程序。
用户、Shell 及 Linux 系统内核之间的关系如下图:
常见的 Shell
Linux 中的 Shell 有多种类型,其中最常见的有 Bourne Shell(sh)、C Shell(csh)、Korn Shell(ksh)。
Bourne Shell 是 Unix 最初始的 Shell ,并且在每种 Unix 上都可以使用,在 Shell 编程方面相当优秀,但在处理与用户交互上不如其它几种。
Bash(Bourne Again Shell) 是 Bourne Shell 的扩展,与 Bourne Shell 完全兼容,并且增加了许多特性,还包含了很多 C Shell和 Korn Shell 中的优点,有灵活和强大的编程接口,同时又有友好的用户界面。
查看以及切换 Shell
查看主机上所有 Shell:通过 cat /etc/shells 命令来查看主机上的 Shell 类型。
查看 Shell 版本:我们可以使用 echo $0 或是 echo $SHELL 来查看当前的 Shell 版本:
更改 Shell 版本:我们可以使用 chsh 命令来更换登录系统时使用的 Shell。例如下面的例子将 Shell 切换为 zsh:
- chsh -s /bin/zsh # 将 shell 切换为 zsh
Bash 介绍
上面我们对 Shell 进行了简单的介绍,这里我们介绍一下 Bash 相关的知识。这里主要分为以下几个点进行介绍,更多关于 Bash 的内容会在后续的文章进行介绍:
- 什么是
Bash; Bash的特性;- 脚本执行方式;
什么是 Bash
Bash 是 GNU Bourne-Again Shell 的缩写。因为是对 Bourne-Again Shell 功能的增强,所以 Bash 对于 Bourne shell(sh)是一个双关语(Bourne again / born again)。
Bourne shell 是早期重要的 Shell,由史蒂夫 · 伯恩在 1978 年前后编写,并同 Version 7 Unix 一起发布。Bash 则是在 1987 年由布莱恩 · 福克斯创造。在 1990 年,Chet Ramey 成为了主要的维护者。
Bash 的特性
- 自动补全(TAB):
TAB键可以自动补全命令或者补全路径。 - 命令历史记录(history):使用
history来查看历史命令。这些命令是保存在~/.zsh_history文件中的。同时可以使用「history -c命令」来清除历史命令。 - 管道符以及重定向标准输入输出:常用的输入和输出如下:
- 输出重定向,使用
>符号 - 追加内容可以使用
>> - 输入重定向,使用
<符号
- 输出重定向,使用
- 命令别名(alias):有很多长命令,我们可以使用简称来简化输入。例如现在有一个命令
echo MathPretty我们使用 mp 来代替:
- alias mp='echo MathPretty' # 设置别称
- unalias mp # 删除别称
Bash 的注释
Bash 中的注释是以 # 开头的,例如下面我们创建一个简单的 Bash 脚本为 test1.sh,其中第二行就是注释:
对于上面这个脚本:
- 第一行的
#!是一个约定的标记,告诉系统这个脚本是用指定的解释程序来执行,这里使用的是/bin/zsh。 - 第二行为注释,以
#开头的内容为注释,注释是记录方式不会被程序所执行,一般用于记录其中内容这个脚本的作用与功能。
Bash 脚本执行方式
对于 Linux 来说,并不根据文件的扩展名来识别文件类型,这里的 .sh 只是为了让使用该脚本的人进行一个区分,类似于 Linux 中目录与文件的颜色不一致。
Bash 脚本有三种执行,我们使用上面的 test1.sh 作为例子:
source test1.sh:使用 source 相当于将Bash脚本中的内容复制到当前的 Shell 中执行。也就是如果Bash脚本中定义了变量,运行完毕后使用echo是可以查看当前变量的。./test1.sh:这种方式需要确保Bash脚本是一个可执行文件(可以使用 chmod +x test1.sh 添加可执行的属性)。这种方法会在当前Bash中创建一个子Bash运行这个脚本,运行完毕后这个子Bash会自动退出;bash test1.sh:这种方法与上面的方法一样,都会创建一个子Bash运行这个脚本。不同的是这种方法不需要确保Bash脚本是一个可执行文件。
每一个脚本或者命令执行完成之后都会有一个退出的状态,系统中一般只会记录上一个指令执行之后的退出状态,我们可以通过 echo $? 来获取这个状态值,常见的值有:
0:表示上一个指令执行成功1:表示未知的错误126:表示命令无法执行127:表示无效命令130:表示通过Ctrl + C退出命令
- 微信公众号
- 关注微信公众号
-
- QQ群
- 我们的QQ群号
-





评论