Linux课程介绍-第四章.ppt
《Linux课程介绍-第四章.ppt》由会员分享,可在线阅读,更多相关《Linux课程介绍-第四章.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux系统管理与应用计算机科学教研室主讲:胡敬朋2010年秋季北京理工大学珠海学院计算机学院本章教学安排一、教学目的、要求:本章要求掌握Linux下shell的使用方法。主要介绍Linux shell的语法结构、变量定义以及赋值引用、标点符号、控制语句等。二、教学内容 第1节 shell概述第9节 控制结构 第2节 命令历史第10节 函数 第3节 名称补全第11节 作业控制 第4节 别名第12节 shell内置命令 第5节 shell特殊字符第13节 shell脚本调试 第6节 shell变量 第7节 参数置换变量 第8节 算术运算三、重点内容shell的主要特点、类型、建立和执行的方式b
2、ash变量的分类、定义形式及引用规则各种控制语句的格式、功能及流程bash中算术运算的使用bash函数的构成及使用规则bash中的内置命令采用图表和板书重点讲解第四章 Linux Shell程序设计n第1节 shell概述第9节 控制结构n第2节 命令历史第10节 函数n第3节 名称补全第11节 作业控制n第4节 别名第12节 shell内置命令n第5节 shell特殊字符第13节 shell脚本调试n第6节 shell变量n第7节 参数置换变量n第8节 算术运算4.1 shell 概述n4.1.1 shell的特点和主要版本n4.1.2 shell程序示例n4.1.3 shell脚本的建立和
3、执行4.1.1 shell的特点和主要版本n作为命令解释程序n一种高级程序设计语言,它有变量,关键字,有各种控制语句,如if、case、while、for等语句,支持函数模块,有自己的语法结构1.shell的特点组合新命令 提供了文件名扩展字符 直接使用shell的内置命令 灵活地使用数据流 结构化的程序模块 在后台执行命令 可配置的环境 高级的命令语言 n2shell的种类(1)Bourne shell(简称sh)(2)C shell(简称csh)(3)Korn shell(简称ksh)(4)Bourne Again shell(即bash)4.1.2 shell程序示例 【例4.1】由三条
4、简单命令组成的shell程序(文件名为ex1)。$cat ex1datepwdcd .【例【例4.24.2】带有控制结构的带有控制结构的shellshell程序(文件名为程序(文件名为ex2ex2)。)。$cat ex2$cat ex2#!/bin/bash#!/bin/bash#If no arguments,then listing the current directory.#If no arguments,then listing the current directory.#Otherwise,listing each subdirectory.#Otherwise,listing
5、each subdirectory.if test$#=0if test$#=0then ls .then ls .elseelse for i for i do do ls -l$i|grep d ls -l$i|grep d done donefi fi4.1.3 shell脚本的建立和执行1 1、shellshell脚本的建立脚本的建立2 2、执行、执行shellshell脚本的方式脚本的方式 执行执行shellshell脚本的方式基本上有三种:脚本的方式基本上有三种:(1)(1)输入定向到输入定向到shellshell脚本脚本$bash$bash 脚本名脚本名 (2)(2)以脚本名作为
6、参数以脚本名作为参数 其一般形式是:其一般形式是:$bash$bash 脚本名脚本名 参数参数n n如果以目前如果以目前shellshell(以(以 表示)执行一个表示)执行一个shellshell脚本,则可以使用如下简脚本,则可以使用如下简便形式:便形式:$脚本名脚本名 参数参数 (3)(3)将将shellshell脚本的权限设置为可执行,然后在提示符下直接执行它。脚本的权限设置为可执行,然后在提示符下直接执行它。$chmodchmod a+xa+x ex2 ex2$PATH=$PATH:.$PATH=$PATH:.$ex2$ex2n n注意,此时该脚本所在的目录应被包含在命令搜索路径注意,
7、此时该脚本所在的目录应被包含在命令搜索路径(PATH)(PATH)中中4.2 命令历史n显示历史命令显示历史命令n执行历史命令执行历史命令n配置历史命令环境配置历史命令环境4.2.1 显示历史命令语法格式是:语法格式是:history option arg history option arg n n如果不带任何参数,则如果不带任何参数,则historyhistory命令会显示历史命令的清单命令会显示历史命令的清单 n n如果如果history history 后给出一个正整数后给出一个正整数(如如50)50),就只显示历史表中的最,就只显示历史表中的最后后5050行命令行命令 n n如果如果
8、historyhistory后给出一个文件名,就把它作为历史文件名后给出一个文件名,就把它作为历史文件名 n n常用的选项有:常用的选项有:-a -a 在历史文件中添加在历史文件中添加“新新”历史命令行。历史命令行。-n -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。清单中。-r -r 读取历史文件的内容,并把它作为当前的历史命令。读取历史文件的内容,并把它作为当前的历史命令。-w -w 把当前的历史写到历史文件中,覆盖原有内容。把当前的历史写到历史文件中,覆盖原有内容。-c -c 删除历史清单中所有的项。删除历史清单中所
9、有的项。4.2.2 执行历史命令n执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户所需的某种类型的历史命令 基本的事件指定字格式 格格 式式 意意 义义 !重复上一条命令,也就是重复上一条命令,也就是“!-1”“!-1”!n!n 重新执行第重新执行第n n条历史命令条历史命令 !-n!-n 重新执行倒数第重新执行倒数第n n条历史命令。条历史命令。!-1!-1就等于就等于!string!string 重新执行以字符串重新执行以字符串stringstring开头的最近的历史命令开头的最近的历史命令行。行。!?string?!?string?重新执行最近的、包含字符串重
10、新执行最近的、包含字符串stringstring的那条历史的那条历史命令命令 !#!#到现在为止所输入的整个命令行到现在为止所输入的整个命令行 4.2.3 配置历史命令环境n在默认方式下,bash使用用户主目录下面的文件“.bash_history”来保存命令历史 n改变存放历史命令的文件$HISTFILE=/home/mengqc/.myhistoryn重新设定能够保留的命令个数$HISTSIZE=6004.3 名称补全n可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。4.4 别 名n4.4.1 定义别名定义别名
11、n4.4.2 取消别名取消别名4.4.1 定义别名一般语法格式为:alias name=valuen n如果没有指定参数,将在标准输出(屏幕)上显示别名清单 n n定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释4.4.2 取消别名n n如果想取消先前定义的别名,可使用如下命令:unalias namen n可以一次将所有的别名都从别名表中删除,使用如下命令:unalias-a4.5 shell特殊字符 n4.5.1 通配符n4.5.2 引号n4.5.3 输入/输出重定向符n4.5.4 注释、管道线和后台命令n4.5.5 命令执行
12、操作符n4.5.6 成组命令4.5.1 通配符1 1一般通配符一般通配符n n*(星星号号),它它匹匹配配任任意意字字符符的的0 0次次或或多多次次出出现现,不不能能匹匹配配文文件件名名前前面面的的.和和/n n?(问号),它匹配任意一个字符(问号),它匹配任意一个字符n n (一一对对方方括括号号),其其中中有有一一个个字字符符组组。其其作作用用是是匹匹配配该该字字符符组组所所限限定定的任何一个字符的任何一个字符 n n!(惊惊叹叹号号),如如果果它它紧紧跟跟在在一一对对方方括括号号的的左左方方括括号号()之之后后,则则表表示示不在一对方括号中所列出的字符不在一对方括号中所列出的字符 n n
13、例:例:chapter0-9*,-a*?abc,f!1-9.cchapter0-9*,-a*?abc,f!1-9.c2 2模式表达式模式表达式 是那些包含一个或多个通配符的字是那些包含一个或多个通配符的字 n n*(*(模模式式表表)匹匹配配给给定定模模式式表表中中“模模式式”的的0 0次次或或多多次次出出现现,各各模模式式之之间以间以“”分开(下同)分开(下同)n n+(+(模式表模式表)匹配给定模式表中匹配给定模式表中“模式模式”的的1 1次或多次出现次或多次出现n n?(?(模式表模式表)匹配模式表中任何一种匹配模式表中任何一种“模式模式”的的0 0次或次或1 1次出现次出现n n(模式
14、表模式表)仅匹配模式表中给定仅匹配模式表中给定“模式模式”的一次出现的一次出现 n n!(!(模模式式表表)除除给给定定模模式式表表中中的的一一个个“模模式式”之之外外,可可以以匹匹配配其其他他任任何东西何东西 n n例:例:file*(.c|.o),file+(.c|.o),file?(.c|.o),file(.c|.o)file*(.c|.o),file+(.c|.o),file?(.c|.o),file(.c|.o)4.5.2 引号1 1双引号双引号n n由双引号括起来的字符(除由双引号括起来的字符(除$、倒引号(、倒引号()和反斜线()和反斜线()外)均作为普通字符对待。外)均作为普通
15、字符对待。2 2单引号单引号n n由单引号括起来的字符都作为普通字符出现由单引号括起来的字符都作为普通字符出现3 3倒引号倒引号n n倒引号括起来的字符串被倒引号括起来的字符串被shellshell解释为命令行,在执行时,解释为命令行,在执行时,shellshell会先执行该命令行,并以它的标准输出结果取代整个会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。倒引号部分。n n倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线(引号必须用反斜线()将其转义。)将其转义。4.5.3 输入/输出重定向符n自动打开三个标准文件
16、,即标准输入文件(stdin),标准输出文件(stdout)和标准出错输出文件(stderr)。1输入重定向符 n 一般形式是:命令 文件名 如:$score 文件名 如:$who abc3输出附加定向符n一般形式是:命令文件名 如:$ps-l psfilen输入和输出重新定向可以连在一起使用。例如:$wc -l outfile4即时文件定向符n即时文件的形式是:命令 参数 标记符 输入行 标记符 注意:标记符要成对出现 n例如:mail$1 2 文件名文件名 命令命令 2 2 文件名文件名n n标准输出和标准错误输出可以重定向到同一个文件,一般标准输出和标准错误输出可以重定向到同一个文件,一
17、般形式是:形式是:command$file command$filen n等价于下面形式的命令:等价于下面形式的命令:command file 2&1 command file 2&14.5.4 注释、管道线和后台命令 1 1注释注释#!/bin/bash#!/bin/bash#If no arguments,then listing the current directory.#If no arguments,then listing the current directory.#Otherwise,listing each subdirectory.#Otherwise,listing e
18、ach subdirectory.2 2管道线管道线 ls-l$HOME|wc l ls-l$HOME|wc l ls|grep m?.c|wc l ls|grep m?.c|wc l3 3后台命令后台命令$gcc m1.c&$gcc m1.c&4.5.5 命令执行操作符1 1顺序执行顺序执行 在执行时,以分号隔开的各条命令从左到右依次执行在执行时,以分号隔开的各条命令从左到右依次执行 n npwd;who|wc -l;cd /usr/binpwd;who|wc -l;cd /usr/bin2 2逻辑与逻辑与n n命令命令1&1&命令命令2 2n n其功能是,先执行命令其功能是,先执行命令1
19、1,如果执行成功,才执行命令,如果执行成功,才执行命令2 2;否则,若命;否则,若命令令1 1执行不成功,则不执行命令执行不成功,则不执行命令2 2。3 3逻辑或逻辑或n n命令命令1|1|命令命令2 2n n其功能是,先执行命令其功能是,先执行命令1 1,如果执行不成功,则执行命令,如果执行不成功,则执行命令2 2;否则,若;否则,若命令命令1 1执行成功,则不执行命令执行成功,则不执行命令2 2。4.5.6 成组命令1 1 形式形式n n以花括号括起来的全部命令可视为语法上的一条命令,出以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。现在管道符的一边。$echo “Us
20、er Report for date .”;who;|pr$echo “User Report for date .”;who;|pr 使用花括号时在格式上应注意使用花括号时在格式上应注意:左括号左括号 “”后面应有一后面应有一个空格个空格;右括号右括号“”之前应有一个分号(之前应有一个分号(;)2 2()()形式形式 (echo Current directory is pwd .(echo Current directory is pwd .cd /home/mengqc;ls-l;cd /home/mengqc;ls-l;cp m1 em1&rm m1 cp m1 em1&rm m1 c
21、at em1)|pr cat em1)|prn二者存在重要区别:用花括号括起来的成组命令只是在本shell内执行命令表,不产生新的进程;而用圆括号括起来的成组命令是在新的子shell内执行,要建立新的子进程。4.6 shell变量4.6.1 用户定义的变量 1 1变变量量名名是是以以字字母母或或下下线线符符打打头头的的字字母母、数数字字和和下线符序列,并且大小写字母意义不同。下线符序列,并且大小写字母意义不同。2.2.定义变量并赋值的一般形式是:定义变量并赋值的一般形式是:变量名变量名=字符串字符串 3 3引用变量值引用变量值 在变量名前面加上一个符号在变量名前面加上一个符号“$”“$”n n
22、如果在赋给变量的值中要含有空格、制表符或换行符,那如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。么,就应该用双引号把这个字符串括起来。$names=Zhangsan Lisi Wangwu$names=Zhangsan Lisi Wangwu$echo$names$echo$names n n如果变量值须出现在长字符串的开头或者中间,为如果变量值须出现在长字符串的开头或者中间,为了使变量名与其后的字符区分开,避免了使变量名与其后的字符区分开,避免shellshell把它与把它与其它字符混在一起视为一个新变量,则应该用花括其它字符混在一起视为一个新变量,
23、则应该用花括号将该变量名括起来。例如,号将该变量名括起来。例如,$dir=/usr/meng$dir=/usr/meng$cat$dirqc/m1.c$cat$dirqc/m1.c4命令替换n n有两种形式的命令替换:一种是有两种形式的命令替换:一种是使用倒引号引用命使用倒引号引用命使用倒引号引用命使用倒引号引用命令令令令,其一般形式是:,其一般形式是:命令表命令表命令表命令表 n n另一种形式另一种形式另一种形式另一种形式是:是:$($(命令表命令表命令表命令表)如:如:$dir=$(pwd)$dir=$(pwd)$echo$(pwd;cd /home/mengqc;ls -d)$echo$
24、(pwd;cd /home/mengqc;ls -d)4.6.2 数组n nbashbash只提供一维数组,并且没有限定数组的大小。类似与只提供一维数组,并且没有限定数组的大小。类似与C C语言,数组元素的语言,数组元素的下标由下标由下标由下标由0 0开始编号开始编号开始编号开始编号。n n对数组元素赋值的一般形式是:对数组元素赋值的一般形式是:数组名数组名数组名数组名 下标下标下标下标 值值值值n n可以用可以用declaredeclare命令显式声明一个数组,一般形式是:命令显式声明一个数组,一般形式是:declare -a declare -a 数组名数组名数组名数组名n n读取数组元素
25、值的一般格式是:读取数组元素值的一般格式是:$数组名数组名数组名数组名 下标下标下标下标 n n定义一个数组并为其赋初值的一般形式是:定义一个数组并为其赋初值的一般形式是:数组名数组名数组名数组名=(=(值值值值1 1 值值值值2 2 值值值值n)n)其中,各个值之间以空格分开。其中,各个值之间以空格分开。n n若没有给出数组元素的下标,则数组名表示下标为若没有给出数组元素的下标,则数组名表示下标为0 0的数的数组元素组元素n n使用使用*或或当作下标,则会以数组中所有元素取代当作下标,则会以数组中所有元素取代*或或4.6.3 变量引用有效的变量引用表达式有以下形式:有效的变量引用表达式有以下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 课程 介绍 第四
限制150内