《Shell脚本快速学习指南》是2012年机械工业出版社出版的图书,作者是ArnoldRobbinsNelsonH.F.Beebe。
基本介绍
- 书名:Shell脚本快速学习指南
- 作者:Arnold Robbins Nelson H.F.Beebe
- 原版名称:Classic Shell Scripting
- ISBN:9787111255048
- 出版社:机械工业出版社
- 开本:16开
基本信息
原书名: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语言、各个工具程式及其选项