欢迎来到天天文库
浏览记录
ID:47336347
大小:54.50 KB
页数:5页
时间:2019-08-14
《实验二shell及shell编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二:shell及shell编程1、实验目的1)sed的使用;2)awk的应用;3)shell及shell编程;4)与用户启动相关的文件及使用。2、实现设备一台装有Windows操作系统和Linux机系统的微机或服务器。3、实验方法与注意事项1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。3)认真编写实验报告4、实验过程1)sed命令的使用:(1)将ifile文件中的所有sysman替换成
2、SystemManager并输出到ofilesed-e's/sysman/SystemManager/g'ofile(2)显示ifile文件中的所有注释行#sed-e'/^#/!d']*$/d'ofile#注:tab为tab键,可用t表示,为空格键。②也可写为:sed'/^$/d;/^[]*$/d'ofile或写为s
3、ed'/^$/d;/^[[:blank:]]*$/d'ofile或写为sed'/^$/d;/^[[:space:]]*$/d'ofile③如果脚本命令较多,也可将整个脚本内容写入文件(比如e_script)中,此时命令的执行可如下进行:sed–fe_scriptofile2)awk命令的使用(1)显示系统内root的进程,它们是什么,进程号是多少ps-ef
4、awk'/root/{print$1,$2,$8}'(2)显示系统所非root用户在干什么,他们是谁?ps-ef
5、awk'!/root/{print$1,$8}'(3)使用awk
6、计算文件infile内数字的和。awk'{sum+=$1};END{printsum}'ifile注:假设infile内容为数字串,且每个数字串占一行。(4)显示系统内已经注册(创建)的所有用户(显示/etc/passwd内的所有用户)awk-F:'{print$1}'/etc/passwd#-F:指定域分隔符为“:”3)shell编程(1)设计一个程序,带一个(目录)参数。实现功能:(1)首先判断是否带有参数,若无则显示用法信息后,报错返回;(2)带首先判断该参数是不是目录。若是则列目录的内容,否则,提示用户不是目录,则显示警告信息后报错返回。#!/bin/shif[$#
7、-ne1]#checkifhave1parameterthenecho"Usage:$0dir"#DiaplayUsageexit1#return1fiif[-d"$1"]#ifisadir;thenls$1/*;exit0#listthedir,andreturn0fiecho"Warn:$1isnotadirectory"#Warningmessageexit2#return2注:输入时可不输入注释部分。设此程序名为myls,为其增加执行权后,运行方法为:./myls#返回码为1./mylsdir#如果dir是个目录,则列其内容./mylsfile#若file是文件或不
8、存在则给出警告后返回2(2)用嵌套式if-fi语句实现(1):#!/bin/shif[$#-ne1]#checkifhave1parameterthenecho"Usage:$0dir"#DiaplayUsageexit1#return1elif[-d"$1"]#ifisadirthenls$1/*;exit0#listthedir,andreturn0elseecho"Warn:$1isnotadirectory"#Warningmessageexit2#return2fi(3)设计一个程序,从命令行接收数值参数,并计算这些参数的和。x=0foryin$*dox=`exp
9、r$x+$y`doneecho"TheSumis:$x"注:设程序名为myadd,增加执行权后,运行方法为:myadd203510060但是,本程序是有问题的,原因是它没有判断输入数据的合法性。下面是一个增加输入数据合法性检查的程序。x=0foryin$*doz=`echo$y
10、awk'/^[[:digit:]]*$/{print$0}'`if[-z$z];thenecho-e"Invalidcommandlineparameter:$ya";exit1fix=`expr$x+$y`doneecho"TheSum
此文档下载收益归作者所有