什么是Bash终端?

17 Mar 2025 | 6 分钟阅读

当计算机启动时,内核(无论是Linux、BSD、Mach还是NT)会检测所有物理硬件,并允许每个组件相互通信,并由一些基本软件进行管理。

计算机最基本的一组指令只是保持其开启和安全,例如偶尔激活风扇以避免过热,使用子系统来监控磁盘空间或“监听”新添加的设备等等。如果它们只做这些,计算机将和对流烤箱一样无趣。

在人类依靠穿孔卡来指示计算机做什么的时代,这是一个重大的进步。

Bash是一个应用程序

当我们启动一个运行Bash shell的终端(例如Linux上的GNOME Terminal或Konsole,或macOS上的iTerm2)时,我们会看到一个提示符。提示符是一个表示shell正在等待我们输入的符号。它通常是一个美元符号($)。然而,知道我们应该输入什么,则是另一回事了。

这可能听起来有点刻薄,但它完美地总结了“Bash”这个名字所关联的各种含义。对于许多新用户来说,Bash和Linux或Unix之间没有区别:它就是传统的黑屏绿字,我们期望在那里输入我们希望计算机接下来做什么。

Bash shell和我们在其中输入的命令如此混淆。区分这两者至关重要:Bash仅仅是一个程序,其主要功能是执行安装在同一系统上的其他程序(以命令的形式)。

我们可以学习Bash,但这只是更广泛理解其运行操作系统的一部分。如果我们不知道命令,我们就无法用Bash做任何事情。

许多数字历史学家使用两种命令行界面之一,也称为“shell”。在OS X和许多Linux安装中,shell被称为bash,或“Bourne-again shell”。Windows系统的命令行界面默认基于MS-DOS,它使用不同的命令和语法,但通常可以完成相同的任务。

我们可以通过终端遍历文件系统来识别文件,打开它们,进行基本的数据库操作,如合并和复制文件,以及读取和进行非常小的修改。

Linux命令

当我们给Bash一个命令时,它会在我们系统上的某些目录中查找,以确定它是否存在。如果命令存在于目录中,Bash一定会执行该命令。

当我们打开终端窗口或登录文本控制台时,Bash通常是默认执行的命令。我们可以在终端中使用which命令来查找包括Bash在内的任何命令在我们系统上的位置。

Bash自带一些内置命令。大多数内置命令都针对Bash脚本或低级环境设置进行了定制,但其中一些,如cd(用于更改目录),非常有用。由于它们不在我们通常的可执行路径中,内置命令在搜索时不会显示出来。

然而,它们仍然可用,因为它们是Bash的一部分,而我们正在使用Bash。

运行Bash

默认情况下,大多数最新的Linux和Unix发行版都包含Bash shell。由于我们知道Bash非常有名,并且它还有许多其他shell所缺乏的有用功能,因此它默认包含在这些发行版中。然而,一些系统默认使用不同的shell。

我们可以使用echo命令和一个特定的变量来反映当前正在运行的进程的名称,以检查我们是否正在运行Bash shell。

如果您的系统上没有bash,那么您可以尝试从Google安装它。在任何发行版中安装它都非常简单,或者您可以访问Bash官方网站。

在Bash中工作

Bash是一个有效的计算机界面,不仅仅适用于服务器管理员和程序员。它可以是我们的电脑桌面、文字处理器、图形编辑器等等。一些用户更喜欢Bash而不是桌面应用程序。

Unix和Linux已有大量可用命令,这可能会让您感到惊讶。例如,我们可以在不打开查看器或编辑器的情况下调整和裁剪照片。

我们可以使用ogg123或mpg321播放音乐,使用sox转换音频,使用ffmpeg修改和编辑视频,使用emacs或vim编辑文本,使用pine或mutt检查电子邮件,使用elinks浏览互联网,使用ranger或midnightcommander浏览文件,等等。所有这些都在Bash中完成,命令可以在我们的机器上找到,或者在我们的软件存储库中。

Bash脚本

Bash(以及Linux)如此强大的原因之一是它可以编写脚本。我们可以将所有我们可以在Bash中输入的内容列在一个纯文本文件中,然后让Bash为我们运行。与其花费一下午手动运行一百个命令,不如编写脚本,让计算机在您专注于其他任务时运行它们。

由于Linux上的几乎所有东西都运行在Bash shell之上,因此Bash可以用来自动化几乎所有事情。虽然也有例外(图形应用程序可能有自己的脚本语言或根本没有脚本),但通过编写操作系统脚本,我们可以执行数万项计算机功能,而无需亲自操作。

无法确定这每天为Linux用户节省了多少时间。但真正带来区别的不是标准的自动化;而是人们为自己创建的自定义流程,以及其他人认为无需自动化的任务。

例如,考虑以下Bash脚本,它将一个临时文件(想象一个由另一个进程生成的 파일)移动到指定目录。

没错,Bash。为了验证最后一个命令,将其复制并粘贴到终端中。只要存在名为tmp.png的文件和名为/public html的目录,该命令就会生效。

另一方面,学习Bash就是弄清楚如何改进像这样的简单命令以实现自动化。例如,如果tmp.png文件不存在,脚本就会失败。

如果这个脚本是一个关键组件,例如一个博客网站,它每天都需要一张新图片来创建定制的标题图片,那么它的失败可能会导致其他地方的灾难性故障。为了提高弹性,知道Bash的用户可以使用以下命令。

这只是学习Bash脚本过程的一个例子,但它表明了理解Linux和Bash是如何互补而不是相互排斥的。

Bash的优点

Bash用户喜欢这些“Bashism”是因为它们绕过了其他shell(如tcsh和ash)有时冗长而笨拙的语法。

然而,它们是Bash特有的,不符合POSIX标准,这可能会在未运行Bash的系统上导致兼容性问题。但是,由于Bash是开源免费软件,大多数人如果需要,都可以安装它。缺乏兼容性会带来额外的依赖性,但并不会阻止任何人使用脚本。

可以指出的主要优点是:

  • 创建shell脚本的速度越来越快。
  • 易于上手
  • 提供了交互式调试的选项。

缺点

任何事物都有优点,也有一些缺点,它们是:

  • 必须格外小心,以避免潜在危险情况。
  • 执行速度通常较慢。
  • 在设计和实现中有许多问题。
  • 与Python等其他编程语言相比,它提供的数据结构功能相当有限。