Linux Shell的设计与实现【开题报告】.doc

上传人:文初 文档编号:55506 上传时间:2018-05-30 格式:DOC 页数:7 大小:36.50KB
下载 相关 举报
Linux Shell的设计与实现【开题报告】.doc_第1页
第1页 / 共7页
Linux Shell的设计与实现【开题报告】.doc_第2页
第2页 / 共7页
Linux Shell的设计与实现【开题报告】.doc_第3页
第3页 / 共7页
Linux Shell的设计与实现【开题报告】.doc_第4页
第4页 / 共7页
Linux Shell的设计与实现【开题报告】.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、毕业设计 开题报告 计算机科学与技术 Linux Shell 的设计与实现 一、 选题的背景、意义 追溯到 Unix 诞生的那个年代,当时还没有现在流行的 “个人计算机 “。被称为计算机的机器,还是吞吐磁带与 磁存储器 的庞然大物。 DEC 公司(现在的 Compaq)推出的 PDP-11 ,体积小(被称为 mini)而且价格 低 ,在大学中引起了巨大的反响,很多学校直到那时才买得起一台计算机( PDP-11 物美价廉,只有 10000$)。 这些机器的操作系统由汇编语言、机器语言写成,所以运行起来效率很高,但都无法移植。每家计算 机公司都给自己的机器配上独有的操作系统,然后再销售。 这种笨拙

2、的作法很快就被人们意识到了,于是就开始兴建一个可以在不同品牌机器上运行的操作系统。 1969 年, Ken Thompson 开始写后来成为 Unix 的第一行代码。其实, Dennis Ritchie 为这个新的操作系统设计了一种新的编程语言 - C 语言后,事情才真正开始。 虽然 Unix 的效率不及原来的操作系统,但有三个突出的优点:可以任意移植到其他机器,其中的 C 语言大大简化了编程,而且这些都 免费的 。很快,全美国的大学都忙着开始为机器安装 Unix 。 1. 终端( Terminals) Unix 是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?他们是通过哑终端

3、来连接到这些机器,也就是用键盘、显示器及足够的电子元件组成的机器与中央计算机相连。在这些终端上,用户可以敲字符( teletype),这就是字符串 tty表示终端设备文件,和 getty命令的名称来历。 为了避免这些混乱,就创建了一个含有所有不同终端特性的文件,这就是 termcap。文件存储路径是 /etc/termcap。 Linux 终端大多数用 vt100或 linux作为终端类型。 2. xterms 在八十年代初期,产生了一个 Unix 的图形子系统 the X Window System 。 九十年代早期,为了更好地实现基于 Intel 的 Unix 类系统上(如 FreeBSD

4、、 NetBSD、 Linux)的应用,产生了一个系统分支 XFree86 。 X Window 中一个很大的好处是可以运行多个虚拟终端。甚至在 X Window 下就有这么个应用程序 xterm。用户将发现 xterm和 virtual terminal在很多情况下都是一样的。有的地方说 打开一个 xterm,其实用户不是非要用 xterm程序,其他的终端模拟器(terminal emulator),如 rxvt、 konsole、 aterm、 eterm、 wterm 等等,一样有效。 终端模拟器(又称为虚拟终端)通过伪 tty 设备 pty 与系统相连,并且使用自己的显示标准 xter

5、m 。这导致不同的终端模拟器可能在一些按键或程序上存在细小的差别,这取决于模拟器多大程度上遵 守了 xterm的显示标准。 3. Shells 标准的 UNIX shell 是 V7(AT&T 的第七版 )UNIX,在 1979 年底被提出,且以 它的创造者 Stephen Bourne 来命名。 Bourne shell 是以 Algol 这种语言为基础来设计,主要被用来做自动化系统管理工作。虽然 Bourne shell 以简单和速度而受欢迎,但它缺少许多交谈性使用的特色,例如历程、别名和作业控制。 C shell 是在加州大学柏克来分校于 70 年代末期发展而成,而以 2BSD UNIX

6、 的部分发行。这个 shell 主要是由 Bill Joy 写成,提供了一些在标准 Bourne shell 所看不到的额外特色。 C shell 是以 C 程序语言作为基础 ,且它被用来当程序语言时,能共享类似的语法。它也提供在交谈式运用上的改进,例如命令列历程、别名和作业控制。因为 C shell 是在大型机器上设计出来,且增加了一些额外功能,所以 C shell 有在小型机器上跑得较慢,即使在大型机器上跟 Bourne shell 比起来也显得缓慢。 有了 Bourne shell 和 C shell 之后, UNIX 使用者就有了选择,且争论那一个 shell 较好。 AT&T 的 D

