作者:Arnold Robbins GNelson H.F.Beebe 翻译: O'Reilly Taiwan
内容提要
★本书可以回答你这些问题。告诉你如何结合UNIX工具,将其与标准的Shell相结合完成工作。Shell脚本的编写是门艺术,需要的不只是Shell语言的相关知识,还要你对各个独立的UNIX程序有基本认识:为什么会有这些工具,要怎么单纯地使用它们,怎么将它们与其他程序结合应用。
★为什么需要学习如何编写Shell命令?因为大部分情况下,中型到大型的问题都能拆成较小的部分,这些小部分也多半都能找到现成的UNIX工具处理。用心编写的好用Shell脚本常常能够比C或C++语言编写的程序更快地解决相同的问题。也可以让Shell脚本提供可移植性,也就是说,可以跨越UNIX与POSIX兼容的系统,有时仅需略作修改,甚至不必修改,即可使用。
这是给谁看的书
这本书是写给那些在UNIX环境下发现必须写些Shell脚本,以利于工作进行的计算机用户与软件开发人员。例如,你可能是正在念计算科学的学生,手上有学校给你的第一个UNIX系统账号,你想知道在UNIX下更多的东西,例如你的Windows个人计算机无法处理的那些工作(这种情况下,你通常得写几个脚本来定制个人环境)。或者,你可能是个系统管理新手,需要为公司或学校写几个专用程序(可能是处理事件日志文件,账号、账单管理之类的事情)。你也可能是Mac OS的开发老手,但转到崭新的Mac OSX的世界,它的安装程序是以Shell脚本写成。不管你来自哪里,如果你想学Shell脚本,这本书就是写给你的。在这本书里你能学到:
▲软件工具设计概念与原则
一些好的软件工具设计与实例上的实践规则。我们会解释这些原则,还会在这本书里贯彻执行。
▲UNIX工具是什么
UNIX的核心工具组会在我们编写Shell脚本时不断地重复使用。我们会介绍Shell与正则表达式的基本概念,并在解决特定问题时展现各种核心工具的用法。除了介绍工具能做什么之外,我们还会告诉你,为什么要使这个工具,为什么它有这些特殊选项。
《Learning UNIX》这本书是在介绍UNIX系统,让你从对UNIX毫无经验成长为会基本操作的用户。《UNIX in a Nutshell》这本书则是广泛地介绍UNIX工具包,对于使用时机与特定工具用法的介绍很少。我们的目的就在弥补这两本书之间的鸿沟:如何灵活运用这些UNIX提供的工具包,让工作更顺畅,更有效率,也更从容(我们的期望)。
▲如何结合所有工具,完成工作
编写Shell脚本时,其实会是“整体的功能比各部分加起来的总和还强大”。Shell的使用就像整合个别工具的黏着剂,让你只要花点心思,就能得到惊人的效果。
▲标准工具几个常见的扩展
如果你已经是GNU/Linux或BSD系统的用户,很可能你的工具还有其他额外的、好用的功能或选项。这部分我们也会介绍。
▲不可或缺的非标准工具
有些程序,在大部分传统的UNIX系统里并非“标准的”,但我们又不能没有它。我们会在适当的地方介绍它们,也会提供使用时机的相关信息。
你应该先有什么基础
■我们认为读者应该了解以下背景知识:
如何登录UNIX系统
如何在命令行上执行程序
如何做一个简单的命令管道,与使用简单的输出/入重定向,例如<与>
如何以&将程序放到后台执行
如何建立与编辑文件
如何使用chmod,将脚本设为可执行权限
再者,如果你想试着操作本书范例,在你的终端机(或终端机模拟器)下达命令时,我们建议你使用POSIX兼容的Shell,例如ksh93的最新版本,或bash的近期版本。请特别注意:商用UNIX系统上的/bin/sh可能并非完全兼容于POSIX。