Chinaunix首页 | 论坛 | 博客
  • 博客访问: 793872
  • 博文数量: 858
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 17:43
文章分类

全部博文(858)

文章存档

2011年(1)

2008年(857)

我的朋友

分类: LINUX

2008-08-29 17:54:11

 
  第一个有重要意义的,标准的UNIXshell是V7(AT&T的第七版)UNIX,在1979年底被提出,且以它的创造者StephenBourne来命名。Bourneshell是以Algol这种语言为基础来设计,主要被用来做自动化系统管理工作。虽然Bourneshell以简单和速度而受欢迎,但它缺少许多交谈性使用的特色,例如历程、别名和工作控制。

  Cshell是在加州大学柏克来分校于70年代末期发展而成,而以2BSDUnix的部分发行。这个shell主要是由BillJoy写成,提供了一些在标准Bourneshell所看不到的额外特色。Cshell是以C程序语言作为基础,且它被用来当程序语言时,能共享类似的语法。它也提供在交谈式运用上的改进,例如命令列历程、别名和工作控制。因为Cshell是在大型机器上设计出来,且增加了一些额外功能,所以Cshell有在小型机器上跑得较慢,即使在大型机器上跟Bourneshell比起来也显得缓慢。

  有了Bourneshell和Cshell之后,UNIX使用者就有了选择,且争论那一个shell较好。AT&T的DavidKorn在80年代中期发明了Kornshell,在1986年发行且在1988年成为正式的部分SVR4UNIX。Kornshell实际上是Bourneshell的超集,且不只可在UNIX系统上执行,同时也可在OS/2、VMS、和Dos上执行。它提供了和Bourneshell向上兼容的能力,且增加了许多在Cshell上受欢迎的特色,更增加了速度和效率。Kornshell已历经许多修正版,要找寻您使用的是那一个版本可在ksh提示符号下按Ctrl-v键。

  在大部份的UNIX系统,三种著名且广被支持的shell是Bourneshell(AT&Tshell,在Linux下是BASH)、Cshell(Berkeleyshell,在Linux下是TCSH)和Kornshell(Bourneshell的超集)。这三种shell在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。

  Bourneshell是标准的UNIXshell,以前常被用来做为管理系统之用。大部份的系统管理命令文件,例如rcstart、stop与shutdown都是Bourneshell的命令档,且在单一使用者模式(singleusermode)下以root签入时它常被系统管理者使用。Bourneshell是由AT&T发展的,以简洁、快速著名。Bourneshell提示符号的默认值是$。

  Cshell是柏克莱大学(Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名(alias)、内建算术、档名完成(filenamecompletion)、和工作控制(jobcontrol)。对于常在交谈模式下执行shell的使用者而言,他们较喜爱使用Cshell;但对于系统管理者而言,则较偏好以Bourneshell来做命令档,因为Bourneshell命令檔比Cshell命令档来的简单及快速。Cshell提示符号的默认值是%。

  Kornshell是Bourneshell的超集(superset),由AT&T的DavidKorn所开发。它增加了一些特色,比Cshell更为先进。Kornshell的特色包括了可编辑的历程、别名、函式、正规表达式万用字符(regularexpressionwildcard)、内建算术、工作控制(jobcontrol)、共作处理(coprocessing)、和特殊的除错功能。Bourneshell几乎和Kornshell完全向上兼容(upwardcompatible),所以在Bourneshell下开发的程序仍能在Kornshell上执行。Kornshell提示符号的默认值也是$。在Linux系统使用的Kornshell叫做pdksh,它是指PublicDomainKornShell。

  除了执行效率稍差外,Kornshell在许多方面都比Bourneshell为佳;但是,若将Kornshell与Cshell相比就很困难,因为二者在许多方面都各有所长,就效率和容易使用上看,Kornshell是优于Cshell,相信许多使用者对于CShell的执行效率都有负面的印象。

  在shell的语法方面,Kornshell是比较接近一般程序语言,而且它具有子程序的功能及提供较多的资料型态。至于Bourneshell,它所拥有的资料型态是三种shell中最少的,仅提供字符串变量和布尔型态。在整体考量下Kornshell是三者中表现最佳者,其次为Cshell,最后才是Bourneshell,但是在实际使用中仍有其它应列入考虑的因素,如速度是最重要的选择时,很可能应该采用Bourneshell,因它是最基本的shell,执行的速度最快。

  tcsh是近几年崛起的一个免费软件(Linux下的Cshell其实就是使用tcsh)执行,它虽然不是Unix的标准配备,但是从许多地方您都可以下载到它。如果您是Cshell的拥护者,笔者建议不妨试试tcsh,因为您至少可以将它当作是Cshell来使用。如果您愿意花点时间学习,您还可以享受许多它新增的优越功能,例如:

  1.tcsh提供了一个命令列(commandline)编辑程序。
  2.提供了命令列补全功能。
  3.提供了拼字更正功能。它能够自动检测并且更正在命令列拼错的命令或是单字。
  4.危险命令侦测并提醒的功能,避免您一个不小心执行了rm*这种杀伤力极大的命令。
  5.提供常用命令的快捷方式(shortcut)。

  bash对Bourneshell是向下兼容(backwardcompatible),并融入许多Cshell与Kornshell的功能。这些功能其实Cshell(当然也包括了tcsh)都有,只是过去Bourneshell都未支持。以下笔者将介绍bash六点重要的改进(详细的使用说明笔者会在以后的章节介绍):

  1.工作控制(jobcontorl)。bash支持了关于工作的讯号与指令,本章稍后会提及。
  2.别名功能(aliases)。alias命令是用来为一个命令建立另一个名称,它的运作就像一个宏,展开成为它所代表的命令。别名并不会替代掉命令的名称,它只是赋予那个命令另一个名字。
  3.命令历程(commandhistory)。BASHshell加入了Cshell所提供的命令历程功能,它以history工具程序记录了最近您执行过的命令。命令是由1开始编号,默认值为500。history工具程序是一种短期记忆,记录您最近所执行的命令。要看看这些命令,您可以在命令列键入history,如此将会显示最近执行过之命令的清单,并在前方加上编号。

  这些命令在技术上每个都称为一个事件。事件描述的是一个已经采取的行动(已经被执行的命令)。事件是依照执行的顺序而编号,越近的事件其编号码越大,这些事件都是以它的编号或命令的开头字符来辨认的。history工具程序让您参照一个先前发生过的事件,将它放在命令列上并允许您执行它。最简单的方法是用上下键一次放一个历程事件在您的命令列上;您并不需要先用history显示清单。按一次向上键会将最后一个历程事件放在您的命令列上,再按一次会放入下一个历程事件。按向下键则会将前一个事件放在命令列上。

Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身Shell的生平与三种主要的Shell与其分身
阅读(285) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~