Shell脚本学习指南(09年度畅销榜TOP50)(国内唯一本Shell脚本图书,让UNIX充分发挥其真实的潜能)
基本信息
- 原书名: Classic Shell Scripting
- 原出版社: O'Reilly Media, Inc.
- 作者: Arnold Robbins Nelson H.F.Beebe
- 译者: O'Reilly Taiwan公司
- 丛书名: 北京华章图文信息有限公司O'Reilly系列
- 出版社:机械工业出版社
- ISBN:9787111255048
- 上架时间:2009-5-14
- 出版日期:2009 年4月
- 开本:16开
- 页码:494
- 版次:1-1
- 所属分类:
计算机 > 操作系统 > UNIX
推荐阅读
内容简介回到顶部↑
shell脚本编程(scripting)的技巧永远不会过时:它们可以让unix充分发挥其真实的潜能。对unix的用户与系统管理者而言,编写shell脚本是必须的工作,它可以让你快速地控制与定制任何unix系统的强大功能。有了shell脚本,你可以结合基本的unix文本与文件处理命令来消化数据,以及自动化重复的工作。一旦你对shell脚本的编写掌控自如,在接下来的几年,这些技巧将对你相当有帮助。.
编写shell脚本所需要的不只是对shell语言的认识,还必须熟知单个的unix程序:你必须知道每个程序为什么会放在那儿,以及如何使用该程序或如何将其与其他程序结合。本书将告诉你这些有关 unix主流工具的知识。除此之外,本书还会帮助你解决unix命令与标准的差异。..
作者熟知unix程序使用的基本技巧与操作上细微的差异。他们不但会告诉你如何构建一个绝佳的脚本,还会教你如何避免落入让你功亏一篑的陷阱。有了本书,你可以节省很多力气。
我们要学习的不只是如何写出有用的shell脚本,你还得了解如何迅速、确实地定制shell,让程序的可移植性达到最佳状态,脱离对特定系统的依赖。这些技巧对任何操作与维护unix及linux系统的人而言都很重要。本书所提供的知识,将可以帮助你掌握基本的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 字段处理
前言
第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 字段处理
前言回到顶部↑
刚开始使用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语言、各个工具程序及其选项。
本书可以回答你这些问题。告诉你如何结合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语言、各个工具程序及其选项。
序言回到顶部↑
真的!我已经30年未写Shell脚本了?!?现在仔细想想,我想应该有吧,虽然一开始只是作些简单的工作(早期的UNIX Shell,在Bourne Shell之前,是极为原始的,因此要写个实用的脚本是很难的事,幸好那段日子并不长)。.
近几年来,Shell一直被忽略,是一个不受重视的脚本语言。Shell虽然是UNIX的第一个脚本语言,但它仍是相当优秀的。它结合了延展性与效率,持续保有独具的特色,并不断地被改良,使它们多年来一直能与那些花招很多的脚本语言保持抗衡。GUI是比命令行Shell更流行的用户界面,但脚本语言时常都是这些花哨的屏幕图形界面最强有力的支柱,并一直称职地扮演这个角色。
Shell需依赖其他程序才能完成大部分的工作,这或许是它的缺陷,但它不容置疑的长处是:简洁的脚本语言标记方式,而且比C(还有其他语言)所编写的程序执行更快、更有效率。它使用通用的、一般用途的数据表示方式,文本行,在一个大的(且可扩展的)工具集中,让脚本语言能够搭配工具程序,产生无穷的组合。用户可以得到比那些独占性软件包更灵活、功能更强大的工具。Shell的早期成功即以此法强化UNIX的开发哲学,构建一套专门性、单一目的工具,并将它们整合在一起做更多的事。该原则接着鼓励了Shell的改良,允许用这种方式完成更多的工作。
Shell脚本还有一个超越C程序的优势,同样也优于其他脚本语言的地方,可用一般方式轻松地读取与修改。即便不是C的程序设计人员,也能像现今许多系统管理人员一样,很快就能接受Shell脚本。如此种种,让Shell脚本成为延展用户环境与定制化软件包的重要一环。..
的确,它其实有一种“周而复始”的特性,在我看过这么多软件项目之后。项目将简单的Shell脚本置于关键位置,让用户容易地从他们的角度来定制软件。然而,也因为这些项目的Shell脚本与周围的C程序码相比较,要更容易解决问题,所以不断产生更复杂的脚本。最后,它们终于复杂到让用户很难轻易地处理(我们在C News项目里的部分脚本就拥有著名的Shell压力测试,完全未考虑用户的立场),且必须提供新的脚本集合,供用户进行定制……
长久以来,一直都没有编写Shell脚本相关的好书出现。UNIX程序设计环境方面的书籍偶有触及这方面议题,但通常只是简短带过,作为它众多主题的一部分,有些写得不错的书也很久没有更新了。好的参考文件应该是针对各种不同的Shell讨论,但必须是贴近新手的实战手册,涵盖工具程序与Shell,以循序渐近的方式介绍,告诉我们如何得到更好的结果与输出,还要注意到实例面,像是可读性议题。最好它还讨论各式Shell的异同,而不是好像世上只有一个Shell存在一样。
这本书就是这样的,甚至做到比上面说的还多。至少,它是第一本且最好的一本、内容最新的、以最轻松的方式介绍UNIX脚本语言的书。以实用的范例进行解说,让工具充分发挥自己的效能。它包括了标准UNIX工具,让用户有个好的开始(对于觉得看手册页有点难的用户来说,这会是个相当不错的参考教材)。我最高兴的是看到将awk列入取材范围,这是相当有用且不容忽视的工具程序,适于整合其他工具及简洁地完成小型程序设计的工作。
我建议所有正在编写Shell脚本或管理UNIX系统的人都要读这本书。我在这本书上学到很多,我想你也会。...
——Henry Spencer
SP Systems
近几年来,Shell一直被忽略,是一个不受重视的脚本语言。Shell虽然是UNIX的第一个脚本语言,但它仍是相当优秀的。它结合了延展性与效率,持续保有独具的特色,并不断地被改良,使它们多年来一直能与那些花招很多的脚本语言保持抗衡。GUI是比命令行Shell更流行的用户界面,但脚本语言时常都是这些花哨的屏幕图形界面最强有力的支柱,并一直称职地扮演这个角色。
Shell需依赖其他程序才能完成大部分的工作,这或许是它的缺陷,但它不容置疑的长处是:简洁的脚本语言标记方式,而且比C(还有其他语言)所编写的程序执行更快、更有效率。它使用通用的、一般用途的数据表示方式,文本行,在一个大的(且可扩展的)工具集中,让脚本语言能够搭配工具程序,产生无穷的组合。用户可以得到比那些独占性软件包更灵活、功能更强大的工具。Shell的早期成功即以此法强化UNIX的开发哲学,构建一套专门性、单一目的工具,并将它们整合在一起做更多的事。该原则接着鼓励了Shell的改良,允许用这种方式完成更多的工作。
Shell脚本还有一个超越C程序的优势,同样也优于其他脚本语言的地方,可用一般方式轻松地读取与修改。即便不是C的程序设计人员,也能像现今许多系统管理人员一样,很快就能接受Shell脚本。如此种种,让Shell脚本成为延展用户环境与定制化软件包的重要一环。..
的确,它其实有一种“周而复始”的特性,在我看过这么多软件项目之后。项目将简单的Shell脚本置于关键位置,让用户容易地从他们的角度来定制软件。然而,也因为这些项目的Shell脚本与周围的C程序码相比较,要更容易解决问题,所以不断产生更复杂的脚本。最后,它们终于复杂到让用户很难轻易地处理(我们在C News项目里的部分脚本就拥有著名的Shell压力测试,完全未考虑用户的立场),且必须提供新的脚本集合,供用户进行定制……
长久以来,一直都没有编写Shell脚本相关的好书出现。UNIX程序设计环境方面的书籍偶有触及这方面议题,但通常只是简短带过,作为它众多主题的一部分,有些写得不错的书也很久没有更新了。好的参考文件应该是针对各种不同的Shell讨论,但必须是贴近新手的实战手册,涵盖工具程序与Shell,以循序渐近的方式介绍,告诉我们如何得到更好的结果与输出,还要注意到实例面,像是可读性议题。最好它还讨论各式Shell的异同,而不是好像世上只有一个Shell存在一样。
这本书就是这样的,甚至做到比上面说的还多。至少,它是第一本且最好的一本、内容最新的、以最轻松的方式介绍UNIX脚本语言的书。以实用的范例进行解说,让工具充分发挥自己的效能。它包括了标准UNIX工具,让用户有个好的开始(对于觉得看手册页有点难的用户来说,这会是个相当不错的参考教材)。我最高兴的是看到将awk列入取材范围,这是相当有用且不容忽视的工具程序,适于整合其他工具及简洁地完成小型程序设计的工作。
我建议所有正在编写Shell脚本或管理UNIX系统的人都要读这本书。我在这本书上学到很多,我想你也会。...
——Henry Spencer
SP Systems
评论交流
共有84人开贴评论 108人参与评论 61人参与打分 查看
该作者发表于:2010-2-5 13:29:00
该书做工“精良”,纸张薄如蝉衣,保持了“铁工机”的一贯水准,与书后标价79¥遥相辉映,相映成趣。相比之下,东南大学之流不值一提。
讲到本书内容,还是相当全面,印象中大概有一半多是在讲各种命令行工具,以及如何用在脚本里完成各种各样的任务。当然对于shell脚本这种黏合剂类的“语言”,这也在情理之中。光有shell/脚本,没有五花八门的命令行工具,等于只有锅,唯独缺了煮八宝粥的各种材料。
中文译文大体还过得去,阅读起来没有太大障碍,不过在繁简转换过程中,出版社不够仔细,疏漏不少。
讲到本书内容,还是相当全面,印象中大概有一半多是在讲各种命令行工具,以及如何用在脚本里完成各种各样的任务。当然对于shell脚本这种黏合剂类的“语言”,这也在情理之中。光有shell/脚本,没有五花八门的命令行工具,等于只有锅,唯独缺了煮八宝粥的各种材料。
中文译文大体还过得去,阅读起来没有太大障碍,不过在繁简转换过程中,出版社不够仔细,疏漏不少。
| 我要写评论 |
| 查看所有评论交流(共84条) |


点击看大图






加载中...
