一. Linux简介
1.Linux是一套可免费使用和自由传播的类UNIX操作系统。1991年,芬兰赫尔辛基大学学生Linus开发了Linux内核。此后,一大批程序爱好者、软件技术专家对Linux进行修改和完善。Linux操作系统从诞生到现在,其开放、安全、稳定的特性得到越来越多用户的认可,又由于其低成本、自由开发以及安全可靠等优势,促使各国政府和企业纷纷对Linux提供强有力的支持。Linux的应用和发展前景变得越来越广阔。
2. 自1991年10月5日Linus Torvalds在新闻组comp.os.minix发表了LinuxV0.01,Linux开启了其迅猛发展的步伐。经过近20年的发展,Linux成为了一个支持多用户、多进程、多线程、实时性较好、功能强大而稳定的操作系统。它可以运行在x86、Sun Sparc、Digital Aopha、680x0、PowerPC、MIPS、ARM等平台上,是目前支持硬件平台最多的操作系统。由于用户操作习惯等因素的制约,Linux在桌面领域发展不是很好,但是在其他领域都取得了巨大的进步和成功。在企业应用领域方面,Linux得到了除微软公司之外几乎所有知名软件和硬件公司的支持,这包括IBM、HP、Sun、Intel、AMD、Sony等,软件公司有CA、Veritas、BEA、Oracle、SAP、Borland等,使得Linux操作系统在企业运算领域具有强大的发展潜力。
3. Linux自诞生以来,像其他许多软件一样发布了很多不同的版本,最常见的有Slackware、RedHat、Debian、S.u.s.E.等。
4.Fedora是一个开放的、创新的、具有前瞻性的Linux操作系统和平台,无论是现在还是将来它都允许任何人自由地使用、修改和重发布。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开放源码的软件和开放的标准。Fedora项目由Fedora基金会管理和控制,得到了Red Hat, Inc.的支持。Fedora项目的目标是与Linux社区一同构造一个完整的、通用的操作系统。Red Hat工程师团队一直参与到构建Fedora Core的过程中,同时邀请并鼓励更多的人参与其中。通过使用这种开放的过程,他们希望可以提供一个更加贴近自由的软件和更受开源社区欢迎的操作系统。
5. Fedora Core被红帽公司定位为新技术的实验场,与Red Hat EnterpriseLinux被定位为稳定性优先不同,许多新的技术都会在Fedora Core中检验,如果稳定,红帽公司才会考虑加入Red Hat Enterprise Linux中。到目前为止,Fedora Core已经发行了12个版本,最新版本为Fedora 12。注:本书的实验环境选择了Fedora 11,它是在2009年
6. 月发行的Fedora版本,其Shell是bash Shell,版本是4.0.16(1)-release。本书所有的例子和脚本都在Fedora 11系统下测试通过。
二. Shell简介
1. Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检时就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登录Linux系统时,Shell就会被调入内存执行。Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。图1-1描述了Shell在Linux系统中的位置。
2. 用户可以通过两种方式打开Shell,第一种是在Linux系统图形用户界面GNOME下单击“终端”打开ShellFedora Core 11系统下打开Shell的方法,“终端”菜单位于“应用程序”→“系统工具”下面;第二种打开Shell的方式就是利用一些软件工具以SSH的方式远程登录到Linux系统,目前比较流行的Shell软件工具是SSH Secure Shell和PuTTY
三. Shell脚本编程的优势
1. 脚本语言(Script Language)是相对于编译型语言而言的,它是为了缩短编译型语言编写—编译—链接—运行(Edit-Compile-Link-Run)过程而创建的计算机编程语言。由于脚本语言常常运行于底层,所处理的是字节、整数、浮点数或其他机器层的对象,因而,脚本语言是低级程序设计语言。如C\C++、Ada、Java、C#等都属于编译型语言,也可称为高级程序设计语言,这类语言所编写的程序需要经过编译,将源代码转化为目标代码才能运行。而脚本语言往往是解释运行而非编译,即由解释器(Interpreter)读入脚本程序代码,将其转换成内部的形式执行,而解释器本身则是编译型程序。脚本语言的好处是简单、易学、易用,适合处理文件和目录之类的对象,以简单的方式快速完成某些复杂的事情通常是创建脚本语言的重要原则,脚本语言的特性可以总结为以下几个方面:● 语法和结构通常比较简单。● 学习和使用通常比较简单。● 通常以容易修改程序的“解释”作为运行方式,而不需要“编译”。● 程序的开发产能优于运行效能。脚本语言的灵活性是以执行效率为代价的,脚本语言的执行效率通常不如编译型语言。当然,脚本语言一般不适用于大型的项目、计算复杂的工程或有高级需求的应用软件,它适用于系统管理、文本处理等方面完成特定功能的常用的小工具或小程序。Shell脚本语言是Linux/UNIX系统上一种重要的脚本语言,在Linux/UNIX领域应用极为广泛,熟练掌握Shell脚本语言是一个优秀的Linux/UNIX开发者和系统管理员的必经之路。利用Shell脚本语言可以简洁地实现复杂的操作,而且Shell脚本程序往往可以在不同版本的Linux/UNIX系统上通用。尽管Shell脚本语言延续了脚本语言易学的特性,易学体现在Shell脚本语言门槛较低,易于上手,读者可以毫不费力就学会编写一个简单的Shell脚本程序,并且很容易学会执行它。但是,要深入透彻地学会Shell脚本语言是有难度的,因为Shell脚本语言涉及几乎所有Linux命令的灵活使用,而且Linux系统下的小工具(如awk、sed)也较多,它们常常出现在Shell脚本之中。另外,Shell脚本语言还提供了类似于高级程序设计语言的语法结构,如分支判断语句、变量和函数、循环结构、数组、算术和逻辑运算等。综上所述,Shell脚本语言是Linux/UNIX系统上应用广泛的实用程序设计语言,它是“易学难精”的,真正学会Shell脚本编程,需要读者清晰地掌握Linux重要命令的语法,理解Linux命令重要选项的作业和区别,还需要掌握Shell脚本语言的语法结构以及一些常用的小工具。