shell题.docx

上传人:b****3 文档编号:24728963 上传时间:2023-06-01 格式:DOCX 页数:15 大小:360.55KB
下载 相关 举报
shell题.docx_第1页
第1页 / 共15页
shell题.docx_第2页
第2页 / 共15页
shell题.docx_第3页
第3页 / 共15页
shell题.docx_第4页
第4页 / 共15页
shell题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

shell题.docx

《shell题.docx》由会员分享,可在线阅读,更多相关《shell题.docx(15页珍藏版)》请在冰豆网上搜索。

shell题.docx

shell题

实验一shell程序设计

学号

411109030105

姓名

郭璇

实验日期

2014-2-28

实验目的

1.熟悉Linux环境下的Shell命令行操作。

2.了解Shell的一般语法规则,掌握并能编写简单的Shell程序。

3.掌握基本的Shell程序调试技术。

实验内容

Part1:

shell命令行

1.ls命令多次执行的输出结果都重定向到文件ls.log保存。

(1)ls命令多次执行的输出结果都重定向到文件ls.log保存。

首先,用ls>指令重定向到ls.log,再用cat指令打开ls.log文件。

(2)题目解答的命令

root@ubuntu:

~#ls>ls.log

root@ubuntu:

~#catls.log

(3)运行结果的截图及说明

图1-1

说明:

用ls指令重定向到ls.log,再用cat指令打开ls.log文件,列出ls重定向到ls.log中的内容。

2.列出/etc目录下以字母p开头的以.conf结尾的配置文件名称。

(1)列出某一目录下的满足条件的配置文件名称。

首先,应该用find命令,然后要求在/etc/以字母p开头的以.conf结尾的文件名称,则需输入-name,p,.conf,其中p后面应加上一个‘*’,略指文件名称中省略的部分

(2)题目解答的命令

root@ubuntu:

~#find/etc/-namep*.conf

(3)运行结果的截图及说明

图1-2

说明:

在root@ubuntu:

~#之后,直接加find命令,输入要求,回车,就会出现满足命令的文件名称依次列出。

3.如何使用shell命令统计某个目录下的文件数(目录中有下级目录)?

(1)统计某个目录下的文件数(目录中有下级目录)。

以etc文件夹为例,ls–l长列表输出该目录下文件信息,grep“^-”将长列表过滤,只保留一般文件,如果只保留目录则为^d,wc-l统计输出信息的行数,一行信息对应一个文件,统计结果即为文件个数。

(2)题目解答的命令或源代码

root@ubuntu:

~#ls/etc-lr|grep"^-"|wc–l

root@ubuntu:

~#ls/etc-lr|grep"^d"|wc-l

(3)运行结果的截图及说明

图1-3

(1)

图1-3

(2)

说明:

图1-3

(1)为etc中过滤长列表的一部分后剩余的文件数目,而图1-3

(2)则为etc中总的文件个数。

4.利用shell命令统计当前目录(如/home)下的文件数。

(1)上题与本题类似,本体是统计当前目录。

(2)题目解答的命令或源代码

root@ubuntu:

~#ls/home-lr|grep"^d"|wc-l

(3)运行结果的截图及说明

图1-4

说明:

本题与上一题类似,只是将任一文件夹的名称改为当前目录。

5.利用shell命令统计你所完成的《学生成绩管理系统》代码行数。

(1)题目分析及设计方案

将学生成绩管理系统(SIMS.txt)移动到主文件夹下,用cat指令统计行数。

(2)题目解答的命令或源代码

root@ubuntu:

~#catSIMS|wc-l

(3)运行结果的截图及说明

图1-5

说明:

学生成绩管理系统不能用文件夹表示,需转换成txt格式。

6.shell中历史命令的查看:

(1)使用上下箭头翻看历史命令

①题目分析及设计方案

直接用鼠标拖动页面查看。

②运行结果的截图及说明

图1-6

(1)

说明:

用鼠标控制箭头直接上下滑动。

(2)使用history命令查看命令的历史记录列表

①题目分析及设计方案

直接输入history命令。

②题目解答的命令或源代码

root@ubuntu:

~#history

③运行结果的截图及说明

 

图1-6

(2)

图1-6(3)

说明:

图1-6

(2)为history指令输入,图1-6(3)为history指令结束。

(3)使用管道符连接history命令和more命令,实现执行结果的分页查看

①题目分析及设计方案

直接用管道符连接history和more。

②题目解答的命令或源代码

root@ubuntu:

~#history|more

③运行结果的截图及说明

图1-6(4)

图1-6(5)

说明:

图1-6(4)为指令输入,图1-6(5)为指令结束。

(4)使用管道符连接history命令和head命令,显示前5条记录。

①题目分析及设计方案

直接用管道符连接history和head,又因为显示前5条记录,则加-5。

②题目解答的命令或源代码

root@ubuntu:

~#history|head-5

③运行结果的截图及说明

图1-6(6)

说明:

输入指令后,直接显示前五条指令。

Part2:

shell脚本

1.写一个脚本,执行后,打印一行提示“Pleaseinputanumber:

",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。

直到用户输入"end"停止。

(1)题目分析及设计方案

首先,启动gedit建立一个脚本(number),然后在脚本中写入符合要求的程序(图2-1

(1)),最后在执行脚本。

(2)题目解答的命令或源代码

脚本number:

#!

/bin/bash

unsetvar

while["$var"!

="end"]

do

echo-n"pleaseinputanumber:

"

readvar

if["$var"="end"]

then

break

fi

echo"varis$var"

done

命令:

