标题：Shell脚本快速学习指南
基本信息
原书名：Classic Shell Scripting
原出版社： O'Reilly Media, Inc.
作者：Arnold Robbins   Nelson H.F.Beebe  
译者：O'Reilly Taiwan公司
丛书名： 北京华章图文信息有限公司O'Reilly系列
出版社：机械工业出版社
ISBN：9787111255048
出版日期：2012 年5月
开本：16开
页码：494
版次：1-1
内容简介
shell脚本编程（scripting）的技巧永远不会过时：它们可以让unix充分发挥其真实的潜能。对unix的用户与系统管理者而言，编写shell脚本是必须的工作，它可以让你快速地控制与定制任何unix系统的强大功能。有了shell脚本，你可以结合基本的unix文本与文件处理命令来消化数据，以及自动化重复的工作。一旦你对shell脚本的编写掌控自如，在接下来的几年，这些技巧将对你相当有帮助。.
编写shell脚本所需要的不只是对shell语言的认识，还必须熟知单个的unix程序：你必须知道每个程序为什么会放在那儿，以及如何使用该程序或如何将其与其他程序结合。本书将告诉你这些有关 unix主流工具的知识。除此之外，本书还会帮助你解决unix命令与标准的差异。..
作者熟知unix程序使用的基本技巧与操作上细微的差异。他们不但会告诉你如何构建一个绝佳的脚本，还会教你如何避免落入让你功亏一篑的陷阱。有了本书，你可以节省很多力气。
我们要学习的不只是如何写出有用的shell脚本，你还得了解如何迅速、确实地定制shell，让程序的可移植性达到最佳状态，脱离对特定系统的依赖。这些技巧对任何操作与维护unix及linux系统的人而言都很重要。本书所提供的知识，将可以帮助你掌握基本的shell脚本编写技巧
目录
序.
前言
第1章 背景知识
1.1 unix简史
1.2 软件工具的原则
1.3 小结
第2章 入门
2.1 脚本编程语言与编译型语言的差异
2.2 为什么要使用shell脚本
2.3 一个简单的脚本
2.4 自给自足的脚本：位于第一行的#!
2.5 shell的基本元素
2.6 访问shell脚本的参数
2.7 简单的执行跟踪
2.8 国际化与本地化
2.9 小结
第3章 查找与替换
3.1 查找文本
3.2 正则表达式
3.3 字段处理
.3.4 小结
第4章 文本处理工具
4.1 排序文本
4.2 删除重复
4.3 重新格式化段落
4.4 计算行数、字数以及字符数
4.5 打印
4.6 提取开头或结尾数行
4.7 小结
第5章 管道的神奇魔力
5.1 从结构化文本文件中提取数据
5.2 针对web的结构型数据
5.3 文字解谜好帮手
5.4 单词列表
5.5 标签列表
5.6 小结
第6章 变量、判断、重复动作
6.1 变量与算术
6.2 退出状态
6.3 case 语句
6.4 循环
6.5 函数
6.6 小结
第7章 输入/输出、文件与命令执行
7.1 标准输入、标准输出与标准错误输出
7.2 使用read读取行
7.3 关于重定向
7.4 printf的完整介绍
7.5 波浪号展开与通配符
7.6 命令替换
7.7 引用
7.8 执行顺序与eval
7.9 内建命令
7.10 小结
第8章 产生脚本
8.1 路径查找
8.2 软件构建自动化
8.3 小结
第9章 awk的惊人表现
9.1 awk命令行
9.2 awk程序模型
9.3 程序元素..
9.4 记录与字段
9.5 模式与操作
9.6 在awk里的单行程序
9.7 语句
9.8 用户定义函数
9.9 字符串函数
9.10 数值函数
9.11 小结
第10章 文件处理
10.1 列出文件
10.2 使用touch更新修改时间
10.3 临时性文件的建立与使用
10.4 寻找文件
10.5 执行命令：xargs
10.6 文件系统的空间信息
10.7 比较文件
10.8 小结
第11章 扩展实例：合并用户数据库
11.1 问题描述
11.2 密码文件
11.3 合并密码文件
11.4 改变文件所有权
11.5 其他真实世界的议题
11.6 小结
第12章 拼写检查
12.1 spell程序
12.2 最初的unix拼写检查原型
12.3 改良的ispell与aspell
12.4 在awk内的拼写检查程序
12.5 小结
第13章 进程
13.1 进程建立
13.2 进程列表
13.3 进程控制与删除
13.4 进程系统调用的追踪
13.5 进程账
13.6 延迟的进程调度
13.7 /proc文件系统
13.8 小结
第14章 shell可移植性议题与扩展
14.1 迷思
14.2 bash的shopt命令
14.3 共通的扩展
14.4 下载信息
14.5 其他扩展的bourne式shell
14.6 shell版本
14.7 shell初始化与终止
14.8 小结
第15章 安全的shell脚本：起点
15.1 安全性shell脚本提示
15.2 限制性shell
15.3 特洛伊木马
15.4 为shell脚本设置setuid：坏主意
15.5 ksh93与特权模式
15.6 小结
附录a 编写手册页
附录b 文件与文件系统
附录c 重要的unix命令
参考书目...
前言
刚开始使用UNIX(注1)的用户与程序员突然面对各式各样的程序时，都会有很多疑问，例如“它们的功能是什么”，还有“我怎么使用它们”。
本书可以回答你这些问题。告诉你如何结合UNIX工具，将其与标准的Shell相结合完成工作。Shell脚本的编写是门艺术，需要的不只是Shell语言的相关知识，还要你对各个独立的UNIX程序有基本认识：为什么会有这些工具，要怎么单纯地使用它们，怎么将它们与其他程序结合应用。
为什么需要学习如何编写Shell命令?因为大部分情况下，中型到大型的问题都能拆成较小的部分，这些小部分也多半都能找到现成的UNIX工具处理。用心编写的好用Shell脚本常常能够比C或C++语言编写的程序更快地解决相同的问题。也可以让Shell脚本提供可移植性，也就是说，可以跨越UNIX与POSIX兼容的系统，有时仅需略作修改，甚至不必修改，即可使用。.
谈到UNIX程序时，我们使用工具(tool)这个字。以UNIX工具箱(toolbox)的做法解决问题，长久以来以“软件工具(Software Tools)”哲学(注2)为人所熟知。
瑞士军刀是很多人口袋里的好帮手。它有刀刃、螺丝起子、开罐器、牙签等工具。功能更齐备的，还有其他像拔塞钻、放大镜等工具。瑞士军刀能派上用场的时候很多，虽然用它来修削和进行简单雕刻很不错，但你绝不会拿它来盖狗屋或制作鸟类喂食器。相反，做这类工作时你会寻求更专门的工具，例如铁槌、锯子、夹钳或刨刀等。同理，当你在解决程序化问题时，使用专门的软件工具会比较好。
这是给谁看的书
这本书是写给那些在UNIX环境下发现必须写些Shell脚本，以利于工作进行的计算机用户与软件开发人员。例如，你可能是正在念计算科学的学生，手上有学校给你的第一个UNIX系统账号，你想知道在UNIX下更多的东西，例如你的Windows个人计算机无法处理的那些工作(这种情况下，你通常得写几个脚本来定制个人环境)。或者，你可能是个系统管理新手，需要为公司或学校写几个专用程序(可能是处理事件日志文件，账号、账单管理之类的事情)。你也可能是Mac OS的开发老手，但转到崭新的Mac OS X的世界，它的安装程序是以Shell脚本写成。不管你来自哪里，如果你想学Shell脚本，这本书就是写给你的。在这本书里你能学到：
软件工具设计概念与原则
一些好的软件工具设计与实例上的实践规则。我们会解释这些原则，还会在这本书里贯彻执行。
UNIX工具是什么
UNIX的核心工具组会在我们编写Shell脚本时不断地重复使用。我们会介绍Shell与正则表达式的基本概念，并在解决特定问题时展现各种核心工具的用法。除了介绍工具能做什么之外，我们还会告诉你，为什么要使这个工具，为什么它有这些特殊选项。
《Learning UNIX》这本书是在介绍UNIX系统，让你从对UNIX毫无经验成长为会基本操作的用户。《UNIX in a Nutshell》这本书则是广泛地介绍UNIX工具包，对于使用时机与特定工具用法的介绍很少。我们的目的就在弥补这两本书之间的鸿沟：如何灵活运用这些UNIX提供的工具包，让工作更顺畅，更有效率，也更从容(我们的期望)。
何结合所有工具，完成工作
编写Shell脚本时，其实会是“整体的功能比各部分加起来的总和还强大”。Shell的使用就像整合个别工具的黏着剂，让你只要花点心思，就能得到惊人的效果。
标准工具几个常见的扩展
如果你已经是GNU/Linux或BSD系统的用户，很可能你的工具还有其他额外的、好用的功能或选项。这部分我们也会介绍。
不可或缺的非标准工具
有些程序，在大部分传统的UNIX系统里并非“标准的”，但我们又不能没有它。我们会在适当的地方介绍它们，也会提供使用时机的相关信息。
对长期使用UNIX的开发人员与管理者来说，软件工具的设计原则一直没有什么改变。因此，推广的书籍虽然还算堪用，但已经20年未更新了，甚空更久!UNIX系统在这些书写成之后，有了许多变动。因此，我们觉得是更新这些想法的时候了，我们利用这些工具的现行版本、在现行系统下展示范例。下面是我们将要强调的部分：
所有的呈现是以POSIX为基础。POSIX为一系列描述可移植操作系统环境的标准正式名称的缩写。POSIX标准是开发人员的挑战，他们必须兼顾程序与Shell脚本在不同厂商所提供的各种平台上的可移植性。我们将在最新的POSIX标准下展现Shell语言、各个工具程序及其选项