7、avid Korn 在 80 年代中期发明了 Korn shell,在 1986 年发行且在 1988 年成为正式的部分 SVR4 UNIX。 Korn shell 实际上是 Bourne shell 的超集,且不只可在 UNIX 系统上执行,同时也可在 OS/2、 VMS、和 DOS 上执行。它提供了和 Bourne shell 向上兼容的能力,且增加了许多在 C shell 上受欢迎的特色,更增加了速度和效率。 Korn shell 已历经许多修正版,要找寻用户使用的是那一个版本可在 ksh 提示符号下按 Ctrl-v 键。 在大部份的 UNIX 系统,三种著名且广被支持的 shell 是

8、 Bourne shell(AT&T shell,在 Linux 下是 BASH)、 C shell(Berkeley shell,在 Linux 下是 TCSH)和 Korn shell(Bourne shell 的超集 )。这三种 shell 在交 互 (interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。 Bourne shell 是标准的 UNIX shell,以前常被用来做为管理系统之用。大部份的系统管理命令文件,例如 rc start、 stop 与 shutdown 都是 Bourne shell 的命令,且在单 用户 模式 (si

9、ngle user mode)下以 root 登录 时它常被系统管理 员 使用。 Bourne shell 是由 AT&T 发展的,以简洁、快速著名。 Bourne shell 提示符号的默认值是 $。 C shell 是柏克莱大学 (Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名 (alias)、内建算术、 文件 名完成 (filename completion)、和作业控制 (job control)。对于常在交 互 模式下执行 shell 的使用 者而言,他们较喜爱使用 C shell;但对于系统管理者而言,则较偏好以 Bourne shell 来做

10、命令,因为 Bourne shell 命令比 C shell 命令来的简单及快速。 C shell 提示符号的默认值是 %。 Korn shell 是 Bourne shell 的超集 (superset),由 AT&T 的 David Korn 所开发。它增加了一些特色,比 C shell 更为先进。 Korn shell 的特色包括了可编辑的历程、别名、函 数 、正规表达式万用字符 (regular expression wildcard)、内建算术、作业控制 (job control)、 协同 处理 (coprocessing)和特殊的 纠 错功能。 Bourne shell 几乎和 K

11、orn shell 完全向上兼容 (upward compatible),所以在 Bourne shell 下开发的程序仍能在 Korn shell 上执行。 Korn shell 提示符号的默认值也是 $。在 Linux 系统使用的 Korn shell 叫做 pdksh,它是指 Public Domain Korn Shell。 除了执行效率稍差 外, Korn shell 在许多方面都比 Bourne shell 为佳;但是,若将 Korn shell 与 C shell 相比就很困难,因为二者在许多方面都各有所长,就效率和容易使用上看, Korn shell 是优于 C shell,相

12、信许多使用者对于 C Shell 的执行效率都有负面的印象。 选题的意义: 通过对 Linux Shell 的设计与实现,了解 在 Linux 系统背景下 Shell 的相关知识,并且了解 Shell 相关的外部程序命令及管道和输入输出重定向功能,熟悉主流 Shell 的应用,以加深对 Shell 这方面知识的理解。在设计的过程中学会熟练运用 GCC 技术,了解 Linux 上的C 编程。 二、研究的基本内容与拟解决的主要问题 Linux 操作系统中, shell 是用户与系统内核沟通的中介,它为用户使用操作系统的服务 提供了一个命令界面。用户在 shell 提示符下输入的每一个命令都先由 s

13、hell 解释,然后传给内核执行。 研究的基本内容与拟解决的主要问题 : 设计并实现一个简单的 shell 程序,能够执行外部程序命令,命令可以带参数;能够实现管道和输入输出重定向功能。 1实现的 shell 能够解释并执行下列命令 : ls 列出目录中所有文件的名字,以及这些文件的其他信息。 ls a 列出的内容包含以“ .”开头的文件 ls lu 显示最后访问时间 ls s 显示以块为单位的文件大小 ls t 输出时按时间排序 ls F 显示文件类型 cp 能够复制文件,典型的用法是 $ cp source-file target-file 如果 target-file 所指定的文件不存在

14、, cp 就创建这个文件,如果已经存在就覆盖, target-file 的内容和 source-file 相同。 rm 用户可以用 rm 命令删除不需要的目录及文件。该命令的功能是删除一个目录中的一个或多个文件或目录,他也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,源文件保持不变。 cat 显示或连结一般的 ascii 文本文件 cat text 显示 text 这个文件; cat file1 file2 依顺序显示 file1, file2 的内容; cat file1 file2file3 把 file1, file2 的内容结合起来,再 “ 重定向( )

15、” 到 file3 文件中。 2实现管道和输入输出重定向。 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于 父子 进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道 缓冲区 的末尾,并且每次都 是从缓冲区的头部读出数据。 输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输

16、入可以不来自键盘,而来自一个指定的文件。输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。 三、研究的方法与技术路线、研究难点,预期达到的目标 研究的方法: 熟悉 Linux 操作系统下的 C 语言高级编程,了解 Linux 操作系统的 shell 执行方式,学习并掌握 Linux C 语言,熟练运用 C 语言来完成 Shell 的设计。 技术路线: Linux Shell 的设计与实现在 Ubuntu 操作系统下使用 C 语言进行编程。 Shell 是一个编程语言解释器,这个解释器解释从键盘输入的命令,

17、也解释存储在脚本中的命令序列。Shell 脚本是一个包含一系列命令的文件。运行一个脚本就是运行这个文件中的每个命令,可以用一个 shell 脚本在一次请求中来执行多个命令。 Shell 忽略以字符 #开始的行,脚本的余下部分由命令组成, shell 逐条执行命令直到文本末尾或者 shell 执行到 exit 命令。可以把脚本文件名作为参数传给 shell 来执行脚本,也可以通过设 置文件的执行权限,然后输入文件名来执行脚本。对于一个脚本只需要执行一次 chmod,可执行位将保持不变直到下一次再改变它。用改变文件可执行属性的方法来启动脚本会更加方便。将脚本设置成可执行的,然后像运行系统命令或自己

18、编写的程序一样来执行脚本。 脚本中除了命令之外还包括以下元素 1) 变量 脚本中可以定义变量,并在定义之后使用他们,用前缀 $来取得变量的值。变量名不一定要大写,只是习惯上将其大写。 2) 用户输入 read 命令告诉 shell 要从标准输入中读入一个字符串。可以使用 read 来创建交互的脚本,也可以从文件或管道中 读入数据。 3) 控制 脚本包括了 if、 then.、 else、 fi、 while、 case、 for 控制语句。 4) 环境 脚本使用一个名为 HOME 的变量。 HOME 的值是你的主目录的路径。 HOME 变量是由login 程序设置的,可以被 login 进程的

