Linux操作系统(实验五shell编程实验报告)
操作系统原理实验5-实现一个简单的Shell

《操作系统原理》实验报告
实验序号:5 实验项目名称:实现一个简单的Shell
一、实验目的及要求
1. 加深对操作系统Shell的理解。
2. 理解进程控制的思想。
3. 深入掌握Linux操作系统下的进程控制编程。
二、实验设备(环境)及要求
1.虚拟机VMware Workstation、Ubuntu操作系统和C语言编程。
2.设计思路:Shell建立一个新的进程,然后在那个进程中运行一个程序(如完成ls操作)然后等待那个进程执行结束。
然后shell便可读取新的一行输入,建立一个新的进程,在这个进程中运行程序并等待这个进程结束。
所以要写一个shell,需要循环以下过程:
a. 获取命令行
b. 解析命令行
c. 建立一个子进程(fork)
d. 替换子进程(execvp)
e. 父进程等待子进程退出(wait)。
三、实验内容与步骤
主要代码
解析并执行指令
输出各进程的信息
四、实验结果与数据处理
五、分析与讨论
六、教师评语
成绩
签名:
日期:。
Linux实验报告shell脚本编程

Linux实验报告shell脚本编程南京信息⼯程⼤学实验(实习)报告实验(实习)名称shell脚本编程实验(实习)⽇期得分指导教师系计算机专业计算机科学与技术年级班次姓名学号⼀·【实验⽬的】1、了解和熟悉创建并使⽤脚本的步骤。
2、熟悉bash 的控制结构。
3、学会简单的shell 编程。
⼆·【实验内容】1、创建⼀个简单的列⽬录和⽇期的shell脚本并运⾏之。
步骤:⑴输⼊下列命令,创建⼀个新⽂件:cat >new_script⑵输⼊下列⾏:echo “Your files are”lsecho “today is”date按回车键将光标移到⼀个新⾏,按Ctrl+D键保存并退出。
⑶检查⽂件内容,确保它是正确的:#cat new_script⑷运⾏脚本,输⼊它的⽂件名:#new_script该脚本不运⾏。
⑸输⼊下列命令,显⽰⽂件的权限:#ls –l new _script权限表明该⽂件不是可执⾏。
要通过简单调⽤⽂件名来运⾏脚本,必须有权限。
⑹输⼊下列命令,使new_script 变成可执⾏⽂件。
chmod +x new_script⑺要查看新的权限,输⼊:ls –l现在拥有⽂件的读、写和执⾏权限。
⑻输⼊新脚本的名字以执⾏它:new_script所有输⼊到⽂件的命令都执⾏,并输出到屏幕上。
⑼如果接收到错误信息,⽐如:command not found输⼊下列命令:#./new_script⽇10⽉11 12:37:00 CST 2009该命令⾏通知shell 到哪⾥寻找shell 脚本new_script,即您的当前⽬录“.”。
2、⽤Shell 语⾔编制⼀Shell 程序,该程序在⽤户输⼊年、⽉之后,⾃动打印数出该年该⽉的⽇历。
<参考程序>echo “Please input the month:”read monthecho “Please input the year:”read yearcal $month $year3、编程提⽰⽤户输⼊两个单词,并将其读⼊,然后⽐较这两个单词,如果两个单词相同则显⽰“Match”,并显⽰“End of program”,如果不同则显⽰“End of program”。
linux shell实验报告

linux shell实验报告《Linux Shell实验报告》摘要:本实验报告主要介绍了在Linux操作系统中使用Shell进行实验的过程和结果。
通过实验,我们深入了解了Shell的基本概念、常用命令和操作技巧,同时掌握了Shell脚本编写和执行的方法。
实验结果表明,Shell在Linux系统中具有重要的作用,能够提高工作效率和操作便利性。
一、实验目的本实验旨在通过实际操作,加深对Linux Shell的理解和掌握,探索Shell在Linux系统中的应用和作用。
二、实验内容1. Shell的基本概念在实验中,我们首先了解了Shell的基本概念,包括Shell是什么、其作用和特点等内容。
通过实际操作,我们发现Shell是一种命令行解释器,能够接收用户输入的命令并将其转化为操作系统能够理解的指令,从而实现对系统资源的管理和控制。
2. 常用Shell命令在实验中,我们学习了一些常用的Shell命令,如cd、ls、mkdir、rm等,以及它们的用法和功能。
通过实际操作,我们发现这些命令能够帮助我们在Linux 系统中进行文件和目录的管理,实现对系统资源的快速访问和操作。
3. Shell脚本编写和执行在实验中,我们还学习了如何编写和执行Shell脚本。
通过实际操作,我们发现Shell脚本能够帮助我们实现对一系列命令的批量执行,从而提高工作效率和操作便利性。
三、实验结果通过实验,我们深入了解了Shell的基本概念、常用命令和操作技巧,同时掌握了Shell脚本编写和执行的方法。
实验结果表明,Shell在Linux系统中具有重要的作用,能够提高工作效率和操作便利性。
四、结论本实验通过实际操作,加深了对Linux Shell的理解和掌握,探索了Shell在Linux系统中的应用和作用。
通过实验,我们发现Shell在Linux系统中具有重要的作用,能够提高工作效率和操作便利性,对于Linux系统的管理和维护具有重要的意义。
LINUX-shell程序编程实验报告