root@ubuntu:

~#geditnumber.sh

用gedit建立脚本number

root@ubuntu:

~#chmod+xnumber.sh

root@ubuntu:

~#./number.sh

先为脚本增加可执行属性,再执行脚本

(3)运行结果的截图及说明

图2-1

(1)

图2-1

(2)

说明:

首先启动gedit建立新的脚本number,然后在脚本中输入满足条件的代码,如图2-1

(1)所示,再用chomd指令为脚本增加可执行属性,最后在执行脚本。

2.编写shell脚本lish.sh,实现功能:

显示当前系统时间。

列出/etc目录下以字母p开头的以.conf结尾的配置文件名称并输出到list.txt中。

(1)题目分析及设计方案

首先,应该先建立一个脚本list.sh,在脚本中先实现显示当前系统时间和列出/etc目录下以字母p开头的一.conf结尾的配置文件名称,再将这些文件名称输出到list.txt中。

(2)题目解答的命令或源代码

List.sh中的源代码:

te|teelist.txt

find/etc/-nameP*.conf|tee-alist.txt

root@ubuntu:

~#geditlist.sh

建立脚本list.sh

root@ubuntu:

~#chmod+xlist.sh

root@ubuntu:

~#./list.sh

增加脚本可执行属性,执行脚本

(3)运行结果的截图及说明

图2-2

(1)

图2-2

(2)

说明:

首先建立脚本list.sh,在脚本中写入满足条件的程序(图2-2

(1)),在增加脚本的可执行属性(chmod+xlist.sh),最后运行脚本,显示满足条的内容(时间和目录)。

3.编写shell脚本cf.sh,实现功能:

统计某个目录下的文件数(目录中有下级目录)。

(1)题目分析及设计方案

首先,建立脚本cf.sh,在脚本中写入统计某个目录下的文件数的指令,然后执行脚本。

(2)题目解答的命令或源代码

脚本cf.sh:

#!

/bin/bash

ls-l|grep"^-"|wc–l

root@ubuntu:

~#geditcf.sh

建立脚本cf.sh

root@ubuntu:

~#chmod+xcf.sh

root@ubuntu:

~#./cf.sh

增加脚本的可执行属性,执行脚本

(3)运行结果的截图及说明

图2-3

(1)

图2-3

(2)

说明:

建立脚本cf.sh,在脚本红输入满足条件的指令,如图2-3

(1),增加脚本的可执行属性(chmod+xcf.sh),执行脚本,输出目录下的文件个数。

4.写一个脚本:

①创建目录/user/script

②切换工作目录至此目录中

③查找/etc/pam.d

④复制/etc/pam.d目录至当前目录,并重命名为tt

⑤将当前目录的tt及里面的文件和子目录的权限改为可读、可写、可执行。

(1)题目分析及设计方案

首先建立脚本(jj.sh),输入符合要求的代码(创建路径,切换目录,查找,复制目录并重命名,更改权限),再运行脚本。

(2)题目解答的命令或源代码

jj.sj源代码:

#!

/bin/bash

mkdiruser

cduser

mkdirscript

find/etc/pam.d

cp-r/etc/pam.d./tt

find./tt-typef-execchmod777{}\;

find./tt-typef-execchmod777{}\;

root@ubuntu:

~#geditjj.sh

创建脚本jj.sh

root@ubuntu:

~#chmod+xjj.sh

root@ubuntu:

~#./jj.sh

增加执行权限,运行程序。

(3)运行结果的截图及说明

图2-4

(1)

图2-4

(2)

图2-4(3)

说明:

建立脚本jj.sh,输入满足该题目条件的代码图2-4

(1),运行后,显示的目录图2-4(3)属于重命名后tt内的目录图2-4

(2),图2-4

(1)中‘777’是权限全部包含的意思。

5.编写一个shell脚本,完成如下任务:

要求采用交互式的方式,使用菜单界面,能够从键盘中获得一组数值,要求功能完善,操作方便。

①输入命令add,则可以添加一个新数值;

②输入命令avg,则可以计算所有值的平均数;

③输入命令max,则可以找到数值中的最大值;

④输入命令min,则可以找到数值中的最小值;

⑤输入命令show,则可以查看当前所有输入的数值;

⑥输入命令exit,则退出。

(1)题目分析及设计方案

首先,建立脚本cc.sh,然后再脚本中输入相应代码,主要是几个指令的源代码运行及设置,主题运用的结构是ifelsif格式。

(2)题目解答的命令或源代码

root@ubuntu:

~#geditcc.sh

root@ubuntu:

~#chmod+xcc.sh

root@ubuntu:

~#./cc.sh

(3)运行结果的截图及说明

图2-5

(1)

图2-5

(2)

图2-5(3)

说明:

首先建立脚本cc.sh图2-5

(1),由脚本中的程序运行图2-5

(2),执行程序,得到结果图2-5(3)。

在实验过程中遇到的问题及自己的解决方案和心得。

在本次试验中,主要出现的问题有:

第一大部分中,由于是第一次接触Linux,很多具体指令还没有掌握,所以第一部分查了很多资料,具体是指令的细节应用;第二大部分,难度上增加了许多,像有的指令根本不知道如何应用,或者是根本不知道,只能查找相关的例题,在自己分析,例如,计算行数的时候,刚开始我本来打算用find,结果不行,最后还是用cat解决的,还有查了资料我才知道“777”代表了全部权限都能实行。

总之,这次实验有了很大的收获,尤其是各种指令的应用方面。

参考资料:

UNIX/Linux程序设计实践教程

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1