学习 Bash Shell,第二版

作者:Cameron Newham 和 Bill Rosenblatt
出版社:O'Reilly & Associates, Inc.
电子邮件:info@oreilly.com
网址:http://www.oreilly.com/
价格:29.95 美元
ISBN:1-56592-347-2
评论员:Bob van der Poel
用户 shell 是任何 UNIX 系统上最常见和最常用的程序。通过 shell,用户可以键入命令进行文件维护、启动各种应用程序以及自动化繁琐的日常系统管理。某些计算机系统(例如 Windows 95)不自带 shell,但 Linux 包含多种 shell。大多数 Linux 系统都预装了 csh、sh、tcsh、ksh 和 bash。bash 似乎已成为 Linux 的标准 shell。
bash,是 “Bourne again shell” 的首字母缩写,是一个大型、复杂且功能强大的程序。它经过多年的开发,旨在成为 GNU 系统的标准 shell。GNU 发行版的 bash 附带手册页和 info 风格的文档。如果您熟悉 UNIX shell 编程,那么这些可能就是您让 bash 完成您想要的一切所需的全部内容。另一方面,如果您多次阅读了手册页,仍然挠头,那么您可能需要更多帮助。
正如作者在前言中总结的那样,学习 Bash Shell “旨在面向刚入门的 UNIX 和 Linux 用户。您应该熟悉登录、输入命令以及对文件执行一些简单操作的过程。” 在阅读了几遍这本书后,我同意;但是,本书的用途不仅仅是初学者教程。如果您还没有获得 UNIX 向导的所有星级,您会发现它是一本经常使用的参考书。
学习 Bash Shell 是一本 320 页的书,分为十一章、五个附录和一个索引。它的写作风格易于理解,尽可能避免了手册页和术语的简洁风格。布局和排版使其易于浏览各种解释和示例。
前三章概述了 shell 的功能、bash 广泛的命令行编辑功能以及自定义环境的设置。关于命令行编辑的部分是我会多读几遍的部分——我越理解并开始使用 bash 的强大功能,我就越少打字。考虑到我的打字能力,这是一件好事。
接下来的五章肯定是价值最高的——它们实际上是关于 bash 编程的。涵盖了所有命令词、变量和内置函数。其中大部分内容扩展了手册/info 文档中的材料,并附加了关于何时可能需要使用特定命令、其历史记录以及在某些情况下建议您可能永远不需要使用它的评论。此外,大多数解释都附有示例,确切地显示了如何以及何时使用命令及其参数。作者以良好的教学风格,提出了一个简单的例子;然后,随着读者学习更多功能,示例被重新审视和扩展,直到人们拥有一个有用且可靠的 shell 程序。包括建议的练习,供读者练习以提高编程技能。
如果您做过任何编程,您就会知道跟踪程序中的错误是多么乏味。用 bash 编写脚本也没有什么不同——您会有错误,有时它们会很难找到。实际上,使用 shell 脚本的神秘语法,它们可能非常难找到。第九章将有所帮助。涵盖了标准的调试方法(大量的打印语句),作者介绍了一个广泛的调试器。调试器最有趣的部分是它实际上是一个 bash 脚本——真棒。
最后两章讨论了将 bash 安装为用户 shell、一些安全问题以及在您自己的系统上获取和安装 bash 等相当平凡的主题。幸运的是,由于 bash 作为标准 shell 预装在大多数 Linux 系统上,因此可以略读本节。
五个附录包含预期的参考列表、BNF(巴科斯-诺尔范式)语法等——良好、有用的信息。最后,14 页的索引使本书易于用作标准桌面参考。
学习 Bash Shell 是为 2.x 版本的 bash 编写的;但是,任何早期版本的 bash 不支持的功能都已注明。
像 bash 这样的 shell 语言编程与使用像 C 这样的高级语言编程截然不同。在我看来,bash 似乎是由许多个人拼凑而成的,他们在添加所需功能时,将他们首选的语法合并到 shell 语言中。结果是 bash 语言可能相当复杂,初学者很容易陷入细节中。仅凭这一点,学习 Bash Shell 就是一个重要的工具。请注意,编写 shell 脚本,尤其是当您具有 root 权限时,可能会危害系统的健康。幸运的是,当他们的示例可能损害系统完整性或安全性时,作者会警告您。
这些示例足够短,用户可以键入,也可以从 O'Reilly 的 FTP 站点获得——好吧,作者声明它们是可用的。我按照书中的说明下载了源文件。不幸的是,该文件是本书第一版的,并且缺少整个调试脚本。我通过电子邮件联系了 O'Reilly,并收到了礼貌和及时的回复,告知我他们将联系图书编辑以追踪源文件。也许在本书评发表时,正确的源文件将可用。
我们已经习惯了 O'Reilly 出版的专业、文笔流畅、技术上正确的书籍,学习 Bash Shell 也不例外。编写技术参考书总是一项艰巨的任务。当目标受众的知识库像本书的潜在读者一样多样化时,这甚至更具挑战性。我认为作者成功地将其既作为新用户的入门指南,又作为更有经验的用户的宝贵参考。我强烈推荐这本书给任何想要更有效率地使用 bash 的人,以及那些希望学习编写中等复杂程度 shell 脚本的人。
