Bash 入门

王 茂南 2022年2月17日07:07:29
评论
2228字阅读7分25秒
摘要从这篇文章开始,我会开始介绍 Shell 和 Bash 的相关内容。本文主要有以下的内容,1. Shell 的介绍,常用的 Shell;查看以及切换 Shell;Bash 的介绍。 2. 什么是 Bash;Bash 的特性;Bash 脚本的执行方式;

简介

从这篇文章开始,我会开始介绍 shell 和 bash 的相关内容。如果想了解关于 Linux 基础的内容,可以参考链接,Linux 基础。本文会分为以下的几个内容来进行介绍:

  • Shell 的介绍
    • 常用的 Shell;
    • 查看以及切换 Shell;
  • Bash 的介绍
    • 什么是 Bash;
    • Bash 的特性;
    • Bash 脚本的执行方式;

 

Shell 的介绍

关于 Shell 我们其实在 Linux 基础中有所介绍,Linux 中 Shell 与终端介绍。我们这里再介绍一下。Shell 是系统的用户界面,提供了用户和内核进行交互操作的一种接口Shell 不是硬件,而是软件,是操作系统的操作界面。同时,Shell 也是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 Shell 命令组成的程序。

用户、ShellLinux 系统内核之间的关系如下图:

Bash 入门

 

常见的 Shell

Linux 中的 Shell 有多种类型,其中最常见的有 Bourne Shell(sh)C Shell(csh)Korn Shell(ksh)

Bourne ShellUnix 最初始的 Shell ,并且在每种 Unix 上都可以使用,在 Shell 编程方面相当优秀,但在处理与用户交互上不如其它几种。

Bash(Bourne Again Shell)Bourne Shell 的扩展,与 Bourne Shell 完全兼容,并且增加了许多特性,还包含了很多 C ShellKorn Shell 中的优点,有灵活和强大的编程接口,同时又有友好的用户界面。

 

查看以及切换 Shell

查看主机上所有 Shell:通过 cat /etc/shells 命令来查看主机上的 Shell 类型。

Bash 入门

查看 Shell 版本:我们可以使用 echo $0 或是 echo $SHELL 来查看当前的 Shell 版本:

Bash 入门

更改 Shell 版本:我们可以使用 chsh 命令来更换登录系统时使用的 Shell。例如下面的例子将 Shell 切换为 zsh

  1. 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 来代替:
  1. alias mp='echo MathPretty' # 设置别称
  2. unalias mp # 删除别称

 

Bash 的注释

Bash 中的注释是以 # 开头的,例如下面我们创建一个简单的 Bash 脚本为 test1.sh,其中第二行就是注释:

Bash 入门

对于上面这个脚本:

  • 第一行的 #!是一个约定的标记,告诉系统这个脚本是用指定的解释程序来执行,这里使用的是 /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 退出命令

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2022年2月17日07:07:29
  • 转载请务必保留本文链接:https://mathpretty.com/14569.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: