Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103682384
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-04 15:36:09

 





shell script 篇


这文章的主要目的在於告诉读者如何透过Shell Script,让Unix更友善、更好用。撰写Shell Script不需要写半行的C或C++,也不用编译及载入,更不需要任何的物件及方法,您可以在本手记中学到许多很酷的技巧,从计算股价目前的市值,到轻轻松松地分析Apache记錄档等等,都可以透过本手记所提供的Shell Script完成。


本文章是为你写的,如果…

就像使用任何一本技术书辑一樣,您一定会问一个很重要的问题:这本手记究竟适不适合我? 我们必需先告诉您,这不是一本介绍如何在Unix、Linux或Mac OS×环境下自动工作的入门书籍。不过此书对於想要研究shell程式的开发者来說,是很有趣的。如果你想要学习如何写好script程式,在网路上有很多的参考文件,不过这些文字有一个共同的特点:它们提供的范例都较为呆板、简单及无趣。本文章的目的是成为一本最好的技术手册,介绍一些可以容易理解的程式设计,以及如何透过这些程式,来帮助你完成实务上的工作。程式的长度从只有几行到一百多行甚至更多,文章中的这些程式,不只有用,也希望借由这些程式,协助你建立一个专属自己的程式。如果你对上面所述感兴趣的话,那么本文章就是专为你而写的。


什麼是ShellScript?

这个有趣的问题赶紧来回答看看,什麼是 shell script 呢? 那是一个文字介面底下让我们与系统沟通的一个工具介面,那麼 script 是啥? 字面上的意义, script 是「腳本、剧本」的意思。整句话是說, shell script 是针对 shell 所写的「剧本!」 什麼东西啊?呵呵!其实, shell script 是利用 shell 的功能所写的一个「程式 (program)」,这个程式是使用纯文字档,将一些 shell 的语法与指令写在裡面, 搭配正规表示法、管線命令与资料流重导向等功能,以达到我们所想要的处理目的。

我们可以这么說, shell script 就像是早期 DOS 年代的批次档 (.bat) ,最简单的功能就是将许多指令汇整写在一起, 让使用者很轻易的就能夠 one touch (执行一个档案 "shell script" ,就能夠一次执行多个指令), 而, shell script 更提供阵列、回圈、条件与逻辑判断等重要功能,让使用者也可以直接以 shell 来撰写程式,而不必使用类似 C 程式语言等传统程式撰写的语法呢!

那,这麼說您可以了解了吗?是的! shell script 可以简单的被看成是批次档, 也可以被說成是一个程式语言,且这个程式语言由於都是利用 shell 与相关工具指令, 所以不需要编译即可执行,且拥有不错的除错 (debug) 工具,所以,他可以帮助系统管理员快速的管理好主机。

(为了使大家容易明白,这段是摘自中文Linux前辈"鸟哥"的文章)


我们在这里讨论的范围包含如何调整程式的部分。



哪一个shell环境?

在整个Unix的环境中,少說也有十几个Shell可以使用,一般最常用的两种分別是:Bourne Shell(sh)與C Shell(csh)。在Unix與Linux的世界里,最重要的幾个工作环境是Bourne Shell、C Shell、Korn Shell (C Shell的延伸)以及Bourne AgainShell (bash)。其中最引人注意的是早期由AT&T的貝尔实验室所开發的Bourne Shell。这个环境或许仍然存在於你的系统上(/bin/sh),它並不吸引人,但是它的语法特別,是一个在Unix系统上shell程式共同的开发环境。

自由软体基金会重新开发的Bourne Shell取名為bash (Bourne Again Shell)。然而这不只是重新建立一个有20年歷史的命令环境,它也提供許多開發程式的功能。在许多的Linux系统上,已经将/bin/sh 连结到bash了!

另一个开发环境是由柏克莱大学所开发的C Shell它將Bourne Shell的語法改良成与C很像的語法。

就像选择Unix一樣,底下的三個环境,哪一個才是最好的呢? Bourne Shell、Korn Shell與C Shell。但基本上它們並不相同,由Tom Christiansen所撰寫的文章「Csh Programming Considered Harmful」中就明確的寫著:

我经常看到有人使用csh写作条件式、安装程式或者写作一些简单的工具程式。但是他们不知道在处理 /etc/rc与 .cronrc 档案时,如果下使用Bourne shell的话,会產生一些问题,因为这两个档案必须使用Bourne shell来处理。csh非常的引入注意,原因是它与 C 很像,因此在开发过程较容易选择csh来撰写程式,很不幸的是,许多的程式设计师,都是到最后才发现很多的简单的事情在csh下会变得很棘手,这才领悟到之前所說的道理。

我完全同意Tom的說法,因此在书中我们会避免使用C Shell。如果你还是习惯使用C Shell,可以找到简单的重写方式让程式可以正常运作。同樣的也有许多的使用者习惯使用Korn Shell,它具有相当惊人的互动环境,不过我感觉它的程式开发环境较为不足。

当你在shell环境中运算时,请仔细考虑你要的是互动环境(像別名、历程、拼字检查及错误讯息等)或是开发的能力。本文章著重的是程式的开发,开发的工作环境是Bourne Shell,這個環境在任何的Unix上應該都可以正常執行。

本手记共分12章,讨论的范围在如何运用script程序来改善并提升Unix的效能。



第一章:打造函式库

在unix的程序环境中,像是C或Perl都有许多的实用的函式库及一些让数值格式化、计算天数等帮助你运算的函数。不过在shell下写程序时,并不一定有上述这些功能,你可能因此而倍感无力。因此第一章的重点会放在各式各样的工具及将程式变得更友善,这两个重点将围绕着此手记及所写的程序。我们在此章所提及的程式包括:确认输入的数据、简单而有用的bc前端功能、为数值加上「‚」改良它的显示效果、避免部份的Unix系统在echo命令不支持「-n」参数及使用ANSI颜色规则排序的Script等。



第二章与第三章:改良命令与建立工具

这两个章节的特色是:循着不同的管道将Unix中的命令扩展延伸成新的命令。的确,从一个好的角度来看,Unix总是不断的发展与进化,就像Shell一樣。不过从另一个角度来看,我有可能正在帮助某些人成为黑客。这两章的程式提供友善且互动的计算机、不同的记錄与事件追蹤系统、命令可重覆输入、有用的前端拼字能力、多时区的date命令及新版本的ls命令,可加強排列目录的功能。



第四章:让你的Unix火力全开

如果你同时使用两种不同的Unix系统,特別是在开放源码的Linux发行版与商业版本的Unix,像是Solaris或HP-UX,你会察觉到它们的命令与参数都不太一樣。因此这个章节会修改Unix的命令,让它们能与其他的Uuix相容,內容包含把GNU-style命令参数转变为non-GNU命令的方法,以及一组相当简单的档案压缩工具。



第五章与第六章:系统管理工具

如果您已经熟悉这本手记的程式,这对您在不同的Unix上的管理可能是相当不错的,纵使这些系统只是在个人电脑上执行的Debian、Linux或FreeBSD (这让我想起了一个笑话:您该如何修复常当机的Windows系统呢? 我当然会说“您就改为安装Linux吧!”)。这两个章节会提供一些改良式的管理工具给您,包括磁碟使用情形的分析工具、系统自动寄发信件给磁碟配额 (quota) 过量的使用者、自动列出inted及xinetd中可使用的服务、改良的killall命令、有效的工作排程、每天自动置換记錄档与一组自动备份系统。



第七章:Web与Internet使用者

如果您有一台电脑,无疑的您应该已经有上网了。这个章节包含了许多很『酷』的程式,这些程式展示Unix的命令如何以精彩简单的运作方式在网际网路上执行,其中包括:网路上任何网页的网址分离工具、天气追蹤、电影资料库搜寻工具、股票追蹤,以及在网页異动时会自动发信告知的网页追蹤工具。



第八章:Webmaster的秘密武器

不管您是在执行一个网站,或执行自己的Unix系统还是在网路上的某一台分享服务器,只要您是网路管理员或是ISP (网际网路服务提供者) ,在这个章节的程式将提供你在网路上建立网页的工具、处理表单、建立网路相簿及记錄网路搜寻的能力。除此之外,还有文字计数器及完整的访客留言版程式。



第九章与第十章:网站的管理

这两个章节将详述管理网际网路上所有类型的服务器,包括两个不同网站传输记錄的分析程式、识別內部或外部線页的错误、网页的拼字确认与Apache网页密码管理工具(它会保留.htaccess档)、从伺服器上备份网页到另一台电脑的程式。



第十一章:你所不知道的Mac OS X

麦金塔(Mac)是一套最棒的图形介面作业系统,现在世界上最多人使用的另一种系统 Win...就是有抄袭它之嫌,它在这方面的技术非常的迷人而且大幅超越Unix,值得一提的是Mac OS X具備著與Unix完全相同的介面。本章将探讨一些实用且具有教育意义的scripts,除此之外也要修改adduser命令,让我们可以在命令列上很快的新增Mac OS X的使用者帳號、一起探索Mac如何修改email的別名、iTunes如何储存音乐的资料,如何改变终端视窗的标题与提昇开啟程式的效能。



第十二章:遊戏与娛乐

为什麼在程式书籍都很少提到遊戏的部份呢? 本书的最后一章将运用最精致的技术与想法来撰写三个有趣且具有挑战性的遊戏。当您在看完这最后一章的同时,这三个程式会让您的学习更有价值,特別是《刽子手》遊戏,它将展现一些较高明的程式写法与诀窍。




作者:Dava Taylor


出处:南方Linux
阅读(296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~