LINUX实验报告专业班级学号姓名报告时间:实验一Shell 编程一.实验名称:考勤模拟shell 程序设计二.实验目的:理解Shell程序的设计方法;熟悉ShelI程序的编辑、运行、调试方法与过程。
三.实验内容:考勤模拟Shell程序设计用shell 设计一个模拟考勤程序,实现如下功能选择界面:1:上班签到2:下班签出3:缺勤信息查阅考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在中。
如果是上班签到,记录签到信息,如果签到时间大于上午8 时,则提示用户迟到,并记录该迟到信息到中。
如果是下班签出,记录签出信息,如果签出时间小于下午 6 时,则提示用户早退,并记录该早退信息到。
如果用户选择确信信息查询,则将中对应的用户迟到早退的信息查询出来并显示。
用户选择功能执行完,Shell 程序继续回到功能选择界面等待下一个用户进行操作。
四.实验要求:1、掌握Shell 程序的编辑、运行、调试方法2、完成实验内容要求是现的功能3、撰写实验报告五.试验运行代码:#族勤信息查问3)echo ”请输入您的名字:"read nameecho ”请输入您的密码:”read password#用户密码驶证if test -r /home/user/userinfo.dat #如異use「info.dat文件存在且可读then while read fname fpassworddoif test M$fnaine w - "Sname11thenif test '^pas-s-v/ord11 = '^password"thenbreaki±fidone < /home/user/userinfo.datelseecho System Error: userinfq.dat does not exist!fiif test ''Sfname11 != H$name Hthenecho ”不存在该用户”elif test ”Sfpassword” != '^password11thenecho ”毘码不正确”elseecho ”您的记录;“echo " (11)cat ・b /home/user/check.dat | grep $nameecho " ------------ 11fi;;#非法输入echo ”清输入合法的远项!”esac^!/bin/sneiiwhile true; do#屏幕显示提示信息echo ,,wecho H----欢迎使用本系统echo H1、上班签到”echo M2、下班签出”echo H3、考助信息査阅echo "・—........................... ••”echo 11Mecho ”请输入您的选项:”新灵入选项read choicecase $chaice in#上班签到1) echo "请输入您旳名字:”read nameecho ”请输入您的密码:”read password#用户密码验证if test -r /home/user/userinfo.dat 育如果userinfo.dat^件存在且可谅thenwhile read fname fpassworddoif test "$fname" = M$name"thenif test M$pas sword" = K$p as sword11thenbreakfifidone < /home/user/userinfo.datelseecho System Error: userinfo.dat does not exist!if test ,,$fname M != ''Sname"thenecho '•不存在该用卢”el if test H Sf password" !=峙password" thenecho "密码不正确"elsehour=x dateif test "Shour M -gt 8thenecho ”您迟到了!11echo "Sname 上班迟劃 …日期: date " » Zhome/user/check.dat else echo "早■上好\ $name !M fi fi ;;#下班签出2) echo read echo read#用户巒码验证i'f test -r /home/hp/userinlo.dat #如果userinfo.dat^件存在且可读 thenwhile read fname fpassword doif test "Jfname* = ■$name B then if test "{password" ■ "tpassword" thenbreak fi fidone < /home/user/userinfo^dat elseecho' "£ystem Error : userinfo, dat does not exist !" fi 11 test "$fname ,r != "$name" then echo “不存户“Elif test "sfpassword" != "Spassword* then echo “应码不正确・ else hour= date 十%Htest "JhQur" -Lt 1& thenecho echo elseecho fi畑動信息査阅3) echo M 4ttA 您的名宇£ -6、试验运行结果:“请输入您的名宇;name "请输入您的密码:”pass 讨。
linuxshell编程实验总结

