实验一Shell程序设计已完成
四川大学 操作系统原理 第一次试验报告 Shell
实验报告(学生打印后提交)实验名称:Shell实验时间:年月日实验人员:___ __(姓名)____(学号)_______(年级)实验目的: 1.掌握基本的Shell命令/控制台命令及理解其作用和应用方法。
2. 了解实验平台。
实验环境: linux实验步骤: 1. 用帐户toni登录2. 运行ls、cd、man ls、man cat、who,which命令3. 用gcc命令编译包含system(“ls”)函数的C/C++程序并观察并与直接使用ls命令进行对比实验陈述:1、写出下列运行指令的结果ls: tiger 公共的模板视频图片文档下载音乐桌面man ls: LS(1) User Commands LS(1)NAMEls - list directory contentsSYNOPSISls [OPTION]... [FILE]...DESCRIPTIONList information about the FILEs (the current directory by default) Sort entries alphabetically if none of -cftuvSUX nor –sort.Mandatory arguments to long options are mandatory for short optionstoo.............who: toni@toni-laptop:~$ whotoni tty7 2010-04-20 22:47 (:0)toni pts/0 2010-04-20 23:00 (:0.0)which ls: toni@toni -laptop:~$ which ls/bin/ls2、编译程序并执行 程序: sys.c(保存在目录/root/tiger下) #include < stdlib.h >int main(){system( "ls" );return 0;}✧命令:cd /root/tiger gcc sys.c./a.out✧运行结果toni@toni-laptop:~$ cd /home/toni/tigertoni@toni-laptop:~/tiger$ gcc sys.ctoni@toni-laptop:~/tiger$ ./a.outa.out sys.ctoni@toni-laptop:~/tiger$ lsa.out sys.c实验总结:1. 学会登入linux的方法2.了解到Linux一些常用的命令:ls:用于显示列出目录内容 cd:用于切换目录man ls:查看ls的用法 man cat:查看cat的用法,提供解释who:显示目前登入系统的用户信息which:查找文件3.学会用vi编辑器编辑程序,并且使用gcc编译的方法,观察到直接使用ls命令可以直接看到结果,而使用system(“ls”)时结果被保存在一个叫做a.out的文件中。
Shell编程实验报告.doc
Shell编程实验报告【实验目的】1、了解和熟悉创建并使用脚本的步骤。
2、熟悉bash的控制结构。
3、学会简单的shell编程。
【实验内容】1、创建一个简单的列目录和日期的shell脚本并运行之。
步骤:⑴输入下列命令,创建一个新文件:cat>new_script⑵输入下列行:echo“Yourfilesare”lsecho“todayis”date按回车键将光标移到一个新行,按Ctrl+D键保存并退出。
⑶检查文件内容,确保它是正确的:catnew_script⑷运行脚本,输入它的文件名:new_script该脚本不运行。
⑸输入下列命令,显示文件的权限:ls–lnew_script权限表明该文件不是可执行。
要通过简单调用文件名来运行脚本,必须有权限。
⑹输入下列命令,使new_script变成可执行文件。
chmod+xnew_script⑺要查看新的权限,输入:ls–l现在拥有文件的读、写和执行权限。
⑻输入新脚本的名字以执行它:new_script所有输入到文件的命令都执行,并输出到屏幕上。
⑼如果接收到错误信息,比如:commandnotfound输入下列命令:./new_script该命令行通知shell到哪里寻找shell脚本new_script,即您的当前目录“.”。
程序运行过程如下:2、用Shell语言编制一Shell程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。
程序运行过程如下:3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“Endofprogram”,如果不同则显示“Endofprogram”。
程序运行过程如下:4、修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同显示“Match”,不同则显示“Notmatch”,最后显示“Endofprogram”。
请使用if…then…else控制结构。
操作系统原理实验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)。
三、实验内容与步骤
主要代码
解析并执行指令
输出各进程的信息
四、实验结果与数据处理
五、分析与讨论
六、教师评语
成绩
签名:
日期:。
shell系统实验报告
shell系统实验报告《Shell系统实验报告》摘要:本实验通过对shell系统的学习和实践,对shell脚本编程进行了深入的研究和探讨。
通过实验,我们深入了解了shell系统的基本概念、语法和功能,并通过实际编程实践加深了对shell脚本的理解和掌握。
本实验报告将对实验过程、实验结果和实验感想进行详细的介绍和分析。
一、实验目的通过本次实验,我们的主要目的是深入了解shell系统的基本概念和语法,掌握shell脚本编程的基本方法和技巧,提高对Linux系统的操作和管理能力。
二、实验过程1. 学习shell系统的基本概念和语法规则;2. 编写简单的shell脚本,包括文件操作、流程控制、函数定义等;3. 运行和调试编写的shell脚本,检验脚本的正确性和可靠性;4. 分析实验结果,总结实验感想。
三、实验结果通过本次实验,我们深入了解了shell系统的基本概念和语法规则,掌握了shell 脚本编程的基本方法和技巧。
我们成功编写了一些简单的shell脚本,包括文件操作、流程控制、函数定义等,通过运行和调试这些脚本,我们验证了它们的正确性和可靠性。
实验结果表明,我们对shell系统有了更深入的认识和理解,对Linux系统的操作和管理能力得到了提高。
四、实验感想通过本次实验,我们对shell系统有了更深入的认识和理解,对Linux系统的操作和管理能力得到了提高。
我们深刻体会到了shell脚本编程的重要性和实用性,相信在今后的工作和学习中,我们会更加熟练地运用shell系统,提高工作效率和解决实际问题。
同时,我们也意识到了自己在shell系统方面的不足之处,今后需要进一步学习和实践,不断提高自己的技能水平。
综上所述,本次实验对我们的学习和成长都具有重要意义,我们将继续努力学习和提高自己,在shell系统和Linux系统方面取得更大的进步和成就。
shell命令解释器实验报告
实验报告实验名称:实现一个shell命令解释器学员:学号:年级:专业:所属学院:计算机学院指导教员:职称:实验室:实验日期:目录1.功能描述 (3)2.主要数据结构 (3)3.主要程序流程图 (4)4.主要功能实现方法和系统调用 (4)4.1初始化环境 (4)4.2打印提示符,获取用户输入 (5)4.3解析命令 (5)4.4执行命令 (5)4.4.1内部命令 (5)4.4.2外部命令 (5)4.4.3重定向功能 (6)4.4.4管道功能 (6)5.测试结果 (7)6.心得体会 (10)1.功能描述本实验完成了一个shell命令解释器,实现了shell的解释命令功能,实现了内部命令(包括自定义命令)、外部命令、重定向功能和多管道等功能。
具体功能描述如下:1)内部命令:●可以使用常用的如cd、echo、history、exit等命令●自定义命令1)smile命令:打印出笑脸2)myinfo命令:打印出作者信息和版本信息2)外部命令:可实现cp、rm等所有外部命令。
3)重定向:通过输入重定向符号’<’ 或输出重定向’>’ ,把一行命令分成两部分,前者为需要执行的命令,后者为一个重定向文件。
输入重定向是把文件内容作为输入传到前面的命令中,而输出重定向则是把命令的结果传入重定向文件中。
4)管道:通过管道符号’|’ 把一条命令分成两部分,前一部分命令运行后,将结果放入管道,后一部分命令从管道中取出该结果,作为输入继续执行。
最多可以实现10个管道。
2.主要数据结构本程序主要使用字符数组进行命令、路径的存储与分析。
3.主要程序流程图命令的分析执行过程包括:初始化环境,打印提示符,获取用户输入命令,解析命令,寻找命令文件和执行命令,如图1。
图1程序设计流程图4.主要功能实现方法和系统调用下面将详细说明本shell解释器的实现原理和所用到的系统调用。
总结起来用到的系统调用主要有:Open();close();dup();pipe();execv();chdir();getcwd();如何使用这些系统调用实现shell的各项功能,下面将详细说明。
操作系统-shell程序设计
then
echo "Sorry,$DIRECTORY is not a directory!"
exit 1
fi
cd $DIRECTORY
}
clear
ANS=Y
while [ $ANS = Y -o $ANS = y ]
do
echo "==========================="
echo "####################################"
echo "# 1:ADD A RECORD #"
echo "# 2:SEARCH RECORD #"
echo "# 3:DELETE A RECORD #"
echo "# 4:SHOW ALL RECORD #"
4) display;;
Q|q) quit;;
*) echo "Invalid Choice!";
sleep 2;
clear;;
esac
done
七、实验结果
任务一
解压:
任务三
添加功能
查询功能
未找到姓名时有
删除功能
删除不存在的数据时有:
删除成功:
显示所有数据:
八、实验总结
通过这个试验,我初步了解了shell的编程特点,也基本掌握了shell程序设计的一些基础性的知识,同时对shell程序的运行方式以及程序控制流程有了进一步的认识,基本掌握了shell程序的编写方法以及一些使用技巧
if [ ! -f ./record ] ; then
《Linux系统管理》Shell程序设计实验报告
《Linux系统管理》Shell程序设计实验报告(3)编写一个shell脚本,利用位置参数携带一个文件名,判断该文件在当前目录下是否存在且是一个普通文件。
(4)编写一个shell脚本,输入10-30之间的一个数,并判断它是否小于25。
(5)利用case条件语句编写一个shell脚本,提示用户输入一个字符,判断该字符是字母、数字或特殊字符。
(6)编写一个shell脚本,根据键盘可以循环输入学生成绩(百分制),并显示对应的成绩标准(及格和不及格),按“q”键退出,按其他键提示重新输入。
(7)编写一个shell脚本,利用for循环把当前目录下的所有指定的文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
编写shell脚本,第一个位置参数为指定的目录,其后指定的位置参数为第一个位置参数指定目录下的文件,显示这些文件的内容。
(8)编写一个shell脚本,完成课本P189页第9题。
(9)编写一个shell脚本,完成课本P189页第10题。
三、实验过程:1.创建简单shell脚本(1)2.shell的输入输出重定向(1)(2)(3)(4)(5)(6)3.用shell语言编制shell程序(1)4.shell变量操作(1)(2)(3)(4)(5)(6)(7)5.shell程序控制结构(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)四、实验总结:(实验中遇到的问题及解决方法,心得体会等)本次实验了解和创建并使用脚本的步骤掌握shell的变量及特殊字符掌握shell的输入输出命令掌握常用shell程序逻辑结构语句。
会创建一个简单的列出目录和日期,会用shell语言编制shell 程序,掌握了一些复杂的命令。
通过这节课实验发现对于shell变量的类型使用,以及相关用户下的具体操作不够明确,Shell是Linux系统中的用户与系统交互的接口,可编程、作为命令解释器;Shell脚本的建立同普通文本文件建立相同,利用vi活cat命令进行操作;且shell变量有环境变量和用户自定义变量。
linux shell 实验报告
linux shell 实验报告Linux Shell 实验报告一、引言Linux Shell 是一种命令行解释器,它允许用户与操作系统进行交互。
作为一个开源的操作系统,Linux 提供了多种 Shell,如 Bash、Zsh、Ksh 等,每种 Shell 都有其特点和用途。
本实验旨在通过实际操作,深入了解 Linux Shell 的使用和功能。
二、实验目的1. 熟悉 Linux Shell 的基本概念和操作;2. 掌握 Shell 的常用命令和参数;3. 理解 Shell 脚本的编写和执行过程。
三、实验环境本次实验使用的实验环境为 Ubuntu 20.04 LTS 操作系统,使用默认的 Bash Shell。
四、实验内容1. Shell 基本操作在 Linux 系统中,打开终端即可进入 Shell 环境。
Shell 提供了丰富的命令用于文件操作、系统管理等。
以下是一些常用的 Shell 命令示例:- ls:列出当前目录下的文件和子目录;- cd:切换当前工作目录;- mkdir:创建新目录;- rm:删除文件或目录;- cp:复制文件或目录;- mv:移动文件或目录。
2. Shell 变量和环境变量Shell 变量用于存储数据,可以通过赋值和引用来操作变量。
环境变量是一种特殊的 Shell 变量,用于存储系统环境的信息。
以下是一些常用的变量和环境变量示例:- 变量赋值:name="John";- 变量引用:echo $name;- 环境变量:$HOME、$PATH、$USER。
3. Shell 脚本编写与执行Shell 脚本是一种批处理文件,由一系列命令组成,可以实现自动化操作。
以下是一个简单的 Shell 脚本示例:```shell#!/bin/bashname="John"echo "Hello, $name!"```将上述脚本保存为 `hello.sh`,通过 `chmod +x hello.sh` 命令给予执行权限,然后通过 `./hello.sh` 执行脚本。
实验一shell实验报告
实验1: SHELL编程实验目的熟悉linux常用命令,为以后的实验打下良好基础;熟悉vi编辑器的使用;了解Shell程序的语法规则,能编写简单的Shell程序。
实验内容1、使用常用的Linux命令,主要包括如下命令:date, mail, write, man, ls, cat, mv, grep, tail, head, cp, wc, pwd, who等;2、使用vi编辑器编辑文件,熟悉vi编辑器的各种操作模式和常用命令。
3、使用vi编辑器编写一段Shell程序,取名为mycal,实现与Linux中cal命令类似的功能,当输入:$mycal [月份名] 年时,屏幕输出指定的年月的月历。
例如:$mycal October 2009屏幕输出2009年10月的月历。
注:参数可以是英文或者是数字。
实验结果1、2、3、实验2:观察Linux的行为实验目的了解Linux proc文件系统;加深对Linux系统的理解;增强Linux系统管理知识。
实验内容在Linux中,proc文件系统提供了一套在用户态检查内核状态和系统特征的机制。
proc文件系统将进程的地址空间、系统的硬件信息、系统相关机制(中断、I/O)等内容全部设置为虚拟的Linux文件,为访问系统内核数据的操作提供接口。
1、以root登录系统,并进入/proc目录,键入ls命令,查看/proc下的内容,同时查看每个文件的读写权限。
2、根据/proc下的信息,回答:CPU的类型和型号、当前Linux版本、从启动到当前时刻所经过的时间、当前内存状态。
实验结果1、2、Cpu类型和型号:当前linux版本:启动时间:内存情况:。
LINUX_shell程序编程实验报告
LINUX 实验报告专业:班级:学号:姓名:报告时间:实验一 Shell编程一.实验名称:考勤模拟shell程序设计二.实验目的:理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。
三.实验内容:考勤模拟Shell程序设计用shell设计一个模拟考勤程序,实现如下功能选择界面:1:上班签到2:下班签出3:缺勤信息查阅考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。
用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。
四.实验要求:1、掌握Shell程序的编辑、运行、调试方法2、完成实验内容要求是现的功能3、撰写实验报告五.试验运行代码:6、试验运行结果:六.实验心得学到了一些有关linux 的知识,还亲自参加了linux的安装party, 这些都让我对产生了了解和掌握linux的愿望。
在这方面,我只是个初学者,我希望跟我一样抱着学习linux 的心态但不知如何学习这方面技术而感到无从下手的初学者在看了这篇文章后,能够找到深入了解linux 的方向和办法。
以下就是学习linux的一个循序渐进的过程一.起步你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux 开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
shell实验报告
操作系统实验报告(shell命令解释器)目录1功能描述 (2)2主要数据结构 (2)3主要自定义函数功能及接口说明 (3)4主要功能实现方法和系统调用 (4)4.1重定向功能 (4)4.2多管道功能 (4)4.3命令的后台运行 (5)4.4历史命令 (6)4.5CD命令 (6)4.6其他简单命令 (6)4.7其他自定义命令 (6)5心得体会 (6)6源代码 (7)1功能描述(用红色标示的字体显示了本解释器完成的基本功能)本实验完成了一个shell命令解释器,实现了shell的解释命令功能,实现了重定向功能和多管道、后台运行等功能。
具体功能描述如下:1)解释器的命令格式为cmd1[<infileName][|cmd2][|cmd3]…[|cmdn][>or>>outfileName][&]2)cmdi为命令名+参数形式的命令,<为输入重定向,后跟输入重定向文件名infileName;>或>>后跟输出重定向文件名,输出内容将写入outfileName,>>表示以追加方式写入文件,>则表示以覆盖方式写入;3)实现了多管道4)命令结尾可加后台运行符号& ,表示此命令将以后台运行的方式执行5)实现了cd命令6)exit为退出命令7)history为历史命令,可以显示最近执行的命令,最多100条8)!i为执行历史命令,意为执行第i条历史命令。
!!为执行上一条命令。
9)’|’为管道符号,使用|符号隔开的若干条命令之间,前一条命令的输出是后一条命令的输入。
10)自定义命令myname,将输出此Shell的版本信息11)本解释器命令格式中的简单命令可为所有外部命令和一部分内部命令和自定义命令2主要数据结构本shell解释器实现手法上非常直观易懂,没有用到复杂的数据结构。
运行过程中大部分数据采用字符数组的形式存储。
其中定义了命令结构类型cmd,用以表示一条简单命令。
关于shell的实验报告
操作系统课程设计报告学院:计算机科学与工程学院班级: *****************学生姓名: ***************** 学号: *****************指导老师:提交日期:一、课程设计目的本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。
二、课程设计要求设计一设计任务:模拟Linux文件系统在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux 文件系统。
1.在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。
2.编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求:(1)盘块大小1k(2)空闲盘块的管理:Linux位图法(3)结构:超级块, i结点区, 根目录区3.该simdisk管理程序的功能要求如下:(1)info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。
目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。
(2)cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。
(3)dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。
(4)md …: 创建目录:在指定路径或当前路径下创建指定目录。
重名时给出错信息。
(5)rd …: 删除目录:删除指定目录下所有文件和子目录。
要删目录不空时,要给出提示是否要删除。
(6)newfile …: 建立文件。
(7)cat …: 打开文件。
(8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为<host>…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令:simdisk copy <host>D:\data\sample\test.txt /test/data或者:simdisk copy <host>D:sample\test.txt /test/data(9)del …: 删除文件:删除指定文件,不存在时给出出错信息。
操作系统实验报告_shell
k = 0;
j = 0;
}
if(j == 0){
continue;
} else{
buf[j++] = '\0';
if(flag == 0){
argv[li_cmd][k] = (char *)malloc(sizeof(char) * j);
strcpy(argv[li_cmd][k],buf);
int is_founded(char * cmd)
{
int k = 0;
while(envpath[k] != NULL){ strcpy(buf,envpath[k]);
strcat(buf,cmd);
if(access(buf,F_OK) == 0){ return 1;
} k++;
}
return 0;
if((input[i] == ' ') || (input[i] == '\t') || (input[i] == '\0') ||
(input[i] == '|') || (input[i] == '>') || (input[i] == '\n')){
if((input[i] == '|') || (input[i] == '>')){
while(s[i] != '\0'){ if(s[i] == ':') {
buff[j++] = '/';
buff[j] = '\0';
指导书_实验指导书:实验一实现简单的Shell
在一个计算机系统中,CPU 可以交替执行多个程序。尽管 CPU 一直在运行,但就 某个正在执行的程序而言,它并不是一直占用 CPU:可能因为超时让出 CPU,也可能因 为等待 I/O 事件让出 CPU。于是就有了图 2 所示的进程(执行中的程序)的状态模型。 这里执行状态是指进程占用 CPU 的状态,就绪状态是指因为时间超时而让出 CPU 的状 态,阻塞状态是指因为等待 I/O 事件而让出 CPU 的状态。
7 实验设计及操作步骤 1、创建目录,目录名字为“exp1” 2、进入刚创建的目录 3、使用 vi 编辑文件,文件名为 myshellv1.c 4、编写程序,实现一个简单 Shell 功能:能够接收用户输入的命令并正确执行该命
令,输入的命令可以带参数,如果输入“exit”或“logout”时退出 Shell,如果输入的命 令不存在则提示错误。
*envp[]); int execve (const char *path, char *const *argv, char *const *envp); int execlp (const char *file, const char *arg0, ..., const char*argn, (char *)0); int execvp (const char *file, char *const *argv); 说明:参数 path 指出一个可执行目标文件的路径名;参数 file 指出可执行目标文件 的文件名。arg0 作为约定同 path 一样指出目标文件的路径名;参数 arg1 到 argn 分别是 该目标文件执行时所带的命令行参数;参数 argv 是一个字符串指针数组,由它指出该目 标程序使用的命令行参数表,按约定第一个字符指针指向与 path 或 file 相同的字符串; 最后一个指针指向一个空字符串,其余的指向该程序执行时所带的命令行参数;参数 envp 同 argv 一样也是一个字符指针数组,由它指出该目标程序执行时的进程环境,它也 以一个空指针结束。 exec 的六种格式在以下三点上有所不同: path 是一个目标文件的完整路径名,而 file 是目标文件名,它是可以通过环境变
linux编程SHELL编程实验报告
Linux编程课程设计报告题目: Linux Shell编程专业学号姓名指导教师日期题目:Linux Shell编程一、设计目的和任务实验目的:1.熟悉Shell环境和Shell的执行2.熟悉Shell的基本语法和语句3.了解Shell程序的调试方法实验内容:1.编写Shell程序2.调试和执行Shell程序二、设计原理Linux是一种开放源码、能够免费使用及自由传播的类似于UNIX操作系统。
它可运行于各种平台之上。
因为它不但具有UNIX系统的良好性能(如稳定性、安全性),同由于其具有开源和免费的特点,也越来越广泛地应用于各种嵌入式系统中。
Shell是用户和Linux操作系统内核程序间的一个借口。
Shell既是命令解释器,有事一种编程语言。
作为命令解释器,Shell为用户使用Linux操作系统提供丰富的工具界面。
若用户输入命令,Shell负责解释执行该命令并向用户返回结果。
作为编程语言,它利用自身的语言结构将工具命令组合起来提供更复杂的功能。
三、实验环境和总体设计一台2.安装虚拟机版的Linux操作系统四、详细设计步骤1.打开vmware软件,启动Linux系统2.用root用户名和密码登入系统中3.将某目录下面所有的文件名后面加上所有者的名字,如的所有者为owner,修改后为a[owner].txt文件。
基本要求:①使用方法为usage:程序名称目录名称若没有“目录名称”参数,则修改当前目录下文件名称②对目录中的子目录不做变化。
③ 给出实验结果。
五、结果测试与分析1. 进入root模式创建2618文件夹和文件2.编写shell程序3.执行shell程序,遇到权限问题,修改权限,并列出目录下所有文件4.修改权限后再次执行shell程序成功六、存在的问题编写程序时路径出现错误,导致找不到该文件修改前:修改后七、总结。
Shell编程实验报告
S h e l l编程实验报告 Prepared on 22 November 2020南京信息工程大学实验(实习)报告【实验目的】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该命令行通知shell到哪里寻找shell脚本new_script,即您的当前目录“.”。
程序运行过程如下:2、用Shell 语言编制一Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。
程序运行过程如下:3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“End of program”,如果不同则显示“End of program”。
程序运行过程如下:4、修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同显示“Match”,不同则显示“Not match”,最后显示“End of program”。
shell实验报告
操作系统实验报告(shell命令解释器)目录1功能描述 (2)2主要数据结构 (2)3主要自定义函数功能及接口说明 (3)4主要功能实现方法和系统调用 (4)4.1重定向功能 (4)4.2多管道功能 (4)4.3命令的后台运行 (5)4.4历史命令 (6)4.5CD命令 (6)4.6其他简单命令 (6)4.7其他自定义命令 (6)5心得体会 (6)6源代码 (7)1功能描述(用红色标示的字体显示了本解释器完成的基本功能)本实验完成了一个shell命令解释器,实现了shell的解释命令功能,实现了重定向功能和多管道、后台运行等功能。
具体功能描述如下:1)解释器的命令格式为cmd1[<infileName][|cmd2][|cmd3]…[|cmdn][>or>>outfileName][&]2)cmdi为命令名+参数形式的命令,<为输入重定向,后跟输入重定向文件名infileName;>或>>后跟输出重定向文件名,输出内容将写入outfileName,>>表示以追加方式写入文件,>则表示以覆盖方式写入;3)实现了多管道4)命令结尾可加后台运行符号& ,表示此命令将以后台运行的方式执行5)实现了cd命令6)exit为退出命令7)history为历史命令,可以显示最近执行的命令,最多100条8)!i为执行历史命令,意为执行第i条历史命令。
!!为执行上一条命令。
9)’|’为管道符号,使用|符号隔开的若干条命令之间,前一条命令的输出是后一条命令的输入。
10)自定义命令myname,将输出此Shell的版本信息11)本解释器命令格式中的简单命令可为所有外部命令和一部分内部命令和自定义命令2主要数据结构本shell解释器实现手法上非常直观易懂,没有用到复杂的数据结构。
运行过程中大部分数据采用字符数组的形式存储。
其中定义了命令结构类型cmd,用以表示一条简单命令。
Linux上Shell程序设计实验报告
深圳大学实验报告课程名称:Linux操作系统实验项目名称:Linux上shell程序设计学院:计算机与软件学院专业:软件工程指导教师:冯禹洪报告人:文成学号:2011150259 班级: 2 实验时间:2013-10-08实验报告提交时间:2013-10-30教务处制一、实验目标:1. 熟悉vi编辑器的使用2. 掌握简单的Shell编程2.1. 掌握Shell变量的使用2.2. 掌握Shell表达式的使用2.3. 掌握Shell流程控制语句的使用3. 熟悉Shell程序的执行和跟踪二、实验环境与工件湖边Linux实验室Fedora 13三、实验内容与步骤1. 下面哪个命令会实现将变量V AR1和V AR2相加,并且值存入变量V AR3的功能?( D )(5分)[ $V AR3 = $V AR1 + $V AR2 ]$V AR3 = [ $V AR1 + $V AR2 ]$V AR3 = (( V AR1 + V AR2 ))(( V AR3 = V AR1 + V AR2 ))2. 以下程序的输出是?( D )(5分)#!/usr/bin/shA=1while [ $A -lt 10 ]doB=1while [ $B -lt 10 ]dobreak 2echo "Inner loop"doneecho "Outer loop"doneA.“Inner l oop” 将被打印10次B.“Outer l oop” 将被打印10次.C.“Outer l oop” 将被打印10次.D.什么都没有被打印.3. 请在vi中逐一编辑,修正(如果有误)并执行以下10个shell脚本程序,然后结合所学知识和程序的输出理解各程序中各语句的含义,对各小题附上结果截图。
(每小题5分)3.1. 编写一个简单的回显用户名的shell程序。
#!/bin/bash#filename:dateecho "Mr.$USER,Today is:"echo 'date'echo Whish you a lucky day!3.2.使用if-then语句创建简单的shell程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shell程序设计
一、实验目的
1、了解和熟悉创建并使用脚本的步骤。
2、熟悉bash的控制结构。
3、学会简单的shell编程。
二、实验内容
1、创建一个简单的列目录和日期的shell 脚本并运行之。
2、用Shell 语言编制Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。
3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“End of program”,如果不同则显示“End of program”。
4、编程使用case 结构创建一个简单的菜单,屏幕显示菜单:
a. Current date and time
b. User currently logged in
c. Name of the working directory
d. Contents of the working directory
Enter a,b,c or d:
三、实验步骤
1、创建一个简单的列目录和日期的shell脚本并运行之。
步骤:
键入下列命令,创建一个新文件:
(1)cat >new_script
(2)输入下列行:
echo Your files are
ls
echo today is
date
按回车键将光标移到一个新行,按ctrl + D 键保存并退出。
(3)检查文件内容,确保它是正确的:
#cat new_script
(4)运行脚本,输入它的文件名:
#new_script
该脚本不运行。
(5)输入下列命令,显示文件的权限:
#ls -l new_script
权限表明该文件不是可执行。
要通过简单调用文件名来运行脚本,必须有权限。
(6)输入下列命令,使new_script变成可执行文件。
chmod +x new_script
(7)要查看新的权限,输入:
ls-l
现在拥有文件的读、写和执行权限。
(8)输入新脚本的名字以执行它:
new_script
所有输入到文件的命令都执行,并输出到屏幕上。
(9)如果接收到错误信息,比如:
command not found
输入下列命令:
# ./new_script
该命令行通知shell到哪里寻找shell脚本new_script,即您的当前目录” . ”。
2、用Shell 语言编制Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。
cat>times
echo “please input the month:”
read month
echo “please input the year:”
read year
cal $month $year
3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词。
如果两个单词相同示“Match”。
并显示“End of program”。
如果不同则显示“End of program”。
提示:echo -n 是显示内容,但不回车换行。
$ cat>if1
echo -n “word 1:”
read word1
echo -n “word2:”
read word2
if test “$word1” = “$word2”
then
echo “Match”
fi
echo “End of program.”
①if,then 控制结构的语法是:
if test_command
then
commands
fi
②其中test_command 为test “$word1” = “$word2”,test是一个内置命令,如果它的第一个参数和第三个参数存在第二个参数所指定的关系,那么test将返回ture。
Shell将执行then和fi之间的命令。
否则执行fi后面的语句。
4、编程使用case 结构创建一个简单的菜单,屏幕显示菜单:
a. Current date and time
b. User currently logged in
c. Name of the working directory
d. Contents of the working directory
Enter a,b,c or d:
<参考程序>
echo -e “\n COMMAND MENU \n’
echo ”a,Current date and time”
echo “er currently logged in”
echo “ of the working directory”
echo “d.Contents of the working dirctory\n”
echo -n “Enter a,b,c or d:”
read answer
echo
case “$answer” in
a)date;;
b)who;;
c)pwd;;
d)ls
*)
echo “There is no selection :$answer”;;
esac
四、实验总结
通过这次试验,我了解了常用shell的编程特点以及shell程序设计的基础知识。
认识并且理解了shell程序流程控制、shell程序的运行方式、shell程序的调试方法
通过仔细做这次试验,对于shell的编程方法和技巧的知识有了进步,在看出一些眉目,学会了shell编程的一些小知识之后感觉还是挺有意思的。
通过几周的实习,我基本上掌握了shell的编程,了解和熟悉创建并使用脚本的步骤;熟悉bash的控制结构;学会简单的shell编程;能够通过编程实现一些功能,学会了Shell的一些控制语句,测试,Shell变量,Shell的特殊字符等。
初步学会了Linux下Shell的编程,为以后更加系统的学习Linux打下了坚实的基础!
参考网址:-70472.html
/65164b8ea0116c175f0e48d5.html。