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)作命令名称和参数。

译者序<br><br>毫无疑问,UNIX/Linux最重要的软件之一就是shell,目前最流行的shell被称为Bash(Bourne Again Shell),几乎所有的Linux和绝大部分的UNIX都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX工作平台上最亲密的朋友,因此,学好shell,是学习Linux/UNIX的的开始,并且它会始终伴随你的工作学习。<br><br>shell是如此地重要,但令人惊奇的是,介绍shell的书没有真正令人满意的。所幸的是,我看到了这本被人称为abs的书,这本书介绍了bash大量的细节和广阔的范围,我遇到的绝大部分的技术问题--无论是我忘记的或是以前没有发现的--都可以在这本书里找到答案。这本使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他语言的程序员,我能肯定你能在此书用受益。而本书除了介绍BASH的知识之外,也有许多有用的关于Linux/UNIX的知识和其他shell的介绍。<br><br>在看到本书的英文版后,我决定把它翻译出来,在Linuxsir论坛上结识了译者之一杨春敏共同翻译这本书,600多页的书是本大部头的书,我们花了6个月的业余时间才翻译完了。<br><br>关于版权的问题,英文版的作者Mendel Cooper对英文版的版权做了详细的约定,请参考:Appendix Q. Copyright。中文版版权由译者杨春敏和黄毅共同所有,在遵守英文版版权相应条款的条件下,欢迎在保留本书译者名字和版权说明以非盈利的方式自由发布此中文版,以盈利目的的所有行为必须联系英文作者和两位中文译者以获得许可。<br><br>本书得以成稿,我(黄毅)要多谢我的女朋友,本该给予她的时间我用来了翻译,多谢你的理解,你是一个很棒的女朋友!<br><br> 译者 杨春敏 黄毅<br> 2006.5.15<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值