shell 编程
时间:2008-12-17 来源:sparkzh
Shell是Unix/Linux系统中一个重要的层次,它是用户与系统交互作用的界面。在以前介绍Linux命令时,Shell都作为命令解释程序出 现:它接收用户输入的命令,进行分析,创建子进程,由子进程实现命令所规定的功能,等子进程终止工作后发出提示符。这是Shell最常见的使用方式。
Shell还是一种高级编程语言,它有变量、关键字,有各种控制语句,如if、case、while、for等语句,支持函数模块,有自己的语法结构。利 用Shell程序设计语言可以编写出功能很强、但代码简单的程序。特别是它把相关的Linux命令有机地组合在一起,可大大提高编程的效率,充分利用 Linux系统的开放性能,能够设计出适合自己要求的命令。
Shell概述
Shell的概念最初是在Unix操作系统中形成和得到广泛应用的。Unix的Shell有很多种类,Linux系统继承了Unix系统中Shell的全部功能,现在默认使用的是bash。
1.Shell的特点
Shell具有如下突出特点:
(1)把已有命令进行适当组合构成新的命令。
(2)提供了文件名扩展字符(通配符,如* 、 ?、 [ ]),使得用单一的字符串可以匹配多个文件名,省去键入一长串文件名的麻烦。
(3)可以直接使用Shell的内置命令,而不需创建新的进程,如Shell中提供的cd、echo、exit、pwd、kill等命令。为防止因某些Shell不支持这类命令而出现麻烦,许多命令都提供了对应的二进制代码,从而也可以在新进程中运行。
(4)Shell允许灵活地使用数据流,提供通配符、输入/输出重定向、管道线等机制,方便了模式匹配、I/O处理和数据传输。
(5)结构化的程序模块,提供了顺序流程控制、条件控制、循环控制等。
(6)Shell提供了在后台执行命令的能力。
(7)Shell提供了可配置的环境,允许创建和修改命令、命令提示符和其它的系统行为。
(8)Shell提供了一个高级的命令语言,能够创建从简单到复杂的程序。这些Shell程序称为Shell脚本,利用Shell脚本,可把用户编写的可执行程序与Unix命令结合在一起,当作新的命令使用,从而便于用户开发新的命令。
2.常用Shell类型
Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。
(1)Bourne Shell是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
(2)C Shell是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。
(3)Korn Shell是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
(4)Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。
3. Shell脚本的建立
Shell程序可以存放在文件中,这种被Shell解释执行的命令文件称为Shell脚本 (Shell Script)。Shell脚本可以包含任意从键盘键入的Linux命令。
建立Shell脚本的步骤同建立普通文本文件的方式相同,利用编辑器(如vi)进行程序录入和编辑加工。例如,要建立一个名为ex1的Shell脚本,可在提示符后输入命令:
$ vi ex1 |