操作系统课程设计说明书-基于Linux的简单shell设计_第1页
操作系统课程设计说明书-基于Linux的简单shell设计_第2页
操作系统课程设计说明书-基于Linux的简单shell设计_第3页
操作系统课程设计说明书-基于Linux的简单shell设计_第4页
操作系统课程设计说明书-基于Linux的简单shell设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE3操作系统课程设计说明书

学院、系:软件学院专业软件工程学生姓名:学号:设计题目:基于Linux的简单shell设计需求分析 我们小组完成的是基于Linux的简单shell设计,课程设计目的是学习简单的shell命令,并可以在shell底下编写简单的程序。我们都知道shell不仅是一个命令处理器(一个读入并解释你输入的命令的程序),而且还是一个程序设计语言。我们可以编写shell可以解释的程序(被称为源程序),这些源程序可以包含shell程序设计命令等等。 学习shell的编程,关键是学会指令或者命令。我们通过查阅相关资料,学习了Linux小下shell命令以及脚本,并可以通过编写一些简单脚本来实现简单的程序设计,完成一些简单的功能。总体设计Unix命令的通用语法格式通用语法格式为:“命令名称选项参数”例如ls–l-Ffile1file2file3。这个命令中ls是命令,-l,-F是选项,file1,file2,file3是参数,具体的输入ls--help或者manls查询相关的帮助变量的创建与使用创建变量很简单,“变量名=值”就创建了一个变量;变量的引用是需要“$”的;系统中存在一些特殊的变量,比如常用的$0,$n,$#,$*等。自动补全(TAB键)当只有一个文件的时候,由于没有歧义,所以按<Tab>键会自动补全;当有两个以上的文件时,因为有歧义,因此按<Tab>键会发出滴滴声提示有歧义,此时或者继续输入文件名,或者再按<Tab>键将显示所以有歧义的名称。历史命令fc和history都可以查到历史列表;-l参数是以列表的形式显示。I/O重定向标准输出sort>names意思是将sort的输出写入一个叫names的文件中,这个时候以重写,或者叫覆盖的模式写文件的;sort>>names意思是将sort的输出写入一个叫names的文件中,这个时候以追加的模式写文件的;为了防止错用“>”而使得已经存在的文件惨遭清除,我们可以在shell中设置相关命令,使得在使用“>”时不能覆盖已经存在的文件,具体的命令是:set-onoclobber,而复位这个选项的命令是:set+onoclobber;在设置了set-onoclobber,而我们确实需要覆盖的时候,我们用>|来临时忽略noclobber。I/O重定向标准输入sort<names意思是将文件names的内容输入到sort中;默认的标准输入被设置成键盘,按下^D发送EOF信号,表示数据输入结束;sort的功能,是用来排序的,具体查看sort--help的相关帮助。管道管道命令用“|”表示,它的作用是前一个程序的标准输出成为下一个程序的标准输入;例如ls|less,即是将ls输出的内容作为less的输入内容,因此显示的效果是ls显示的文件以一页一页的形式显示。前后台作业后台运行(&)即可;挂起(Ctrl+Z),当程序运行时,Ctrl+Z可以讲当前运行的程序挂起,停止运行;终止(Ctrl+C),通过Ctrl+C可以直接终止运行的程序;前台恢复(fg),将进程搬到前台运行(Foreground);后台恢复(bg),将进程搬到后台运行(Background);列出作业(jobs),列出当前shell环境中已启动的任务状态。Vi的设置set[no]number(nu)显示行号setautoindent(ai)缩进setshowmatch(sm)匹配(),{},[]setshowmode (snd)显示“INSERT”syntaxon显示高亮(vi无效,在vim中有效)初始化文件~/.vimrc脚本设计在shell中通过编写命令完成相关功能。这里我们用vi编写脚本实现一个小系统,其中我具体编程实现的功能有显示系统基本信息、登陆小程序、检测文件性质3个模块,系统框架图如下图2-1所示:主界面主界面系统信息显示检测文件性质登录小程序备份文件图2-1系统框架图简单的shell提示计算时间差Sleep测试显示日历详细设计在shell脚本设计中,我们编写的是几个功能聚集起来的小系统,通过一些简单的命令实现一些简单的操作,比如用户登陆显示,-d的文件测试等。下图3-1为系统的主界面:图3-1系统主界面进入登陆系统模块:程序流程图(见下图3-2)图3-2进入系统流程图图3-2进入系统流程图Y终端运行开始有执行权限结束Chmod+xNNY运行./main.sh详细代码#~~~~~~~~~~~~~~~~main(主程序)~~~~~~~~~~~~~~~~~~~~~~~~~clearwhiletrue do echo"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo"欢迎进入这个小系统,但是不知到能完成点啥~~~" echo"" echo"~~~~当前系统状况~~~~~"echo"当前用户:`whoami`在登录中" echo"操作系统名称:`uname`" echo"系统运行时间:`uptime`" echo"~~~~~~~~~~~~~~~~~~~~~" echo"" echo"1.系统信息" echo"2.简单的命令提示" echo"3.计算指定日期与现在的距离" echo"4.显示指定年的全年日历" echo"5.登陆小程序(if语句)" echo"6.检测文件性质" echo"7.sleep的测试" echo"8.备份文件" echo"9.退出" echo""echo"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" read-p"请输入您的选择:"choice whiletruedocase$choicein1)display;;2)tishi;;3)jisuan;;4)display_cal;;5)log;; 6)tt;;7)sleep_test;; 8);; 9)exit;; *)read-p"您输入有误,请重新输入:"choice;;esacdonedone运行截图图3-3系统信息图登陆小程序程序流程图(见下图3-4)开始开始结束输入用户名密码是否有效输入密码NY图3-4登陆小程序流程图详细代码#~~~~~~~~~~~5.登陆小程序(if语句)~~~~~~~~~~~~~log(){echo"这个实现简单的判断语句,其中用户名和密码均为\"Admin\"read-p"请输入登陆的用户名:"nameread-p"请输入密码:"passwordif["$name"=="Admin"-a"$password"=="Admin"]then echo"登陆成功"else echo"登陆失败,请检查用户名或密码"fiquit}运行截图图3-5用户登陆运行图检测文件性质程序流程图(见下图3-6)NNY开始输入文件或目录名输入信息是否存在结束显示信息性质图3-6程序流程图详细代码#~~~~~~~~~~~~~~6.检测文件性质~~~~~~~~~~~~~~~~~tt(){clearecho"当前目录为:"pwdecho"存在的文件有:"lsecho"请输入文件名或者目录名字:"readname1if[-z$name1]thenecho"你输入的信息为空" exitelseif[-f$name1]thenecho"这是一个文件"elif[-d$name1]thenecho"这是一个目录"elseecho"找不到这个文件或者目录"fifiquit}运行截图图3-7检测文件性质心得体会 这次的课程设计是关于在linux下的shell编程设计。对于我以及我们小组来说,这是一个全新的系统,全新的设计和全新的思路。通过图书馆的查阅以及网上资料的搜索,我们小组找到了关于shell的一些资料,在学习的基础上实践,讨论解决遇到的诸多问题。 Shell为Linux操作系统内核的外壳,为用户提供使用操作系统的命令接口,有三个功能:(如右图4-1)命令语言命令语言解释器(翻译)程序设计语言通过对shell的学习,我觉得shell和windows下的命令提示符作用差不多,只是shell更强大,功能更多。在vi下编写的.Sh文件和cmd下的.bat类似,即都是通过在特定的文件中输入指令,实现相关的功能。对linux以些命令的总结以及体会:在shell中,一些标点符号被称作为“元字符”,他们有着特殊的含义(例如>就是代表重定向),因此在echo中为了防止解析元字符,我们将元字符包含在“引号”中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论