前言
这本教程是写给那些在UNIX环境下发现必须写些Shell 脚本,以利于工作进行的计算机用户与软件开发人员。例如,你可能是正在念计算科学的学生,手上有学校给你的第一个UNIX系统账号,你想知道在UNIX下更多的东西,例如你的Windows个人计算机无法处理的那些工作(这种情况下,你通常得写几个脚本来定制个人环境)。或者,你可能是个系统管理新手,需要为公司或学校写几个专用程序(可能是处理事件日志文件,账号、账单管理之类的事情)。你也可能是MacOs的开发老手,但转到崭新的MacOSX的世界,它的安装程序是以Shell脚本写成。不管你来自哪里,如果你想学Shell脚本,那就是写给你的。
一、目录详情
第1章 背景知识 1.1 UNIX简史 1.2 软件工具的原则 此处提供简短的UNIX历史沿革。特别是贝尔实验室的运算环境,也就是UNIX开发的地方,激发了许多软件工具设计上的哲学。该章还会介绍这些原则,并在本书中贯彻执行。
第2章 入门 2.1 脚本编程语言与编译型语言的差异 2.2 为什么要使用 Shell 脚本 2.3 一个简单的脚本 2.4 自给自足的脚本:位于第一行的 #!. 2.5 Shell的基本元素 2.6 访问Shell脚本的参数 2.7 简单的执行跟踪 2.8 国际化与本地化 该章从编译语言与脚本语言间的取舍开始讨论。之后再介绍两个相当简单但很实用的Shell脚本程序。涵盖范围包括了命令、选项、参数、Shell变量、echo与printf的输出、基本输入/输出重定向、命令查找、从脚本里访问参数以及执行跟踪。最后则以国际化与本地化结束;这是在今日“地球村”环境下渐受重视的议题。
第3章 查找与替换 3.1 查找文本 3.2 正则表达式 3.3 字段处理 这里会介绍以正则表达式进行文字查找(或比对)。我们还会说明修改与提取文字的操作。这些都是最基本的Shel1脚本编写的操作。
第4章 文本处理工具 4.1 排序文本 4.2 删除重复 4.3 重新格式化段落 4.4 计算行数、字数以及字符数 4.5 打印 4.6 提取开头或结尾数行 该章介绍的是一些文字处理的软件工具,这些在Shell脚本编写时,都会一再地使用。其中最重要的两个就是sort与uniq,在重组与降低数据量上,它们扮演很重要的角色。本章还会带你看看如何重新编排段落、计算文字单位、显示文件以及取出文件的前几行、后几行数据。
第5章 管道的神奇魔力 5.1 从结构化文本文件中提取数据 5.2 针对 Web 的结构型数据 5.3 文字解密好帮手 5.4 单词列表 5.5 标签列表 该章以几个小型脚本为例,展示结合简单的UNIX工具程序能够产生更强大、更灵活的工具。本章的内容采取cookbook(问题描述与解决方案)的形式,它们共同的部分在于所有的解决方案都组合自线性的管道(pipelines)。
第6章 变量、判断、重复动作 6.1 变量与算术 6.2 退出状态 6.3 case 语句 6.4 循环 6.5 函数 这章介绍Shell语言里不可或缺的部分。包含了Shell变量与算法、退出状态的重要概念、如何判断,以及Shell循环的处理。最后以Shell的函数作结束。
第7章 输入/输出、文件与命令执行 7.1 标准输入、标准输出与标准错误输出 7.2 使用 read 读取行 7.3 关于重定向 7.4 print的完整介绍 7.5 波浪号展开与通配符 7.6 命令替换、 7.7 引用 7.8 执行顺序与 eval 7.9 内建命令 该章为Shell描述的另一章,也是结尾,重点放在输入/输出、Shell所执行的各种替换、加引号、命令行执行顺序,以及Shell内置命令上。
第8章 产生脚本 8.1 路径查找 8.2 软件构建自动化 我们在这里会示范如何结合UNIX的工具以处理更复杂的文本处理工作。本章的程序比第5章的还大,但仍是几分钟便能消化掉。甚至它们所完成的工作,如果使用传统的程序语言,例如C、C++或Java来做,会很困难。
第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 数值函数 该章介绍的是awk语言必备的组成部分。awk是一套功能强大且自给自足的语言。而awk程序更可用来与其他软件工具箱里的其他程序相结合,以执行简单的数据提取、处理与格式编排工作。
第10章 文件处理 10.1 列出文件 10.2 使用touch 更新修改时间 10.3 临时性文件的建立与使用 10.4 寻找文件 10.5 执行命令:xargs 10.6 文件系统的空间信息 10.7 比较文件… 该章介绍了处理文件的几个主要工具。包括列出文件、产生临时文件,以及利用指定标准寻找文件的find命令。另外还有两个与磁盘空间有关的重要命令, 以及比较文件间异同的几个程序。
第11章 扩展实例:合并用户数据库 11.1 问题描述 11.2 密码文件 11.3 合开密码文件 11.4 改变文件所有权 11.5 其他真实世界的议题… 将所有东西串起来,解决既有趣又难易适中的挑战性工作。
第12章 拼写检查 12.1 spell程序 12.2 最初的 UNIX 拼写检查原型 12.3 改良的ispell与aspell 12.4在awk内的拼写检査程序. 该章利用拼写检查的问题,展现如何以数种方式解决它。这里展现了原始的UNIXShell脚本管道以及两个小型的脚本:ispe11与aspe11命令,可自由下载,它们更适用于批处理的拼写检查工作。我们以awk写了一个大小适当的拼写检查程序充分展现使用该语言的简单利落。
第13 章进程 13.1 进程建立… 13.2 进程列表 13.3 进程控制与删除 13.4 进程系统调用的追踪 13.5 进程账… 13.6 延迟的进程调度 13.7 /proc文件系统 该章将重点从文本处理的领域转到工作.(iob)与系统管理上。我们介绍了几个用于管理进程的必备工具,还有sleep命令,这在脚本需要等待某些事发生时很有用,另外则是其他一些用于延迟的标准工具,或修正日期时间命令的处理。最重要的是,该章也包括了trap命令,它可以让Shell脚本控制UNIX的信号。
第14章 Shel 可移植性议题与扩展 14.1 迷思 14.2 bash的shopt 命令 14.3 共通的扩展 14.4 下载信息 14.5 其他扩展的Bourne式Shell 14.6 Shell版本 14.7 Shell的初始化与终止 这里介绍的是一些更有用的扩展,可使用于ksh与bash之下,而非POSIX。-般情况下,你都能安心地将这些扩展套用在你的脚本里。该章还会带你看几个gotchas”,这是等待粗心大意的Shell脚本编写者跳入的陷阱。内容包括了在编写脚本时该注意的事项,还有在执行时可能出现的矛盾。除此之外,还包括有ksh与bash的下载与安装。该章最后会探讨各种不同的Shell实现间,Shell初始化与终结的差异。
第15章 安全的Shell脚本:起点 15.1 安全性 Shell 脚本提示 15.2 限制性Shell 15.3 特洛伊木马 15.4 为Shell脚本设置setuid:坏主意 15.5 ksh93与特权模式… 该章会粗略介绍编写She11脚本时的安全性议题。
二、下载地址
2、部分章节效果(电子版字迹清晰,可读性很强)