linuxshell编程实验总结Linux Shell编程实验总结在Linux系统中,Shell编程是一种强大的工具,可以帮助用户进行自动化任务、脚本编写和系统管理。
通过学习和实践Shell编程,我深深地体会到了其在提高工作效率和简化任务流程方面的重要性。
在这篇文章中,我将总结我在Linux Shell编程实验中的经验和心得。
一、实验概述在这次Linux Shell编程实验中,我学习并应用了Shell脚本语言,掌握了基本的语法和命令,并通过实验来加深对Shell编程的理解和掌握。
实验的内容包括变量的定义和使用、条件语句的实现、循环结构的应用等。
二、变量的定义和使用在Shell编程中,变量的定义和使用是非常重要的一部分。
通过实验,我学会了如何使用“=”符号来给变量赋值,并可以在后续的命令中使用这个变量。
在实践中,我发现给变量加上$符号可以获取变量的值,并且可以在字符串中插入变量。
这在编写脚本时非常有用,可以将一些可变的部分定义为变量,提高程序的可读性和可维护性。
三、条件语句的实现条件语句在Shell编程中起到了重要的作用,可以根据不同的条件执行不同的命令。
通过实验,我掌握了Shell中常用的条件判断语句,如if语句和case语句。
在编写条件语句时,我注意到要使用适当的比较运算符(如“-eq”表示等于、“-ne”表示不等于等),并在语句块的结尾加上“fi”或“esac”来结束条件语句的定义。
四、循环结构的应用在实践中,我发现循环结构是Shell编程中非常重要的一部分,可以重复执行特定的任务。
通过实验,我掌握了两种常见的循环结构:for循环和while循环。
在编写循环结构时,我注意到要使用适当的循环控制语句,如“break”可以用于跳出循环,“continue”可以用于跳过当前循环中的剩余命令,继续下一次循环。
五、实验心得通过这次实验,我深刻认识到了Shell编程在自动化任务和脚本编写方面的重要性。
Shell编程既可以简化日常工作中的重复性任务,又可以提高工作效率和减少出错的可能性。
实验五 LINUX环境下Shell编程(上)

实验五LINUX 环境下Shell编程(上:VI编辑器使用)实验目的:熟悉linux下Shell编程。
实验环境:PC,Red Hat Linux 9.0实验内容:掌握并能熟练使用VI编辑器。
实验步骤:vi是在UNIX 上被广泛使用的中英文编辑软件。
vi是visual editor的缩写,是UNIX提供给用户的一个窗口化编辑环境。
进入vi,直接执行vi编辑程序即可。
例:$vi test.c显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。
vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。
编辑完成后,使用者可决定是否要取代原来旧有的文件。
1、vi的工作模式vi提供二种工作模式:输入模式(insert mode)和命令模式(command mode)。
使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等操作。
要输入信息,应转换到输入模式。
(1)命令模式在输入模式下,按ESC可切换到命令模式。
命令模式下,可选用下列指令离开vi::q! 离开vi,并放弃刚在缓冲区内编辑的内容:wq 将缓冲区内的资料写入磁盘中,并离开vi:ZZ 同wq:x 同wq:w 将缓冲区内的资料写入磁盘中,但并不离开vi:q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用(2)命令模式下光标的移动H 左移一个字符J 下移一个字符K 上移一个字符L 右移一个字符0 移至该行的首$ 移至该行的末^ 移至该行的第一个字符处H 移至窗口的第一列M 移至窗口中间那一列L 移至窗口的最后一列G 移至该文件的最后一列W, W下一个单词 (W 忽略标点)B, B 上一个单词 (B 忽略标点)+ 移至下一列的第一个字符处- 移至上一列的第一个字符处( 移至该句首) 移至该句末{ 移至该段首} 移至该段末NG 移至该文件的第n列N+ 移至光标所在位置之后第n列n- 移至光标所在位置之前第n列(3)输入模式输入以下命令即可进入vi输入模式:a(append) 在光标之后加入资料A 在该行之末加入资料i(insert) 在光标之前加入资料I 在该行之首加入资料o(open) 新增一行于该行之下,供输入资料用O 新增一行于该行之上,供输入资料用Dd 删除当前光标所在行X 删除当前光标字符X 删除当前光标之前字符U 撤消·重做F 查找s 替换,例如:将文件中的所有"FOX"换成"duck",用":%s/FOX/duck/g"ESC 离开输入模式用vi命令新建一个名为test的文件:目前vi处于命令行模式,输入命令i进入输入模式:按Esc进入命令行模式,并输入命令“:wq”离开vi编辑器并保存文件:。
linuxshell编程实验总结

