linux系统程序PPT,linux操作系统及程序设计3.ppt

62e50291a81fc54b507f33cb80033297.gif linux操作系统及程序设计3.ppt

(63页)

1dfca987e818e2b4fa05b953e6156aca.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

23.9 积分

第三讲Linux shell程序设计 掌握Linux系统下shell程序设计的基本方法,能够完成基本的shell脚本的编写。UNIX/Linux系统编辑器 任何一个操作系统为完成文本文件、数据库文件、源程序的编写和建立,都会给用户提供一种或多种程序编辑工具。UNIX可以支持运行多种编辑工具,其中有些编辑器的功能简单、界面简陋,有些功能强大、界面友好。常见的有: ◎ed早期UNIX系统中的行编辑器。 ◎ex是ed的替代产品,也是行编辑器。 ◎edit 是ex的简化版本。 ◎vi是全屏幕编辑器,是在ex上发展改进而来的编辑工具。 ◎emacs文本编辑环境,现代UNIX/Linux系统中配置的功能强大的编辑工具。 ◎xemacs是可视化的编辑工具,具有图形用户界面 正则表达式 ed编辑器内部有一些特殊含义的字符。在ed中规定,当有些字符出现在搜索模式中或s命令的左边时,具有特定的含义。这些有特定含义的字符称之为“元字符”。而使用元字符进行匹配的模式称为“正则表达式(Regular Expressions)”。正则表达式是一种说明查找匹配模式的语法 正则表达式正则表达式中元字符的含义 C 任何非特殊字符c都与自身匹配 \c 关闭字符c的特殊含义 ^ 当模式以^开始时,匹配行首 $ 当模式以$结束时,匹配行尾 · 匹配任何单个字符 [...] 匹配…中的任何一个字符,像a-z这样的字符范围是合法的 [^...]匹配不在…中的任何一个字符,像a-z这样的字符 范围是合法的 r* 匹配0个或多个r,其中r为一个字符、.或[...] & 只在s的右边出现,代表匹配的模式\(...\) 标记正则表达式。匹配的字符串可在其左右两边 如\1等等 正则表达式正则表达式匹配模式/^$/ 空行,即只有换行/./ 非空行,即至少包含一个字符/^/ 所有行 ; /thing/ 包含thing的行/^thing/ 行首为thing的行;/thing$/ 行尾为thing的行/^thing$/ 只包含thing的行/thing.$/ 行尾为thing加上任意一个字符/thing\.$/ 行尾为thing./\/thing\// 包含/thing/的行/[tT]hing/ 包含Thing或由thing的行/thing[0-9]/ 包含thing后跟一个数字的行/thing[.^0-9]/ 包含thing后跟一个非数字的行/thing[0-9][^0-9]/ 包含thing跟一个数字及一个非数字的行/thing 1.*thing2/ thing 1后为任意字符申,然后为thing2的行/^thingl. *thing2$/ 行首为thing 1,行尾为thing2的行 正则表达式正则表达式匹配模式s/正则表达式/新表达式/把任何与正则表达式匹配的内容替换成新表达式 例:$grep “[A-Z]*” chap[12] 在chap1或chap2中查找大写字母打头的文件/^$/d    删除空行(vi)^[a-z][0-9]$ 匹配一个由一个小写字母和一位数字组成的字符串,比如"z2"、"t6"或"g7",但不是"ab2"、"r2d3" 或"b52"[^a-z] //除了小写字母以外的所有字符 [^\\\/\^] //除了(\)(/)(^)之外的所有字符 要求第一个字符不能是数字:^[^0-9][0-9]$ UNIX/Linux系统编辑器Vi的用法Vi的三种模式wq,q!UNIX/Linux系统编辑器:w 写盘:w file 写到盘文件file中:w >>file 将内容写至文件原有内容之后:w! File 强行进行写盘文件file的动作:q 退出偏辑程序:q! 强行退出编辑程序,同时放弃编辑缓冲区 中的内容:wq 写盘后退出编辑程序:x 对修改后的信息写盘并退出编辑程序:r file 将文件file读入编辑缓冲区:e 另行编辑文件:e! 另行编辑文件并放弃编辑缓冲区的内容:e file 打开并编辑文件file UNIX/Linux系统编辑器◆进入插入编辑方式的常用命令 vi有多种方式从命令行方式或末行命令方式进入到插入编辑方式中,可以使用下面的命令;.a一将文本添加在光标之后。A—将文本添加至行尾。cw一修改一个单词。c3w—修改三个单词。i—将文本插人在光标之前。I一将文本插入行首。o-在光标所在行下面插入新行。O—-在光标所在行上面插入新行。r一在光标所在位置替换一个字符。R—替换若干字符。 UNIX/Linux系统编辑器emaes编辑器 emacs编辑器是自由软件基金会发行的软件产品,在Linux系统中比较流行。emacs的含义是宏编辑程序(macro editor)。 emacs功能很强大,使用它几乎可以解决用户与操作系统交互中的所有问题,但它占用磁盘空间比较大。 emacs提供有多种使用模式以适应不同用户的需求。在进行安装时,可根据需要选择某些选项安装指定的模式,以减少磁盘空间的使用量,并可满足到应用的需要。shell 及shell编程◆shell的基本功能1)命令的解释执行2)环境变量的设置3)输入输出的重定向4)shell程序语言的设计shell 及shell编程UNIX/Linux系统中标准流的定义 ★ 命令处理流:加工、信息。 ★ UNIX/Linux 信息流标准定义标准定义 文件描述符 默认映射对象-------------------------------------------------标准输入流 0 键盘标准输出流 1 显示器标准错误流 2 输出错误信息 (显示器)shell 及shell编程shell命令解释 输出shell提示符(#/$/%)→接收信息,分析命令→转去执行命令或程序→命令结束返回★输入输出重定向 在命令中用>,>>, dir1% pwd > dir1 % date>>dir1% prog outfile% cc abc.c >log (若出错仍回输出错误信息到屏幕)% cc abc.c >& logshell 及shell编程★管道线的处理 管道线“|”可以将一个程序或命令的输出作为另一个程序或命令的输入。 % ls –l >tempfile% wc –l tempfile (计算文件中的行数)% rm tempfile上面三条命令等价于命令:% ls –l | wc -lshell 及shell编程管道线处理可以使用的分隔符:★& 在命令行尾表示管道线输出为后台作业★&& 代替管道线符,表示左边的命令输出为“真”时执行右边的命令。★|| 代替。省略部分。执行循环体的“sleep“指令。 shell 及shell编程 上例程序运行存在一个问题,如使用者一直没登录,则使用者也无法使用该终端。合理地解决办法是将本程序放后台运行。$uon lili& /*后台运行该程序检查用户lili是否登录到系统*/4583 /*系统显示进程ID*/$ /*系统显示shell命令提示符,现可以做其他事情了*/ 如果lili登录,系统会用两声蜂鸣和显示信息"lili is on the system”通知使用者lili用户已经登录了。shell 及shell编程例2:使用shell程序创建若干个新文件。#!/bin/sh#cfile.sh VAL=1 while [$VAL -lt 11]do touch file $VAL VAL = `expr $VAL+1`done 程序可以创建10个新文件,它们的名字分别为:file 1,file2,…,file10,这些文件的使用权限和创建时间由默认设置决定。 shell 及shell编程① touch命令: touch命令可以改变文件访问权限和修改时间,格式为: touch[选项][时间]文件名  当指出的文件名不存在时,该命令完成创建具有默认权限及当前系统时间的文件。② expr命令expr命令是对shell变量进行算术运算的操作,因为shell变量都是字符型变量,对这种变量简单的进行四则运算不能达到预期的效果,必须使用expr命令做四则运算。在程序中是将表达式作为一种实参引用的。如:$count =0 /*首先给变量count赋值*/$count =count+1 /*试图完成count+l再赋给count的操作*/$echo $count /*查看操作后的效果*/系统显示:0+1shell 及shell编程而:$count = “`expr $count + 1`”$echo $count 系统显示:1 使用这一命令时为避免出现错误,在命令书写中要将操作数与运算符之间用空格分开,如果运算符是乘号或除号时,对它们要做转义处理,例如,\*,/ \就是表示对符号“*”和“\”的转义。 另外在编写循环语句时,也可以使用break和continue语句来改变for和while循环的执行顺序。它们的引用方法与C语言中的规定相似,即break表示退出当前所在的整个循环。continue表示结束本轮循环,转到下一轮循环的开始。shell 及shell编程shell程序的调试方法Shell程序是一种解释执行语言,其执行是逐行完成的,当程序中语句有语法错误时,对未执行到的语句,系统并不进行提示。但在编程中通常要对程序的整体正确性进行调试和验证:1)交互式调试:对命令或语法可先用命令进行验证,然后再引用到shell编程中。2)在编辑过程中不断调试执行所编辑的程序:UNIX中可以打开多个窗口工作,可以在一个打开的窗口中进行vi的程序编辑,在另一个打开的窗口中执行并观察刚编辑的程序的执行结果,判断是否正确,逐步完成整个程序的调试。3)使用-v、-x选项对shell程序进行跟踪:-v—完成详细跟踪,将逐行读入执行的命令,并在标准输出上显示,然后执行此语句,直到有语法错误时停止执行过程。-x—实际命令运行的跟踪,首先显示经过变量替换后的命令行内容,然后再执行它。 shell 及shell编程例:对一个shell程序test.sh进行跟踪的过程如下:假设,test.sh中只包括两条语句:dateecho $PATH若采用-v选项跟踪时输入命令:$sh –v test.sh执行结果为:dateFri Aug 8:16:00 Prc 2001Echo $PATH/usr/bin:/usr/ucb/bin:/home/chr/bin shell 及shell编程例:编写一个shell程序on.sh,判断指定的用户是否注册,若是则拷贝一个关于用户信息的文件,否则显示一条提示信息。程序如下:#on.shecho “type in your logname :\c” #\c新行终止符read userif grep $user /etc/passwd>/tmp/null who –u | grep $userthen echo “$user has logged in the system.” cp /tmp/null tmp1 rm /tmp/nullelse echo “$user has not logged in the system.”fi shell 及shell编程可能运行结果: $sh ./on type in your logname:chen↙ chen yyt04 Mar 12 14:32 0:03 453 chen has logged in the system.$cat tmp1 chen:*:200:50::/usr/chen:/bin/shshell 及shell编程例:编写一个名为myformat.sh的shell程序,改进unix系统对软盘格式化命令format的易用性。程序如下:#myformat.shgetyn() #shell 函数{ while echo “* * (y/n)? \c”> &2 do read yn case $yn in [yY]) return 0;; [nN]) return 1;; *) echo “please enter y or n” >&2;; esac done}shell 及shell编程 fd() { echo “please enter:\(0 – 1.44MB \) \(1 – 1.2MB \): \c” read floppy if test $floppy –eq 0 then DEVICE=/dev/rfd0135ds18 FD=A else DEVICE=/dev/rfd196ds15 FD=B fi} shell 及shell编程 fd clear echo “please insert disk into $FD ,then press enter!” while getyn do format $DEVICE echo “format another one(y/n)? \c” done练习1、使用for循环语句编写一段B-shell程序,完成显示用户注册目录下的a_sub, b_sub子目录下的所有C程序文件及其目标文件的列表。2、编写一段shell程序完成:根据从键盘输入的学生成绩,显示相应的成绩标准(分出及格和优秀等)。3、假设score.txt文件中保存了三个班级的学生考试成绩,请编写一段shell程序计算每个班级的学生人数与平均分。 关 键 词: linux 操作系统 程序设计

524d6daf746efaa52c3c71bbfe7ba172.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值