实验一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` 执行脚本。
- 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。