第五章程序设计PPT讲稿.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第五章程序设计PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第五章程序设计PPT讲稿.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章程序设计第1页,共79页,编辑于2022年,星期三Linux内核概述内核概述shell层是内核之外的中间层,是用户和系统交互的界面。2第2页,共79页,编辑于2022年,星期三Linux内核概述内核概述在前面章节,shell被解释为命令解释程序,即,它接收用户输入的命令,然后创建子进程,由子进程实现命令所规定的功能,等子进程终止工作后发出提示符。这是shell常见的使用方式。3第3页,共79页,编辑于2022年,星期三Linux内核概述内核概述其实shell还是一种高级程序设计语言,它有变量、关键字还有各种控制语句4第4页,共79页,编辑于2022年,星期三Linux shell程序设计
2、Linux提供多种不同的提供多种不同的shell。常用。常用的有的有Bourne shell(简称简称sh)、C-shell(简称简称csh)、Korn shell(简称简称ksh)和和Bourne Again shell(简称简称bash)。5第5页,共79页,编辑于2022年,星期三Linux shell程序设计Bourne shell是是AT&T Bell实验室实验室为为AT&T的的UNIX开发的,是开发的,是UNIX默认的默认的shell6第6页,共79页,编辑于2022年,星期三Linux shell程序设计C-shell(简称简称csh)是加州伯克利大是加州伯克利大学的学的Bill
3、 Joy为为BSD UNIX开发的,开发的,与与sh不一样不一样7第7页,共79页,编辑于2022年,星期三Linux shell程序设计Korn shell(简称简称ksh)也是也是AT&T Bell实验室开发的,其命令交互界实验室开发的,其命令交互界面和编程界面很好面和编程界面很好8第8页,共79页,编辑于2022年,星期三Linux shell程序设计Bourne Again shell(简称简称bash)是是GNU开发的一个开发的一个shell,是,是Linux默认默认的的shell9第9页,共79页,编辑于2022年,星期三Linux shell程序设计shell特点:特点:对已有命
4、令进行组合构成新命令,组合方式简单;对已有命令进行组合构成新命令,组合方式简单;提供了文件名扩展字符,提供了文件名扩展字符,使单一字符串可以匹配多个文件名使单一字符串可以匹配多个文件名;可以直接使用可以直接使用shell的内置命令而不需创建新的进程;的内置命令而不需创建新的进程;shell灵活使用数据流,提供通配符、输入灵活使用数据流,提供通配符、输入/输出重定向、管道线等机制;输出重定向、管道线等机制;提供了顺序流程控制、条件控制、循环控制语句;提供了顺序流程控制、条件控制、循环控制语句;shell提供了在后台执行命令的能力;提供了在后台执行命令的能力;shell提供了可配置的环境,允许用户
5、创建修改命令、命令提示符等系统行为;提供了可配置的环境,允许用户创建修改命令、命令提示符等系统行为;shell提供了一个高级的命令语言,允许用户创建简单和复杂的程序。提供了一个高级的命令语言,允许用户创建简单和复杂的程序。操作系统本身自带的命令。不需要外部软件支操作系统本身自带的命令。不需要外部软件支持的命令,持的命令,如:如:cd、echo、kill 等命令等命令10第10页,共79页,编辑于2022年,星期三Linux shell程序设计shell脚本的创建和执行:脚本的创建和执行:使使用用shell的的最最简简单单的的方方法法是是从从键键盘盘上上直直接接输输入入命命令令行行或或存存入入文
6、文件件中中,这种被这种被shell解释执行的文件为解释执行的文件为shell脚本。脚本。利用编辑器建立一个利用编辑器建立一个shell脚本,和普通文件一样,脚本,和普通文件一样,例:例:$vi ex1 建立一个名字为建立一个名字为ex1的的shell脚本脚本11第11页,共79页,编辑于2022年,星期三Linux shell程序设计执行执行shell脚本的方式有三种:脚本的方式有三种:(1)$bash脚本名脚本名(2)$bash 脚本名脚本名 参数参数(3)将)将shell脚本的权限设置为可执行,然后再提示符下直接执行它脚本的权限设置为可执行,然后再提示符下直接执行它用输入重定向让用输入重定
7、向让shell从给定文件中读入命令行,从给定文件中读入命令行,进行相应处理。进行相应处理。以脚本名作为参数传递给程序中的命令以脚本名作为参数传递给程序中的命令例(例(1)$bashex1 (2)$ex1 (3)$chmod a+x ex2$./ex2()脚本后面不能带参数脚本后面不能带参数目前目前使用的使用的shell以以表示表示 把把shell脚本脚本ex2置为对所有用户都有执行权限置为对所有用户都有执行权限,然后然后在提示符后可以直接执行该文件在提示符后可以直接执行该文件12第12页,共79页,编辑于2022年,星期三Linux shell程序设计bash提供了命令历史功能,即系统为每一个
8、用户维护一个命令历史文件提供了命令历史功能,即系统为每一个用户维护一个命令历史文件(/root/.bash_history),该文件把用户输入的命令自动的加到该命令历史),该文件把用户输入的命令自动的加到该命令历史表中。用户可以调用或者修改以前的命令。表中。用户可以调用或者修改以前的命令。$HISTFILE=”/home/.test_history”$HISTSIZE=100可以通过可以通过HISTFILE改变存改变存放历史命令的文件放历史命令的文件将历史命令存放在将历史命令存放在/home/.test_history下下设置设置历史文件中可以保历史文件中可以保留留100条历史命令,默认条历史
9、命令,默认是是50013第13页,共79页,编辑于2022年,星期三Linux shell程序设计 显示命令历史表中的命令显示命令历史表中的命令 historyoptionarg 显示历史命令,包括刚输入显示历史命令,包括刚输入的的history例:例:$history$history 50显示历史表中的最后显示历史表中的最后50行行命令命令14第14页,共79页,编辑于2022年,星期三Linux shell程序设计执执行行历历史史命命令令:以以字字符符“!”开开头头,后后随随一一个个或或多多个个字字符符来来定定义义某某种种类类型型的的历历史史命命令令。(符符号号间间没没有空格有空格)格式格
10、式意意义义!重复上一条命令,相当于!重复上一条命令,相当于!-1!重新重新执执行第行第n条条历历史命令史命令!-n重新重新执执行倒数第行倒数第n条条历历史命令。!史命令。!-1等于!等于!string重新重新执执行以字符串行以字符串string开开头头的最近的的最近的历历史命令行。史命令行。例:!例:!ca表示表示访问访问最近的最近的cat命令命令!?string?重新重新执执行最近的、包含行最近的、包含string的的历历史命令。史命令。例:!例:!?hist?表示重复前面含有表示重复前面含有hist的命令的命令15第15页,共79页,编辑于2022年,星期三Linux shell程序设计名
11、称补全:在名称补全:在bash命令行上输入目录名和文件名时,可以按命令行上输入目录名和文件名时,可以按tab键让系统自键让系统自动补全剩余的部分。动补全剩余的部分。例:例:$cd/us$cat e系统自动补全系统自动补全/usr如果目录中有如果目录中有ex1、ex2、exam1则系统则系统会补全到三者相同部分的最后一个字符,屏会补全到三者相同部分的最后一个字符,屏幕显示为幕显示为$cat ex,如果此时用户继续按,如果此时用户继续按Tab键,屏幕显示为键,屏幕显示为$cat ex ex1 ex2 exam1 等待用户选择等待用户选择16第16页,共79页,编辑于2022年,星期三Linux s
12、hell程序设计别名:对于常用的选项或参数比较多的固定命令可以取个别名:对于常用的选项或参数比较多的固定命令可以取个别名替换,定义别名的命令别名替换,定义别名的命令 aliasname=value 例:例:$alias$alias ll=ls-l$ll$alias ll=ls-l$ll在屏幕上显示别名清单在屏幕上显示别名清单等价于等价于$ls-l等价于等价于$ls 17第17页,共79页,编辑于2022年,星期三Linux shell程序设计别名:对于常用的选项或参数比较多的固定命令可以取个别名替别名:对于常用的选项或参数比较多的固定命令可以取个别名替换,定义别名的命令换,定义别名的命令 al
13、iasname=value 取消别名:取消别名:unalias name执行后从别名表中删除执行后从别名表中删除name指定的别名指定的别名 18第18页,共79页,编辑于2022年,星期三Linux shell程序设计19第19页,共79页,编辑于2022年,星期三Linux shell程序设计模式表达式:除了模式表达式:除了*、?和和之外还有以下形式:之外还有以下形式:()(模式表):匹配给定模式表中的模式的次或多次出现,各模式()(模式表):匹配给定模式表中的模式的次或多次出现,各模式以分开;以分开;()(模式表):匹配给定模式表中的模式的次或多次出现,各模()(模式表):匹配给定模式表
14、中的模式的次或多次出现,各模式以分开;式以分开;()?(模式表):匹配给定模式表中任一模式的次或次出现,()?(模式表):匹配给定模式表中任一模式的次或次出现,各模式以分开;各模式以分开;()()(模式表模式表):仅匹配模式表中的给定模式的次出现;:仅匹配模式表中的给定模式的次出现;()!(模式表):除给定模式表中的模式外匹配其他任何模式()!(模式表):除给定模式表中的模式外匹配其他任何模式20第20页,共79页,编辑于2022年,星期三Linux shell程序设计例:例:file*(.c|.o)将匹配文件将匹配文件file、file.c、file.o、file.c.c、file.o.o、
15、file.c.o、file.o.c等等file(.c|.o)将匹配文件将匹配文件file.c、file.o、file.c.c、file.o.o、file.c.o、file.o.c等等,不匹配不匹配filefile?(.c|.o)只匹配文件只匹配文件file、file.c、file.o,不匹配,不匹配file.c.c、file.o.o、file.c.o、file.o.c等,等,file(.c|.o)只匹配文件只匹配文件file.c、file.o不匹配不匹配file、file.c.c、file.o.o、file.c.o、file.o.c等等21第21页,共79页,编辑于2022年,星期三Linux
16、 shell程序设计引号:分为单引号、双引号和倒引号。引号:分为单引号、双引号和倒引号。用用双双引引号号括括起起来来除除$、倒倒引引号号()和和反反斜斜线线()之之外外都都作作为为普普通通字字符符对对待待,$表表示示变变量量替替换换;倒倒引引号号()表表示示命命令令替替换换;反反斜线(斜线()表示转义字符。)表示转义字符。单引号括起来的字符表示都是普通字符。单引号括起来的字符表示都是普通字符。倒引号(倒引号()括起来的字符被)括起来的字符被shell解释为命令行。解释为命令行。22第22页,共79页,编辑于2022年,星期三Linux shell程序设计例:例:$cat ex3echo“cur
17、rent directory is pwd”echo”home directory is$HOME”echo“file*.?”$bash ex3current directory is/homehome directory is/rootfile*.?23第23页,共79页,编辑于2022年,星期三Linux shell程序设计注释:注释:shell程序中以程序中以#开头的正文行表示注释;在开头的正文行表示注释;在shell脚本脚本的第一行以的第一行以#!开头表示该脚本是用哪种!开头表示该脚本是用哪种shell编写的,从而调用编写的,从而调用相应的解释程序执行。相应的解释程序执行。后台命令:当
18、程序执行需要时间过长时,那么在命令最后输后台命令:当程序执行需要时间过长时,那么在命令最后输入入&符号,则符号,则shell在后台启动该程序,马上显示下一个提示在后台启动该程序,马上显示下一个提示符,允许用户输入新的命令。符,允许用户输入新的命令。24第24页,共79页,编辑于2022年,星期三Linux shell程序设计等价于等价于pwd这里分号隔开的命令,前面的命令执行成功这里分号隔开的命令,前面的命令执行成功 who|wc l 与否并不影响与否并不影响 后面命令的执行后面命令的执行cd/home命令执行操作符:多条命令可以在一行中出现,各命令之间以分号隔开,命令执行操作符:多条命令可以
19、在一行中出现,各命令之间以分号隔开,例例 pwd;who|wc-l;cd/home25第25页,共79页,编辑于2022年,星期三Linux shell程序设计命令执行操作符:命令执行操作符:逻辑与操作符逻辑与操作符&可将两个命令联系在一起,可将两个命令联系在一起,命令命令&命令表示先执行命令,如果执行成功才执行命令,否则不命令表示先执行命令,如果执行成功才执行命令,否则不执行命令。执行命令。逻辑非操作符逻辑非操作符|可将两个命令联系在一起,可将两个命令联系在一起,命令命令|命令命令 表示先执行命令,如果不成功则执行命令,如果命令表示先执行命令,如果不成功则执行命令,如果命令成功则不执行命令。
20、成功则不执行命令。26第26页,共79页,编辑于2022年,星期三Linux shell程序设计27第27页,共79页,编辑于2022年,星期三Linux shell程序设计成组命令:在成组命令:在shell中有两种方式将若干命令组合在一起,一个是花括中有两种方式将若干命令组合在一起,一个是花括号,一个是圆括号;号,一个是圆括号;()();形式:以花括号括起来的全部命令作为一条命令执行,左形式:以花括号括起来的全部命令作为一条命令执行,左括号后有一个空格右括号前有分号括号后有一个空格右括号前有分号()()()形式:左括号后不需有空格,右括号之前也不需加分号)形式:左括号后不需有空格,右括号之前
21、也不需加分号例:例:$echo“user report for date”;who;|cat (echo和和who命令的执行结果经管道传给屏幕进行输出命令的执行结果经管道传给屏幕进行输出)28第28页,共79页,编辑于2022年,星期三Linux shell程序设计二者区别:花括号括起来的组命令在本二者区别:花括号括起来的组命令在本shell执行命令,不产生新进程;执行命令,不产生新进程;圆括号括起来的组命令要在新的子圆括号括起来的组命令要在新的子shell内执行,要建立新的子进程。内执行,要建立新的子进程。29第29页,共79页,编辑于2022年,星期三Linux shell程序设计shel
22、l有两类变量:环境变量和临时变量。有两类变量:环境变量和临时变量。环境变量是永久性变量,值不会随环境变量是永久性变量,值不会随shell脚本执行结束而消失;脚本执行结束而消失;临临时时变变量量是是在在shell程程序序内内部部定定义义,使使用用范范围围仅仅限限于于定定义义它它的的程序,出了程序就不能使用,程序结束后,它的值就不存在了。程序,出了程序就不能使用,程序结束后,它的值就不存在了。环境变量像$HOME(用户主目录的全路径)$LOGNAME(用户的注册名,通过该变量系统来确认用户是否是文件的拥有者,是否有权利执行某个命令)$PATH(shell从中查找命令的目录列表,例:PATH=$PA
23、TH:/home)30第30页,共79页,编辑于2022年,星期三Linux shell程序设计用户定义的变量:变量名是以字母或下划线开头,由字母、下用户定义的变量:变量名是以字母或下划线开头,由字母、下划线和数字组成的序列。大小写意义不同,变量长度不受限制。划线和数字组成的序列。大小写意义不同,变量长度不受限制。定义变量并赋值的一般形式定义变量并赋值的一般形式 变量名字符串变量名字符串引用变量时用引用变量时用“$变量变量”31第31页,共79页,编辑于2022年,星期三Linux shell程序设计例:例:$dir=/home/ccc$echo$dir$echo dir$today=Sund
24、ay$echo$today$Today$dir=/home/cc$cat$dirc/mi.c$cat$dirc/mi.c$cat$dir/mi.c显示结果/home/ccc显示结果dir显示结果Sunday Today未被赋值,为空串将文件/home/ccc/mi.c显示出来提示出错,认为dirc是个新变量,前面未赋值,所以找不到文件mi.c将文件/home/cc/mi.c显示出来32第32页,共79页,编辑于2022年,星期三Linux shell程序设计数组:数组:bash只提供一维数组,数组元素下标由只提供一维数组,数组元素下标由0开始编号。开始编号。一般形式为:一般形式为:declar
25、ea数组名数组名读取数组元素值的一般形式是:读取数组元素值的一般形式是:$数组名下标数组名下标对数组元素赋值的一般形式是:对数组元素赋值的一般形式是:数组名下标值或数组名(值值数组名下标值或数组名(值值值)值)33第33页,共79页,编辑于2022年,星期三Linux shell程序设计例:例:$city0=Beijing$city1=Shanghai$echo$city0$A=(this is an example of shell script)$echo$A0$A2$A3$A6$echo$A8显示结果Beijing显示结果结果显示为this an example script显示结果结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 章程 设计 PPT 讲稿
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内