Linux Shell 编程实验总结1.引言本文档总结了在学习Li nu xS he ll编程过程中的实验经验和心得体会。
通过对L in ux Sh el l编程实验的实施和总结,我们能够更好地理解S h el l脚本的运行机制,掌握Sh el l脚本的基本语法和常用命令,提高编写高效、精确的Sh e ll脚本的能力。
2.实验一:S hell 脚本基础2.1实验目的本实验旨在帮助学员熟悉Sh el l脚本的基本语法和常用命令,掌握脚本的编写与执行方法。
2.2实验内容在本实验中,我们学习了如何编写具有特定功能的Sh el l脚本,如输出H el lo Wo rl d、计算两个数之和、判断文件是否存在等。
2.3实验心得通过本实验的实施,我对Sh el l脚本的基本语法有了更深入的理解。
在编写脚本的过程中,我发现使用变量、条件判断和循环结构可以极大地提高脚本的灵活性和实用性。
同时,我也加深了对常用命令的认识和掌握,如e ch o、re ad、i f-e ls e、fo r循环等。
这些基本的知识将为后续的实验和项目实践打下坚实的基础。
3.实验二:文件和目录操作3.1实验目的本实验旨在帮助学员了解Li nu x文件系统的基本操作,掌握S he ll脚本中与文件和目录相关的命令。
3.2实验内容在本实验中,我们学习了如何创建、复制、重命名和删除文件、目录,以及如何查询文件和目录的属性信息等。
3.3实验心得通过本实验的实施,我对Li nu x文件系统有了更深入的了解。
我学会了如何使用S he ll脚本快速处理文件和目录,并且能够根据需求编写相应的脚本来操作文件。
例如,通过使用fi n d命令来查找文件,使用g r ep命令来搜索文件内容等。
这些技能在日常工作中非常有用,能够提高工作效率和准确性。
4.实验三:文本处理4.1实验目的本实验旨在帮助学员掌握Sh el l脚本中处理文本的常用命令和技巧,能够快速有效地处理常见的文本数据。
linux实验五、Shell脚本程序编制实验

实验五Shell脚本程序编制实验●编写一个Shell命令脚本程序的基本步骤如下:●(1)编辑包含用户命令脚本程序的文本文件●(2)添加Shell定义语句,使Linux操作系统可以知道用户使用哪一种Shell●(3)编写Shell命令脚本程序内容●(4)保存脚本程序并退出。
用“chmod +x ”命令改变该脚本程序的存取权限和执行权限,使其可以被适当的用户使用。
●(5)运用该命令脚本程序以进行测试●(6)如有必要,可进行程序纠错。
●(7)如有必要,可把完整的命令脚本程序移动到相应位置●(8)如有必要,可在path语句中加上此脚本的路径练习:编写书本P107welcome Shell脚本程序运行脚本程序的三种方法:a.bash 脚本文件名b.bash < 脚本文件名c.chmod u(或g,o,a)+x 脚本文件名#为脚本添加执行权限Shell定义的环境变量shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有:●HOME:用于保存注册目录的完全路径名。
●PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
●TERM:终端的类型。
●UID:当前用户的标识符,取值是由数字构成的字符串。
●PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。
●PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。
●PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。
练习:使用echo显示上述环境变量内容注意:PS1 提示符设定标记:●\d 日期●\H 完整主机名\h 主机名第一段●\t 24小时时间\T 12小时时间●\u 用户名●\V Bash版本信息●\w 完整的工作路径\W 最后一层目录名●\# 下达的第几个命令●\\$ 提示符(root $,普通用户#)练习:输入以下命令,思考设置PS1环境变量的作用PS1=‟\u-\w(\#)\\$‟PS1=[\u@\h \W]\\$定义变量格式:变量名=变量值引用变量$变量名只读变量readonly 变量名export命令对已定义的变量进行输出,使变量可被子shell使用位置参数位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验步骤:(算法描述、源程序、操作步骤和方法)
1.内核源码位置:/usr/src/redhat下,或/usr/src/linux-版本号/下。
2.编译新内核步骤。
1)Make mrproper:清除旧的.o文件及依赖关系。
2)Make menuconfig:配置内核。
3)Make dep:检查文件依赖关系的正确性。
8)Make install:安装新内核,并增加新的启动项,等价于拷贝bzImage和system。Map到/boot目录,并修改grub文件。
9)配置完成后,重启系统,能够正常运行。
测试过程:(实验中出现的问题、错误、解决方法)
问题:对于以前学的一些命令掌握的不是很熟练,总是忘记。
实验总结:
上课认真听老师的讲解,认真做实验,不会的要及时询问老师或者同学。
签名:
2013年11月20日
评语与成绩:
教师签名:
2013年11月20日
信息技术学院
软件实验报告
专业:软件工程课程:Linux操作系统
4bzImage:生成内核镜像。
说明:这时在/usr/src/linux-2.6.18/arch/i386/bootw文件下会出现一个
名为“bzImage”的文件。
6)Make modules:生成可加载的内核模块。
7)Make modules_install:安装内核模块,即拷贝.ko文件到/lib/version/modules目录下。
学号:姓名:班级:软件工程班
实验名称
shell编程
实验类型
实践型
实验时间
2013-11-20
实验环境
Linux内核编译
实验目的与要求:
1.了解Linux内核版本规则。
2.掌握Linux内核的结构和基本功能。
3.掌握Linux内核的编译方法和步骤。
4.掌握Linux启动项的设置方法。
实验内容:
1.内核源码位置:/usr/src/redhat下,或/usr/src/linux-版本号/下。