下载此文档

Linux Shell的研究与开发【文献综述】.pdf


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
该【Linux Shell的研究与开发【文献综述】 】是由【青山代下】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【Linux Shell的研究与开发【文献综述】 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。毕业设计文献综述计算机科学与技术LinuxShell的研究与开发一、前言部分相关概念:Shell是一种具备特殊功能的程序,它是介于使用者和UNIX/Linux操作系统之核心程序(kernel)间的一个接口。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。使用较广的shell有标准的Bourneshell(sh)、KornShell(ksh)、Cshell(csh)、BourneAgainShell(bash)等。shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如数、函变量和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。本质上,shell脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,。它接收用户命令,然后调用相应的应用程序[1]。管道是Linux支持的最初UnixIPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中。一个进程向管道中写的内容被管道另一端的进程读出,写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中[2]。写作目的:介绍了在Linux系统背景下对Shell相关知识的了解,编写简单的shell命令例如ls,cp,cat和rm命令等并且介绍了Shell相关的外部程序命令及管道和输入输出重定向功能,以加深对Shell这方面知识的理解,为此类程序的开发提供一定的启示性和指导性。二、主题部分Unix/linux发展简史:一、Multics计划1965年,AT&T贝尔电话实验室、通用电气公司、麻省理工学院MAC课题一组起联合开发一个称为Multics的新操作系统。Multics系统的目标是要向大的用户团体提供对计算机的同时访问,支持强大的计算数据存储,以及允许用户在需要的时候容易地共享他们的数据。1969年Multics的原始版本在GE645计算机上运行了,但它既没能提供预定的综合服务,而且,连它自己也不清楚究竟什么时刻算达到开发目标。在这种情况下,AT&T贝尔电话实验室首先退出了这一项目。二、UNIX系统的萌芽Multics项目中止后,AT&T贝尔电话实验室中参加开发的主要人员开始寻找其他有趣的项目。这其中,KenThompson写了一个名叫“太空漫游”的游戏程序。他找到了一台基本无人使用的DECPDP-7计算机运行他的程序。然而由于DECPDP-7缺少开发程序,以致于Thompson不得不在另一台运行GECOS操作系统的Honeywell635上交叉汇编他的程序,然后再通过纸带加载到DECPDP-7上。为了方便太空漫游的开发,Thompson和DennisRitchie一起着手开发DECPDP-7上的操作环境:,它后来深化成称之为SystemV文件系统的早期版;(命令解释器)。这样这个系统就足以满足他们的需要,他们将这个操作环境命名为UNIX。Thompson和Ritchie后来开发了B语言(后来Ritchie又将其发展为C语言),并扩展了UNIX系统,UNIX系统便在AT&T贝尔电话实验室流行起来。1973年11月,他们用C语言彻底重写,这是UNIX操作系统迈向成功之路的关键一步。完成后,Thompson和Ritchie共同在《ACM通信》上发表了首篇UNIX论文,TheUNIXTimeSharingSystem[3]。三、UNIX系统的发展由于AT&T公司受到美国反托拉斯法的诉讼,与联邦政府签署了一份协议,这份协议不允许AT&T公司生产与电话和电报服务无关的设备,也不允许从事除“公用通信服务”外的任何商业活支。这样,AT&T公司就陷入了不能经营计算机产品的尴尬局面。而自从在《ACM通信》中发表了关于UNIX的论文后,越来越多的人希望能够获得UNIX软件和源码。为了不违背与政府签署的协议,AT&T公司既不出售UNIX、也不为其作广告、也不对其提供技术支持。而同时为了满足大家的需要,AT&T公司在签署简单协议的前提下,将UNIX系统无偿地提供给大学,以供教学与研究。由于AT&T公司对UNIX的策略,使得UNIX在全世界范围内快速发展。到1975年底,它已经传播到西至耶路撒冷的Hebrew大学,南至澳大利亚的新南威尔士大学,北至加拿大多伦多大学的世界各地。1979年1月发行的UNIX版本是一个真正可移植的UNIX系统,它对其后的UNIX发展有着深远的影响。该版本最初是运行在PDP-11和Interdata8/32上的,该系统更加健壮,而且提供了比版本6更强大的功能,但其相当慢。许多领取了许可证的用户针对这一情况从不同方面对系统的性能进行了改进,AT&T又将这些改进中的许多内容加入了其以后的UNIX发行中。这种使用者与开发者之间的合作精神正是UNIX快速成长和不断发展的关键因素。不幸的是,当UNIX在商业上取得很大成功之后,这种精神就不存在了。四、UNIX系统最重要的分支----BSDUNIX1974年12月,加州大学伯克利分校获得了UNIX许可证。在其后的几年里,包括BillJoy和ChuckHaley在内的一组研究生为UNIX开发了几个实用工具,其中包括ex编辑器---vi的前身和一个Pascal编译器。他们将这些软件绑定成一个称为“伯克利软件销售(BSD)”的软件包,并在1978年春以每个许可证50美元出售。最初的BSD发行仅包括应用程序和实用工具,并没有对操作系统进行修改和再发行。Joy早期的贡献之一就是CShell。1978年伯克利得到一台VAX-11/780以及由新泽西州Holmdel的BTL小组移植的UNIX/32V。VAX-11采用32位体系结构,可以有4GB的地址,而物理内存仅为2MB。与此同时,OzalpBabaoglu为VAX设计了一个分页式的虚存系统,并将其加入到UNIX系统中。这就是1979年末发行的3BSD,是由伯克利发行的第一个操作系统。伯克利在虚存方面的工作促使美国国防部高级研究项目署(DARPA)决定投资支持伯克利的UNIX系统开发。DARPA项目的目的之一就是将TCP/IP网络协议族集成到UNIX系统中。在DARPA的资助下,伯克利又推出了几个BSD发行,统称4BSD。五、纯UNIX系统----SystemVAT&T公司与美国司法部的法律大战终于在1982年达到终点,一部里程碑式的法律出台了。根据该法令,地区性运营公司都从AT&T公司中分离出来,成立一系列的“贝尔宝宝”,贝尔电话实验室也独立出来,改名为贝尔实验室。同时,AT&T也被重新允许进入计算机市场。贝尔实验室先后在1982年发行了SystemIII,1984年发行了SystemVRelease2(SVR2),1987年发行了SVR3。SystemVUNIX也引入了许多新特征,新设施。最有代表性的就是进程间通信机制。六、UNIX系统的商业化UNIX系统的不断发展吸引了许多计算机公司。它们急急忙忙地开始将UNIX商业化,出售自己的UNIX版本。每一家都是以AT&T或BSD为蓝本,将它们移到自己的植硬件上,并加上一些自己的“增值”功能。1982年,BillJoy离开了伯克利,与人合资成立了Sun公司,基于BSD开发、发行了SunOS,后来又基于SVR4发行了Solaris。微软与SCO合作开发发行的XENIX。此后,SCO公司将SVR3移到植386上,并将其命名为SCOUNIX。还有一此大型的硬件公司,配合自己的计算机系统,也开发出一许多不同的UNIX版本:IBM公司开发的AIX操作系统----运行在RS6000小型机上;HP公司开发的HP-UX----运行在HP工作站上;Digital公司开发的DigitalUNIX。还有著名教授Tanenbaum为了教学开发的MINIX系统;以及我们可爱的小企鹅----LINUX操作系统。每种商业变体都增加了许多新特征,这些功能中的许多后来又被加入到主线系统中,这样逐步推动UNIX系统向前发展。七、LinuxShell的基本情况标准的UNIXshell是V7(AT&T的第七版)UNIX,在1979年底被提出,且以它的创造者StephenBourne来命名。Bourneshell是以Algol这种语言为基础来设计,主要被用来做自动化系统管理工作。虽然Bourneshell以简单和速度而受欢迎,但它缺少许多交谈性使用的特色,例如历程、别名和作业控制[4]。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)、内建算术、文件名完成(pletion)、和作业控制(jobcontrol)。对于常在交互模式下执行shell的使用者而言,他们较喜爱使用Cshell;但对于系统管者理而言,则较偏好以Bourneshell来做命令,因为Bourneshell命令比Cshell命令来的简单及快速。Cshell提示符号的默认值是%。Kornshell是Bourneshell的超集(superset),由AT&T的DavidKorn所开发。它增加了一些特色,比Cshell更为先进。Kornshell的特色包括了可编辑的历程、别名、函数、正规表达式万用字符(regularexpressionwildcard)、内建算术、作业控制(jobcontrol)、协同处理(coprocessing)和特殊的纠错功能。Bourneshell几乎和Kornshell完全向上兼容(patible),所以在Bourneshell下开发的程序仍能在Kornshell上执行。Kornshell提示符号的默认值也是$。在Linux系统使用的Kornshell叫做pdksh,它是指PublicDomainKornShell。除了执行效率稍差外,Kornshell在许多方面都比Bourneshell为佳;但是,若将Kornshell与Cshell相比就很困难,因为二者在许多方面都各有所长,就效率和容易使用上看,Kornshell是优于Cshell,相信许多使用者对于CShell的执行效率都有负面的印象。未来发展趋势:未来的Unix市场还会有很大的发展空间,对于Unix系统服务器产品主要是集中在特定的行业,像国内小型机市场的主要发展动力来自电信行业。同时,随着2009年电信运营商的重组和3G无线通信业务的开展,对于小型机市场的发展是一个商机。最关键的是,高度的可靠性和安全性始终拥有市场需求,特别是在金融电信行业来说,数据服务器等高密度数据处理的系统环境,这些高端的应用领域,仍然是Unix占据主要地位[5]。另外,Unix的发展和系统设计、架构都是以高性和高可靠性能为中心的。Unix经历了整体架构和性的能考验,主要用于“计算”和实际业务的数据处理,所以Unix系统正是利用极少的资源去做关键的处理而闻名。同时,对于现有的Unix系统服务器而言,对市场所关注的所谓的封闭性并不是非常介意,Unix当年是作为一个开放的系统平台出现的,应用在IBM的AIX和惠普的HP-UX之间进行迁移是十分容易的,尽管Unix厂商都在发展各自的系统平台,但是对用户的应用来说,这并不是一个很大的障碍。基于此,在Unix系统领域,在表面的危机之下,却蕴藏着一定的商机,在用户需求的推动下,在IBM、惠普、SUN等主要厂商的技术进步过程中,相信未来5至10年内,Unix市场仍然会是一片广阔的发展天地。在UNIX系统中,使用者可视自己的需要执行sh、ksh、bash、csh或tcsh来代替原先使用的shell、改变正在使用的环境;也可以用'chsh'指令、输入想使用的shell的路径及名称(如/bin/csh,在Y11-Y14机器上还需输入个人使用者的密码),改变以后每次login时所使用的shell、使自己所使用的环境能满足自己使用上的需要。三、总结部分本文较为详细地阐述了有关linux/unix方面的知识,回顾历史,立足现实,展望未来。今后随着信息技术的发展和shell方面应用领域的逐步增加,在通过设计并实现一些基本的shell,比如说列出目录下的文件,显示文件的内容,删除文件,复制文件等。更加加深了对shell的了解,也加深了对Linux这个系统的熟练程度。四、参考文献[1][M].北京:***出版社,2000.[2]、编辑器与Shell编程[M].北京:清华大学出版社,2007.[3]、编辑器与shell编程(第2版)[M].清华大学出版社,2010.[4][M].北京:电子工业出版社,2010.[5](美)[M].北京:人民邮电出版社,2009.[6]于重重,谭励,、编辑器、Shell编程实例大全[M].北京:人民邮电出版社,2009.[7](美)莫雷(Molay,B).Unix/Linux编程实践教程[M].清华大学出版社,2004.[8][M].南京:东南大学出版社,2009.[9]&UNIXShell程序设计[M].北京:中国青年出版社,2001.[10](美)弗里斯科比(Frisch,AE.).Unix与Linux系统管理[M].北京:清华大学出版社,2006.[11]:LINUX内核指导[M].杭州:浙江大学出版社,2002.[12][M].北京:电子工业出版社,2009.[13](第二版)[M].北京:清华大学出版社,2002.[14]Quigley/[美][M].北京:中国电力出版社,2003.[15]&UNIXShellProgramming[M].Addison-WesleyProfessional,2000.[16](英文版)[M].北京:***出版1998.

Linux Shell的研究与开发【文献综述】 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小740 KB
  • 时间2024-04-08