Linux Bash

17 Mar 2025 | 4 分钟阅读

Linux Bash 也被称为“Bourne-again Shell”。它是一个用于 Linux 操作系统的命令语言解释器。它是 Bourne shell (sh) 的替代品。它是在 GNU 项目下开发的,由Brian Fox编写。如今,Bash 是大多数 Linux 发行版的默认用户 shell。

Linux/Unix shell 允许我们通过命令与 Linux 系统进行交互。它允许我们调用可执行文件来创建正在运行的进程。此外,它还允许我们与 Linux 文件系统进行交互。它的设计方式使得我们可以通过 Bash 执行所有 Linux 操作。

Bash 既是命令语言解释器,也是编程语言。它像其他编程语言一样支持变量、函数和流程控制。它还可以从一个名为shell 脚本的文件中读取和执行命令。

它在交互式使用和编程使用方面都比 Bourne Shell (sh) 提供了各种功能改进。尽管许多 sh 脚本无需更改即可由 Bash 运行。Bash 相对于 sh 具有以下改进:

  • 它提供命令行编辑
  • 它包含无限大小的命令历史
  • 它提供作业控制
  • 它提供 Shell 函数和别名
  • 它提供无限大小的索引数组
  • 它包含基数为 2 到 64 的整数算术。

如何下载 Bash

可以通过 HTTP (http://ftp.gnu.org/gnu/bash/) 和 FTP (ftp://ftp.gnu.org/gnu/bash/ ) 服务器从官方 GNU 服务器下载。

人们常常混淆bash、shellshell script。让我们通过 shell 和脚本来澄清 bash、shell 和脚本的概念。

什么是 Shell

如果我们是新的 Linux 用户,并且打开了终端,那么我们很可能会感到困惑,不知道该怎么做。这时 Shell 就派上用场了。

终端包含 shell;它允许我们执行命令来与系统交互。我们可以执行各种操作,例如存储和检索数据、处理信息以及其他各种简单或复杂的任务。

要打开终端,请按 **CTRL+ALT+T** 键。执行一些基本操作,例如 **date、cal、ls** 和 **pwd** 来进行一次游览。

考虑下图

Linux Bash

正如我们从上面的图片中看到的,shell 允许我们与 Linux 系统交互。当我们执行了 date 和 cal 命令后,shell 会与系统交互并检索数据。

什么是脚本

假设我们每天都需要执行一些基本命令,例如上面四个命令。Linux 支持一项称为脚本的功能,它允许我们一次执行多个任务。因此,最好定义一个脚本,而不是执行重复的任务。

为了理解如何使用 Linux 脚本,让我们定义一个结合了一些任务的脚本。要定义脚本,请创建一个带有 .sh 扩展名的文件。我们使用 VI 文本编辑器。但是,任何文本编辑器都可以用来定义脚本。请看下面的命令

上面的命令将以正常模式打开 vi 编辑器。通过按 **ESC** 键切换到插入模式,然后输入 **'i'** 键,输入你想要的任务。每个任务都应该定义在新的一行。考虑以下任务

输入任务后,按 **ESC** 和 **:wq!** 键来保存并退出编辑器。

现在,将创建的文件设置为可执行文件,使用 chmod 命令和 +x 选项,如下所示:

我们已经创建了我们的第一个脚本。要执行 shell 脚本,请在文件名前面加上 **'./ '** 来执行文件名。请看下面的命令

考虑下面的输出

Linux Bash

正如我们从上面的输出中看到的,通过使用 shell,我们可以自动化任务。我们可以在需要时使用它。它可以重复使用任意次数。

Bash 的特性

sh shell 的所有内置命令在 Bash 中都可用;此外,它还为我们提供了许多其他功能。Bash 的一些关键功能如下:

  • Shell 语法:Shell 语法包含Shell 操作引用注释。Shell 操作是 Shell 的基本操作。引用允许如何去除字符的特殊含义,而注释用于指定注释。
  • Shell 命令:Shell 命令是指您可以执行的命令类型。这些命令可以是简单命令、管道、列表、复合命令等。
  • Shell 函数:Shell 函数用于按名称对命令进行分组。它们作为传统命令执行。当我们使用 Shell 函数的名称时,将执行与该函数关联的命令列表。
  • Shell 参数:基本上,参数是一个存储值的实体;它可以是名称、数字或特殊字符。Shell 参数指定 Shell 如何存储值。它们可以是位置参数或特殊参数。位置参数是 Shell 的命令行参数,特殊参数用特殊字符表示。
  • Shell 扩展:Shell 扩展是 Bash 用于扩展参数的技术。在输入被分割成标记后,扩展会在命令行上执行。
  • 重定向:这是一种管理和控制输入输出的方式。
  • 命令执行:它决定了当我们执行命令时系统将如何响应。
  • Shell 脚本:这是一个包含 Shell 命令的文本文件,并在使用时执行它们。Bash 读取并执行命令,然后退出。

下一主题Unix vs Linux