bash 5.2中文修订1

Bash Features(专题)

本文简要描述了 Bash shell(版本 5.2,2022 年 9 月 19 日)中的功能。 Bash 主页是 http://www.gnu.org/software/bash/

这是 5.2 版,最后更新于 2022 年 9 月 19 日,GNU Bash 参考手册,适用于 Bash ,版本 5.2。

Bash 包含出现在其他流行 shell 中的功能,以及一些仅出现在 Bash 中的功能。 Bash 引用的一些 shell 功能, Bourne Shell (sh)、Korn shell (ksh)和 C shell(csh及其扩展版本,tcsh)。以下菜单将功能分为几类,注明哪些功能是受其他 shell 启发的,哪些是 Bash 特有的。

本手册旨在简要介绍 Bash 的功能。 Bash 手册页应用作 shell 行为的权威参考。

第一部分 Introduction(介绍

什么是bash?

Bash 是 GNU 操作系统的 shell 或命令语言解释器。该名称是 "Bourne-Again Shell"的缩写,这是对 Stephen Bourne 的双关语,Stephen Bourne 是当前 的最早版本的作者,Unix shell sh出现在 Unix 的第七版贝尔实验室研究版本中。

Bash 在很大程度上与 sh 兼容,并融合了 Korn shell ksh 和 C shell csh 的有用功能。它力求遵循 IEEE POSIX 规范(IEEE 标准 1003.1)的 《Shell 和实用工具》规范。它在交互和编程使用方面比 sh 提供了更强的功能。

虽然 GNU 操作系统提供了其他 shell,包括 csh 版本,但 Bash 是默认 shell。与其他 GNU 软件一样, Bash 非常易于移植。目前,它几乎可以在 Unix 的每个版本和一些其他操作系统上运行,在MS-DOS、OS/2 和 Windows 平台都有可以运行的移植版本。

什么是shell?

从本质上讲,shell 只是一个执行命令的宏处理器。术语"宏处理器"是指扩展文本和符号以创建更大表达式的功能。

Unix shell 既是命令解释器又是编程语言。作为命令解释器,shell 为丰富的 GNU 实用工具提供了用户界面。编程语言功能允许组合这些实用工具。可以创建包含命令的文件,并将其本身变成命令。这些新命令与目录中的系统命令具有相同的地位,例如/bin,允许用户或组建立自定义环境来自动执行其常见任务。

Shell 可以交互式或非交互式地使用。在交互模式下,它们接受从键盘输入的输入。当非交互执行时,shell 执行从文件读取的命令。

shell 允许同步和异步执行 GNU 命令。shell 在接受更多输入之前等待同步命令完成;当 shell 读取和执行其他命令时,异步命令继续与 shell 并行执行。重定向结构允许对这些命令的输入和输出进行精准的控制。此外,shell 允许控制命令环境的内容。

Shell 还提供一组内置命令 (builtins),实现通过单独的实用程序不可能或不方便获得的功能。例如, cd 、 break 、 continue 和 exec 是无法在 shell 外部实现,因为它们直接操作 shell 本身。 history 、 getopts 、 kill 或 pwd 内置命令等可以在单独的实用程序中实现,但它们作为内置命令使用更方便。所有 shell 内置函数将在后续部分中进行描述。

虽然执行命令至关重要,但 shell 强大(灵活)之处在于其内置了编程语言。与任何高级语言一样,shell 提供变量、流程控制结构、引用和函数。

Shell 提供专门用于交互使用的功能,这些功能不是用来增强shell编程功能。这些交互功能包括作业控制、命令行编辑、命令历史记录和别名。本手册中将一一描述了这些功能。

第二部分 Definitions(定义、名词解释)

本手册的其余部分均使用这些定义。

POSIX UNIX 可移植标准

基于 Unix 的可移植性(开放系统)标准系列。 Bash 主要涉及 POSIX 1003.1 标

准的《Shell 和实用工具》部分。

blank 空白符

空格或制表符。

builtin 内建命令

shell 本身内部实现的命令,而不是由文件系统中某处的可执行程序实现。

control operator 控制运算符

执行控制功能的 标记(token) 。它是 newline 或以下之一:'||', '&&', '&', ';', ';;', ';&', ';;&', '|', '|&', '(', 或者 ')'.

exit status 返回值

命令返回给调用者的值。该值限制为 8 位(bit位,二进制位),因此最大值为 255。

field 字段

一种文本单元,是 shell 扩展之一的结果。扩展后,执行命令时,结果字段将用作命令名称和参数。

filename 文件名

用于标识文件的字符串。

job 作业

包含管道的一组进程以及从该管道派生的所有进程,它们都位于同一进程组中。

job control 作业管理

一种机制,用户可以通过该机制有选择地停止(挂起)和重新启动(恢复)进程的执行。

metacharacter 元字符

当不加引号时,用于分隔单词的字符。元字符是 space 、 tab 、 newline 或以下字符之一: '|', '&', ';', '(', ')', '<', 或者 '>'.

name 名字

word 仅由字母、数字和下划线组成,并且以字母或下划线开头。 Name 用作 shell 变量和函数名称。也称为 identifier 。

operator 运算符

控制运算符(control operator) 或 重定向运算符(redirection operator) 。有关重定向运算符的列表,请参阅 Redirections 。运算符至少包含一个未加引号的 metacharacter 。

process group 进程组

每个具有相同进程组 ID 的相关进程的集合。

process group ID 进程组ID

代表 process group 在其生命周期内的唯一标识符。

reserved word 保留字

对shell有特殊意义的 word 。大多数保留字用于 shell 分支、循环控制结构,例如 for 和 while 。

return status 返回状态

退出状态(exit status) 的同义词。

signal 信号

一种机制,内核可以通过该机制向进程通知系统中发生的事件。

special builtin 特殊内部命令

已被 POSIX 标准归类为特殊命令的 shell 内置命令。

token 标记

被 shell 视为单个单元的字符序列。它是单词(word)或运算符(operator)。

word 单词

被 shell 视为一个单元的字符序列。单词不得包含未加引号的元字符(metacharacters)作命令名称和参数。

相关推荐
半盏茶香6 分钟前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Evand J1 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB1 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
Ronin3051 小时前
11.vector的介绍及模拟实现
开发语言·c++
计算机学长大白2 小时前
C中设计不允许继承的类的实现方法是什么?
c语言·开发语言
PieroPc3 小时前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
2401_857439696 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna6 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_6 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Dream_Snowar7 小时前
速通Python 第三节
开发语言·python