检索上Linux操作系统课程的教师名,Linux操作系统课程设计.docx
课 程 设 计 报 告
课程名称 Linux操作系统课程设计
指导教师
起止日期 2016-03-21 至 2016-06-13
学 院 信息与通信工程学院
专 业 电子信息工程
学生姓名
班级/学号
成 绩
指导老师签字
1. 课程设计概述
课程编号:0BS17101
课程性质:专业基础课,必修
适用专业:电子信息工程
学时数:16
学分:1
指导教师:段中钰
1.1 课程设计的目的
《Linux操作系统》课程是电信专业的一门重要的专业基础课。本课程设计是《Linux操作系统》课程在实践教学环节上的必要补充。本课程设计包含了一组综合设计实验,其目的是通过实践加深学生对操作系统原理的理解,提高综合运用Linux系统解决实际问题的能力。
1.2 课程设计的内容
本课程设计的内容与理论课程讲授的内容相配合,同步进行。在我们掌握Linux基本知识的基础上,通过相应的实验内容来加深对所学知识的理解,提高实际应用能力。除了理论课程已经学习过的内容之外,课程设计还包含了部分新的知识内容,以煅炼我们自行学习和研究的能力。这部分需要我们通过查阅man手册、教材、以及互联网上的资料等自行学习。
课程设计分为如下3个题目:
1. Linux基本操作:利用Shell命令进行文件处理和C编程等基本操作,目的是熟悉基于命令的Linux操作方式,加深对命令的理解。
2. Linux进程控制:利用进程控制相关的系统调用编程进行进程控制实验,观察进程从创建、运行到终止的控制过程,加深对进程概念的理解。
3. Linux Shell程序设计:利用Shell语言编写脚本实现综合应用,提高Linux应用水平。
本次为实验一
1.3 设计原理
本实验的目的是使学生理解Shell程序的执行环境和执行过程,掌握Shell语言的一般语法规则,能用bash编写简单的shell程序。
实验用时5学时,其中讲解2学时,上机3学时。上机内容包括:
l 编写一个shell脚本routine,实现日程提醒功能;
l 编写一个shell脚本makememo,实现备忘录管理功能;
l (选作)修改脚本,改进或增加新的功能。
2. 实验步骤
按以下步骤进行实验,记录关键步骤的运行结果。
2.1 基本操作(本实验在~/2014010923/exp3/目录下进行。)
2.1.1 编辑备忘录
在exp3目录下,编辑一个备忘录文件memo,其中的每行为一项日程安排,格式是:
yyyy-mm-dd 日程提示
以下是一个memo文件的例子:
2014-06-03 mothers birthday
2014-06-08 lunch with joe
2014-06-12 call zhang
2014-06-14 meeting 4pm
2014-06-15 shopping with mary
2.1.2 编写日程提醒脚本
在exp3目录下编写一个Shell脚本routine,完成以下功能:
2.1.2.1 显示初启信息
脚本启动时首先输出一些初始信息,包括程序名称与编者、当前的日期与时间、适当的问候语等,格式自定。例如:
***** routine v1.0 by your-sid *****
Good Evening!用户名
Today is Tue Mar 12 19:25:30 CST 2014
提示:根据当前时间显示问候语的方法参考教材例10.48,当前用户名是$USER(echo $USER),当前日期时间用date命令求出(echo Today is `date`)。
图 1
2.1.2.2 提醒用户当日的日程安排
查询备忘录文件memo,显示今日的日程安排(如果有的话)。可参考实验方法说明1)。
2.1.3 运行脚本
2.1.3.1 执行脚本
为routine脚本设置执行权(chmod 755 routine),运行routine脚本(./routine),调试并检查运行结果。提示:变换memo文件内容,检查日程提示是否正确。
图 2
2.1.3.2 自动执行脚本
编辑主目录下的.bashrc文件,将~/your-sid/exp3/routine命令行加到文件末尾(注意将your-sid替换为你的学号)。重新启动“终端”,检查脚本是否能成功地自动执行。
图 3
2.1.4 编写备忘录管理脚本
在exp3目录下编写一个Shell脚本makememo,完成以下功能:
2.1.4.1 显示初启信息及菜单
显示程序初启信息(程序名、编者学号等信息),显示程序的菜单,例如:
makememo v1.0 by your-sid
********* MENU *********
1. xxxxx
2. xxxx
3. xxxxxx
4. …
************************
2.1.4.2 接收并处理用户的输入
根据用户的输入的菜单编号,执行相应的功能。
2.1.5 运行脚本
运行./makememo,调试并检查运行结果。
图 4
图 5
2.1.6 (选做)修改脚本
修改routine和/或makememo脚本,改进或添加功能。可做的修改包括改善界面,增加查询功能(如查询某日或某月的日程安排),完善添加与删除功能(如增加对输入错误的处理),以及其他你认为可以做的改进。
图 6
实验结论与评价
这次课设实验很有意思,我学会了如何使用简单的linux编写shall程序,使用字符串比较命令时一定要注意格式一致。定义文件路径时必须与实际文件路径一致。
3. 程序清单
3.1 routine
echo "*****routine v1.0 by 2014010923*****"
hour=`date +%H`
case $hour in
08|09|10|11|12) echo "Good Morning!$USER";;
13|14|15|16|17) echo "Good Afternoon!$USER";;
18|19|20|21|22) echo "Good Evening!$USER";;
*) echo "Hello!$USER";;
esac
echo Today is `date`
echo -n "memo:"
day=`date +%F`
grep $day $HOME/2014010923/exp3/memo || echo Nothing.
3.2 makememo
#!/bin/bash
echo "makememo v1.0 by 2014010923"
MEMOFILE=$HOME/2014010923/exp3/memo
add_memo()
{
echo -n "输入要添加的日程项:"
read item
echo $item >> $MEMOFILE
sort -o $MEMOFILE $MEMOFILE
echo "日程添加以完成"
}
del_by_date()
{
echo -n "输入要删除的日程项(dd/mm/yy):"
read item
sed -i "/$item/d" $MEMOFILE
echo "日程删除完成"
}
del_by_num()
{
set `wc -l $MEMOFILE`
echo -n "输入要删除的日程项编号(1-$1):"
read num
sed -i "${num}d" $MEMOFILE
echo "日程删除以完成"
}
print_menu()
{
echo "***************** MENU *****************"
echo "1. 显示日程 2. 添加日程"
echo "3. 删除日程(按日期) 4. 删除日程(按序号)"
echo "5. 显示菜单 6. 退出"
echo "*****************************************"
}
print_menu
while true
do
echo -n "输入操作选择(1-6):"
read choice
case $choice in
1) cat -n $MEMOFILE;;
2) add_memo;;
3) del_by_date;;
4) del_by_num;;
5) print_menu;;
6) echo Bye!; break;;
*) echo Illegal Option;;
esac
done
3.3 makememo(选作)
#!/bin/bash
echo "makememo v1.0 by 2014010923"
MEMOFILE=$HOME/2014010923/exp3/memo
add_memo()
{
echo -n "输入要添加的日程项:"
read item
echo $item >> $MEMOFILE
sort -o $MEMOFILE $MEMOFILE
echo "日程添加以完成"
}
del_by_date()
{
echo -n "输入要删除的日程项(yyyy-mm-dd):"
read item
sed -i "/$item/d" $MEMOFILE
echo "日程删除完成"
}
del_by_num()
{
set `wc -l $MEMOFILE`
echo -n "输入要删除的日程项编号(1-$1):"
read num
sed -i "${num}d" $MEMOFILE
echo "日程删除以完成"
}
print_menu()
{
echo "***************** MENU *****************"
echo "1. 显示日程 2. 添加日程"
echo "3. 删除日程(按日期) 4. 删除日程(按序号)"
echo "5. 显示菜单 6. 查询日程"
echo "7. 退出"
echo "*****************************************"
}
chaxun()
{
echo " 请输入您所要查询日程的日期!(yyyy-mm-dd):"
read myday
if grep -q "$myday" $MEMOFILE
then
{
echo "---------------日程查询------------------"
sed -n "/$myday/p" $MEMOFILE
echo "日程查询已完成"
echo "-----------------------------------------"
}
else
{
echo "---------------日程查询------------------"
echo "$myday 没有日程!"
echo "谢谢!"
echo "-----------------------------------------"
}
fi
}
print_menu
while true
do
echo -n "输入操作选择(1-7):"
read choice
case $choice in
1) cat -n $MEMOFILE;;
2) add_memo;;
3) del_by_date;;
4) del_by_num;;
5) print_menu;;
6) chaxun;;
7) echo Bye!; break;;
*) echo Illegal Option;;
esac
done
参考文献
[1] 张玲. Linux操作系统 基础、原理与应用,北京:清华大学出版社,2014年2月。
[2] Neil Matthew, Richard Stones. Linux程序设计(第3版). 陈健等译. 北京:人民邮电出版社, 2007.
[3] Mark G. Sobell. Linux命令、编辑器与Shell编程. 杨明军等译. 北京:清华大学出版社, 2007.
[4] 。。。按以上文献规范书写
展开阅读全文
检索上Linux操作系统课程的教师名,Linux操作系统课程设计.docx相关推荐
- 教务系统对某门课程的教师评教系统的设计
#include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct _Person {int ...
- linux中动态链接库用扩展名,Linux操作系统下动态库的生成及链接方法是什么?...
Linux下动态库文件的扩展名为".so"(Shared Object).按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号).这样,线程函数库被称作l ...
- linux中 改文件后缀名,linux 下批量更改文件后缀
这几天在研究hadoop.在安装过程中需要java支持.然而在安装jdk1.6后.java不能正常运行.在经过一翻谷爹度娘的搜索后,发现要把lib/和jre/lib/下面的以pack为后缀的文件转换为 ...
- linux 下 批量添加后缀名,Linux 下批量修改后缀名
一.rename解决 1. Ubuntu系统下 rename 's/.c/.h/' ./* 把当前目录下的后缀名为.c的文件更改为.h的文件 2. CentOS5.5系统下 rename .c ...
- linux中怎么修改用户组名,Linux 下如何修改用户名(同时修改用户组名和家目录)...
有时候,由于某些原因,我们可能会需要重命名用户名.我们可以很容易地修改用户名以及对应的家目录和 UID. 本教程将会讨论这些东西.让我们先从修改用户名开始. 修改用户名 我们使用 usermod 来修 ...
- linux批量重命名后缀名,Linux 批量重命名文件的方法
SYNOPSIS rename from to file... from 表示需要替换或者处理的字符,比如文件的扩展名,文件名. to 表示对from处理之后的结果. file 表示目标文件. [[e ...
- linux怎样删除数据库实例名,linux下删除oracle数据库实例
一.中止服务sql 首先用命令 lsnrctl stop 数据库 而后运行oracle sqlplus /nolog 进程 sql> conn / as sysdbaflash sql> ...
- linux系统怎么修改网卡名,linux修改网卡名字
ifconfig发现网卡名字(eth1.eth2)与配置文件中名字(eth0.eth1)不符,修改如下 一.查看网卡名字对应的HWADDR [root@linnux ~]# ifconfig -a e ...
- linux显示文件内容行号,linux命令显示文件内容行号|linux将内容以行号显示出来...
linux命令 显示文件内容 通过命令+文件名查看内容.如下命令可以查看.1, cat :由第一行开始显示文件内容:2,tac:从最后一行开始显示,可以看出tac与cat字母顺序相反:3,nl:显示的 ...
最新文章
- GPT-2仅是“反刍”知识,真正理解语言还要改弦更张
- Zabbix监控之常用snmp-OID
- 批量域更改客户端本地administrator密码
- php7.1安装mysqli扩展,centos php7 安装mysqli扩展心得
- 磁盘性能分析一:IO负载高的判断详解
- php软件开发--yii2框架搭建及gitlib同步线上网站
- 蓝桥杯java 大纲,2019 第十届蓝桥杯Java省赛B组个人总结
- 系统在此应用程序中检测到基于堆栈的缓冲区_Linux 中的零拷贝技术
- 利用openFrameWork、ofxFaceTrack制作的虚拟眼镜加载系统
- 网站漏洞安全渗透测试公司组建方案
- Matlab分析系统的动态性能
- php00截断原理,burpsuite上传截断及截断原理介绍
- cocos2d-x 禁用触摸
- JAVA EE是什么?
- python strip()方法使用
- 【HDU】5197 DZY Loves Orzing 【FFT启发式合并】
- SharePoint Keyword Query Languge(KQL)语法
- C++ QT开发人机象棋(界面表示)
- SLAM之camera(Intel RealSense D435)调试第一弹:Win10平台下getting started
- 女神说拍了一套写真集想弄成素描画?很简单,用Python就行了!
热门文章
- paper survey(2019.06.11)——卷积网络高阶特征表示
- 聚播微信群控云控引擎二次开发SDK服务端对接接口
- 同年同月同日出生的爱情
- Python基础(二)计算
- STM32--数码管显示使用
- java中的jdk环境变量配置
- IDC报告显示,2015年中国超融合市场新华三领军
- element vue 点击一边拖拽改变宽度 解决拖动会选中文字的问题
- 云安全高等教育改革示范教材
- 【杂记】(富文本框回填值、ajax数据回填按钮年级学科、去除数组中数组外包的引号、多重循环的写法、微测评获奖页面的内容 循环拼接写法、textarea禁止拖动、html基本、透明度、页面内出现滚动条)