Linux课程介绍-第四章.ppt
《Linux课程介绍-第四章.ppt》由会员分享,可在线阅读,更多相关《Linux课程介绍-第四章.ppt(83页珍藏版)》请在三一办公上搜索。
1、2010年秋季,北京理工大学珠海学院计算机学院,Linux系统管理与应用,计算机科学教研室主讲:胡敬朋,2010年秋季,本章教学安排,一、教学目的、要求:本章要求掌握Linux下shell的使用方法。主要介绍Linux shell的语法结构、变量定义以及赋值引用、标点符号、控制语句等。二、教学内容 第1节 shell概述第9节 控制结构 第2节 命令历史第10节 函数 第3节 名称补全第11节 作业控制 第4节 别名第12节 shell内置命令 第5节 shell特殊字符第13节 shell脚本调试 第6节 shell变量 第7节 参数置换变量 第8节 算术运算,2010年秋季,三、重点内容s
2、hell的主要特点、类型、建立和执行的方式bash变量的分类、定义形式及引用规则各种控制语句的格式、功能及流程bash中算术运算的使用bash函数的构成及使用规则bash中的内置命令采用图表和板书重点讲解,2010年秋季,第四章 Linux Shell程序设计,第1节 shell概述第9节 控制结构第2节 命令历史第10节 函数第3节 名称补全第11节 作业控制第4节 别名第12节 shell内置命令第5节 shell特殊字符第13节 shell脚本调试第6节 shell变量第7节 参数置换变量第8节 算术运算,2010年秋季,4.1 shell 概述,4.1.1 shell的特点和主要版本4
3、.1.2 shell程序示例4.1.3 shell脚本的建立和执行,2010年秋季,4.1.1 shell的特点和主要版本,作为命令解释程序一种高级程序设计语言,它有变量,关键字,有各种控制语句,如if、case、while、for等语句,支持函数模块,有自己的语法结构1.shell的特点组合新命令 提供了文件名扩展字符 直接使用shell的内置命令 灵活地使用数据流 结构化的程序模块 在后台执行命令 可配置的环境 高级的命令语言,2010年秋季,2shell的种类(1)Bourne shell(简称sh)(2)C shell(简称csh)(3)Korn shell(简称ksh)(4)Bour
4、ne Again shell(即bash),2010年秋季,4.1.2 shell程序示例,【例4.1】由三条简单命令组成的shell程序(文件名为ex1)。$cat ex1datepwdcd.,2010年秋季,【例4.2】带有控制结构的shell程序(文件名为ex2)。$cat ex2#!/bin/bash#If no arguments,then listing the current directory.#Otherwise,listing each subdirectory.if test$#=0then ls.else for i do ls-l$i|grep d donefi,20
5、10年秋季,4.1.3 shell脚本的建立和执行,1、shell脚本的建立2、执行shell脚本的方式 执行shell脚本的方式基本上有三种:(1)输入定向到shell脚本$bash 脚本名(2)以脚本名作为参数 其一般形式是:$bash 脚本名 参数如果以目前shell(以表示)执行一个shell脚本,则可以使用如下简便形式:$脚本名 参数(3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。$chmod a+x ex2$PATH=$PATH:.$ex2注意,此时该脚本所在的目录应被包含在命令搜索路径(PATH)中,2010年秋季,4.2 命令历史,显示历史命令执行历史命令配
6、置历史命令环境,2010年秋季,4.2.1 显示历史命令,语法格式是:history option arg 如果不带任何参数,则history命令会显示历史命令的清单 如果history 后给出一个正整数(如50),就只显示历史表中的最后50行命令 如果history后给出一个文件名,就把它作为历史文件名 常用的选项有:-a 在历史文件中添加“新”历史命令行。-n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。-r 读取历史文件的内容,并把它作为当前的历史命令。-w 把当前的历史写到历史文件中,覆盖原有内容。-c 删除历史清单中所有的项。,2010年秋季,4.2.2 执行历史命令
7、,执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户所需的某种类型的历史命令 基本的事件指定字格式,2010年秋季,4.2.3 配置历史命令环境,在默认方式下,bash使用用户主目录下面的文件“.bash_history”来保存命令历史 改变存放历史命令的文件$HISTFILE=/home/mengqc/.myhistory重新设定能够保留的命令个数$HISTSIZE=600,2010年秋季,4.3 名称补全,可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。,2010年秋季,4.4 别 名
8、,4.4.1 定义别名4.4.2 取消别名,2010年秋季,4.4.1 定义别名,一般语法格式为:alias name=value如果没有指定参数,将在标准输出(屏幕)上显示别名清单 定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释,2010年秋季,4.4.2 取消别名,如果想取消先前定义的别名,可使用如下命令:unalias name可以一次将所有的别名都从别名表中删除,使用如下命令:unalias-a,2010年秋季,4.5 shell特殊字符,4.5.1 通配符4.5.2 引号4.5.3 输入/输出重定向符4.5.4 注释、
9、管道线和后台命令4.5.5 命令执行操作符4.5.6 成组命令,2010年秋季,4.5.1 通配符,1一般通配符*(星号),它匹配任意字符的0次或多次出现,不能匹配文件名前面的.和/?(问号),它匹配任意一个字符(一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符!(惊叹号),如果它紧跟在一对方括号的左方括号()之后,则表示不在一对方括号中所列出的字符 例:chapter0-9*,-a*?abc,f!1-9.c2模式表达式 是那些包含一个或多个通配符的字*(模式表)匹配给定模式表中“模式”的0次或多次出现,各模式之间以“”分开(下同)+(模式表)匹配给定模式表中“模式”的
10、1次或多次出现?(模式表)匹配模式表中任何一种“模式”的0次或1次出现(模式表)仅匹配模式表中给定“模式”的一次出现!(模式表)除给定模式表中的一个“模式”之外,可以匹配其他任何东西 例:file*(.c|.o),file+(.c|.o),file?(.c|.o),file(.c|.o),2010年秋季,4.5.2 引号,1双引号由双引号括起来的字符(除$、倒引号()和反斜线()外)均作为普通字符对待。2单引号由单引号括起来的字符都作为普通字符出现3倒引号倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。倒引号还可以嵌套
11、使用。但应注意,嵌套使用时内层的倒引号必须用反斜线()将其转义。,2010年秋季,4.5.3 输入/输出重定向符,自动打开三个标准文件,即标准输入文件(stdin),标准输出文件(stdout)和标准出错输出文件(stderr)。1输入重定向符 一般形式是:命令 文件名 如:$who abc3输出附加定向符一般形式是:命令文件名 如:$ps-l psfile输入和输出重新定向可以连在一起使用。例如:$wc-l outfile,2010年秋季,4即时文件定向符即时文件的形式是:命令 参数 标记符 输入行 标记符 注意:标记符要成对出现 例如:mail$1!!Best wishes to you
12、on your birthday.!!,2010年秋季,5与文件描述字有关的重定向系统为每个进程自动打开三个标准文件(即标准输入、标准输出和错误输出),其文件描述字分别为0,1和2。标准错误输出也可重定向到一个文件中,其一般形式是:命令 2 文件名 命令 2 文件名标准输出和标准错误输出可以重定向到同一个文件,一般形式是:command$file等价于下面形式的命令:command file 2&1,2010年秋季,4.5.4 注释、管道线和后台命令,1注释#!/bin/bash#If no arguments,then listing the current directory.#Other
13、wise,listing each subdirectory.2管道线 ls-l$HOME|wc l ls|grep m?.c|wc l3后台命令$gcc m1.c&,2010年秋季,4.5.5 命令执行操作符,1顺序执行 在执行时,以分号隔开的各条命令从左到右依次执行 pwd;who|wc-l;cd/usr/bin2逻辑与命令1&命令2其功能是,先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执行命令2。3逻辑或命令1|命令2其功能是,先执行命令1,如果执行不成功,则执行命令2;否则,若命令1执行成功,则不执行命令2。,2010年秋季,4.5.6 成组命令,1 形式以
14、花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。$echo“User Report for date.”;who;|pr 使用花括号时在格式上应注意:左括号“”后面应有一个空格;右括号“”之前应有一个分号(;)2()形式(echo Current directory is pwd.cd/home/mengqc;ls-l;cp m1 em1&rm m1 cat em1)|pr,2010年秋季,二者存在重要区别:用花括号括起来的成组命令只是在本shell内执行命令表,不产生新的进程;而用圆括号括起来的成组命令是在新的子shell内执行,要建立新的子进程。,2010年秋季,4.6
15、shell变量,4.6.1 用户定义的变量 1变量名是以字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。2.定义变量并赋值的一般形式是:变量名=字符串 3引用变量值 在变量名前面加上一个符号“$”如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。$names=Zhangsan Lisi Wangwu$echo$names,2010年秋季,如果变量值须出现在长字符串的开头或者中间,为了使变量名与其后的字符区分开,避免shell把它与其它字符混在一起视为一个新变量,则应该用花括号将该变量名括起来。例如,$dir=/usr/meng$cat$d
16、irqc/m1.c4命令替换有两种形式的命令替换:一种是使用倒引号引用命令,其一般形式是:命令表另一种形式是:$(命令表)如:$dir=$(pwd)$echo$(pwd;cd/home/mengqc;ls-d),2010年秋季,4.6.2 数组,bash只提供一维数组,并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。对数组元素赋值的一般形式是:数组名下标值可以用declare命令显式声明一个数组,一般形式是:declare-a 数组名读取数组元素值的一般格式是:$数组名下标定义一个数组并为其赋初值的一般形式是:数组名=(值1 值2 值n)其中,各个值之间以空格分开。若没有给出
17、数组元素的下标,则数组名表示下标为0的数组元素使用*或当作下标,则会以数组中所有元素取代*或,2010年秋季,4.6.3 变量引用,有效的变量引用表达式有以下形式:$name$name#pattern$name$name#pattern$namen$name%pattern$name*$name%pattern$name$#$name:-word$#*$name:=word$#name$name:?word$#name*$name:+word$#name,2010年秋季,表达式$name表示变量name的值,若变量未定义,则用空值替换。表达式$name将被变量name的值替换。用花括号括起na
18、me,目的在于把变量名与后面的字符分隔开,避免出现混淆。替换后花括号被取消。$namen表示数组变量name中第n个元素的值。表达式$name*和$name都表示数组name中所有非空元素的值,每个元素的值用空格分开。如果用双引号把它们都括起来,那么二者的含义就有区别:对于$name*,它被扩展成一个词(即字符串),这个词由以空格分开的各个数组元素组成;对于$name,它被扩展成多个词,每个数组元素是一个词。如果数组name中没有元素,则$name被扩展为空串。,2010年秋季,表达式$name:-word、$name:=word、$name:+word、$name:?word的计算方法在4.
19、7节中介绍表达式$name#pattern和$name#pattern 如果pattern(Shell模式)与name值的开头匹配,那么name的值去掉匹配部分后的结果就是该表达式的值;否则,name的值就是该表达式的值。在第一种格式中,name值去掉的部分是与pattern匹配的最少的部分;而第二种格式中,name值去掉的部分是与pattern匹配的最多的部分。表达式$name%pattern和$name%pattern 如果pattern与name值的末尾匹配,那么name的值中去掉匹配部分后的结果就是该表达式的值;否则,该表达式的值就是name的值。在第一种格式中,去掉的部分是最少的匹配
20、部分;而第二种格式中,去掉的部分是最多的匹配部分。,2010年秋季,表达式$#和$#*它们的值分别是由$和$*返回的参数的个数。表达式$#namei 该表达式的值是数组name第i个元素值的长度(字符个数)。表达式$#nane*和$#name 它们的值都是数组name中已经设置的元素的个数。,2010年秋季,4.6.4 输入/输出命令,1read命令 可以利用read命令从键盘上读取数据,然后赋给指定的变量。read命令的一般格式是:read 变量1 变量2 变量个数与给定数据个数相同,则依次对应赋值变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据。变量个数多于给定
21、数据个数,则依次对应赋值,而没有数据与之对应的变量取空串2 echo命令显示其后的变量值或者直接显示它后面的字符串 如果echo命令带有选项“-e”,那么在其后的参数中可以有以下转义字符:a b c e f n r t v m xm,2010年秋季,【例4.6】这是一个特洛伊木马shell脚本示例。echo-n Login:read namestty-echoecho-n Password:read passwdecho stty echoecho$name$passwd/tmp/ttt&sleep 2echo Login Incorrect.Re-enter,Please.stty cook
22、ed,2010年秋季,4.6.5 位置参数,1位置参数及其引用位置变量的名称很特别,分别是0,1,2,命令行实参与脚本中位置变量的对应关系如下所示:exam1 m1 m2 m3 m4$0$1$2$3$4$5$6$7$8$9$10$11 引用它们的方式依次是$0,$1,$2,$9,$10,$11等。其中,$0始终表示命令名或shell脚本名。位置变量不能通过一般赋值的方式直接赋值 通过命令行上对应位置的实参传值 2用set命令为位置参数赋值,2010年秋季,4.6.6 移动位置参数,每执行一次shift命令,就把命令行上的实参向左移一位,即相当于位置参数向右移动一个位置。命令行:ex7 A B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 课程 介绍 第四

链接地址:https://www.31ppt.com/p-6511382.html