19、所有子进程使用。 HOME 变量时多个环境变量中的一个。这些变量记录了个性化设置,而这些设置能影响很多程序的行为。 研究难点: 实现管道和输入输出重定向功能。 预期目标: 设计后的 shell 能够解释并执行相关命令,实现管道和输入输出重定向,能实现基本的相关操作。 四、论文详细工作进度 和安排 第七学期第 10 周至第 18 周( 2011 年 01 月 06 日前):文献检索和资料收集,完成毕业论文(设计)文献综述、开题报告和外文翻译; 第八学期 第 1 周 至第 3 周( 2011 年 03 月 11 日前):撰写论文提纲,完成毕业论文(设计)初稿、需求分析和概要设计; 第八学期 第 4

20、 周 至第 12 周( 2011 年 05 月 13 日前):详细设计、系统调试、和毕业论文(设计)完成定稿; 第八学期第 13 周( 2011 年 05 月 20 日前):完成应用软件系统的设计和毕业论文(设计)送指导老师和评阅老师评阅,准备答辩; 第八学期第 14 周:参加毕业 论文(设计)答辩。 五、主要参考文献: 1 任爱华等 . 操作系统实验指导 M. 北京:清华大学出版社, 2004. 2 卢军 . Linux0.01 内核分析与操作系统设计 创造你自己的操作系统 M.北京: 清华大学出版社, 2004. 3(美) Bruce Molay 著,杨宗源等译 .Unix/Linux 编

21、程实践教程 M. 北京:清华大学出版社, 2004. 4 怀石工作室 .Linux 上的 C 编程 M.北京:中国电力出版社, 2001. 5 杜华 .Linux 编程技术详解 M.北京:人民邮电出 版社, 2007. 6 童 永清 .Linux C 编程实战 M. 北京:人民邮电出版社, 2008. 7 (美 )Behrouz A.Forouzan, Richard F.Gilberg 著,彭松虎译 .Unix 和 Shell 程序设 计权威教程 M. 北京:清华大学出版社, 2003. 8 徐德民 .操作系统原理 Linux 篇 M.北京:国防工业出版社, 2004. 9 刘胤杰 ,岳浩等

22、 . Linux 操作系统教程 M.北京:机械工业出版社, 2005. 10 逯燕玲 ,解文彬等 .Linux 操作系统 M.北京 :机械工业出版社, 2007. 11 王侠 , 高胜哲 . 论 Linux shell 原理 J. 辽宁税务高等专科学校学报 , 2005, (04). 12 朱永章 . 如何在 Linux 上写 C 程序 J. 中小学信息技术教育 , 2005, (05). 13 刘爽 . Linux Shell 的基本应用 J. 中文信息 , 2002, (02) . 14 Abraham Silberschatz 等 .操作系统概念(第六版 影印版) M.北京: 高等教育出版社, John Wiley & Sons,Inc, 2002. 15BrianCarrier. File System Forensic AnalysisM.Crawfordsville:Addison-Wesley,2005.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 开题报告

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。