【精品】linux shell程序设计(可编辑.ppt
《【精品】linux shell程序设计(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】linux shell程序设计(可编辑.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux shell程序设计 主要内容主要内容 n nshell的主要特点、类型、建立和执行的方式n nbash变量的分类、定义形式及引用规则n n各种控制语句的格式、功能及流程n nbash中算术运算的使用n nbash函数的构成及使用规则n nbash中的内置命令主要内容主要内容n n4.1 shell 概述n n4.2 命令历史n n4.3 名称补全n n4.4 别名n n4.5 shell特殊字符n n4.6 shell变量n n4.7 参数置换变量n n4.8 算术运算n n4.9 控制结构n n4.10 函数n n4.11 作业控制n n4.12 shell脚本调试4.1 she
2、ll概述概述4.1.1 shell的特点和主要版本的特点和主要版本n n作为命令解释程序作为命令解释程序n n一种高级程序设计语言,它有变量,关键字,有各种控制一种高级程序设计语言,它有变量,关键字,有各种控制语句,如语句,如if if、casecase、whilewhile、forfor等语句,支持函数模块,有等语句,支持函数模块,有自己的语法结构自己的语法结构1.shell1.shell的特点的特点的特点的特点l l组合新命令组合新命令l l直接使用直接使用shellshell的内置命令的内置命令l l结构化的程序模块结构化的程序模块l l可配置的环境可配置的环境l l 提供了文件名扩展字
3、符提供了文件名扩展字符l l 灵活地使用数据流灵活地使用数据流l l 在后台执行命令在后台执行命令l l 高级的命令语言高级的命令语言2 2shellshell的种类的种类的种类的种类(1)Bourne shell(1)Bourne shell(简称(简称shsh)(2)C shell(2)C shell(简称(简称cshcsh)(3)Korn shell(3)Korn shell(简称(简称kshksh)(4)Bourne Again shell(4)Bourne Again shell(即即bash)bash)4.1 shell概述概述4.1.1 shell的特点和主要版本的特点和主要版本
4、4.1 shell概述概述4.1.3 shell脚本的建立和执行脚本的建立和执行1.shell1.shell脚本的建立脚本的建立 建立建立shellshell脚本呢的步骤与建立普通文本文件的方式相同,可脚本呢的步骤与建立普通文本文件的方式相同,可以利用编辑器(如以利用编辑器(如vi vi)进行程序录入和编辑加工。)进行程序录入和编辑加工。2 2执行执行shellshell脚本的方式脚本的方式 执行执行shellshell脚本的方式基本上有脚本的方式基本上有三种三种:(1)(1)输入定向到输入定向到shellshell脚本脚本$bash$bash 脚本名脚本名4.1 shell概述概述4.1.3
5、 shell脚本的建立和执行脚本的建立和执行2 2执行执行shellshell脚本的方式脚本的方式 (2)(2)以脚本名作为参数以脚本名作为参数 其一般形式是:其一般形式是:$bash$bash 脚本名脚本名 参数参数 如果以目前如果以目前shellshell(以(以 表示)执行一个表示)执行一个shellshell脚本,则可以使用脚本,则可以使用如下简便形式:如下简便形式:$脚本名脚本名 参数参数 (3)(3)将将shellshell脚本的权限设置为可执行,然后在提示符下直接执脚本的权限设置为可执行,然后在提示符下直接执行它。行它。$chmod a+x ex1$chmod a+x ex1$P
6、ATH=$PATH:.$PATH=$PATH:.$ex1$ex1注意:此时该脚本所在的目录应被包含在命令搜索路径注意:此时该脚本所在的目录应被包含在命令搜索路径(PATH)(PATH)中中4.2 命令历史命令历史4.2.1 显示历史命令显示历史命令语法格式是:语法格式是:history history option arg option arg n n如果不带任何参数,则如果不带任何参数,则historyhistory命令会显示历史命令的清单命令会显示历史命令的清单 n n如果如果history history 后给出一个正整数后给出一个正整数(如如50)50),就只显示历史表中的最,就只显示
7、历史表中的最后后5050行命令行命令 n n常用的选项有:常用的选项有:l l -a -a 在历史文件中添加在历史文件中添加“新新”历史命令行。历史命令行。l l -n -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。l l -r -r 读取历史文件的内容,并把它作为当前的历史命令。读取历史文件的内容,并把它作为当前的历史命令。l l -w -w 把当前的历史写到历史文件中,覆盖原有内容。把当前的历史写到历史文件中,覆盖原有内容。l l -c -c 删除历史清单中所有的项。删除历史清单中所有的项。4.2 命令历史命令
8、历史4.2.2 执行历史命令执行历史命令n n执行历史命令执行历史命令是命令替换之一,它以字符是命令替换之一,它以字符“!”开开头、后随头、后随1 1个或多个字符来定义用户所需的某种类个或多个字符来定义用户所需的某种类型的历史命令型的历史命令 基本的事件指定字格式基本的事件指定字格式 格格 式式 意意 义义 !重复上一条命令,也就是重复上一条命令,也就是“!-1”“!-1”!n!n 重新执行第重新执行第n n条历史命令条历史命令 !-n!-n 重新执行倒数第重新执行倒数第n n条历史命令。条历史命令。!-1!-1就等于就等于!string!string 重新执行以字符串重新执行以字符串stri
9、ngstring开头的最近的历史命令行。开头的最近的历史命令行。!?string?!?string?重新执行最近的、包含字符串重新执行最近的、包含字符串stringstring的那条历史命令的那条历史命令 !#!#到现在为止所输入的整个命令行到现在为止所输入的整个命令行 4.2 命令历史命令历史4.2.3 配置历史命令环境配置历史命令环境n n在默认方式下,在默认方式下,bashbash使用用户主目录下面的文件使用用户主目录下面的文件“.bash_history”“.bash_history”来保存命令历史来保存命令历史 n n改变存放历史命令的文件改变存放历史命令的文件$HISTFILE=/
10、home/mengqc/.myhistory$HISTFILE=/home/mengqc/.myhistoryn n重新设定能够保留的命令个数重新设定能够保留的命令个数$HISTSIZE=600$HISTSIZE=600 4.3 名称补全名称补全 可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。4.4 别别 名名 4.4.1 定义别名定义别名一般语法格式为:alias name=valuen n如果没有指定参数,将在标准输出(屏幕)上显如果没有指定参数,将在标准输出(屏幕)上显示别名清单示别名清单 n n定义别名时
11、,往往用单引号将它代表的内容括起定义别名时,往往用单引号将它代表的内容括起来,从而防止来,从而防止shellshell对其中的内容产生歧义,如对对其中的内容产生歧义,如对空格和特殊字符另作解释空格和特殊字符另作解释4.4 别别 名名 4.4.2 取消别名取消别名n n如果想取消先前定义的别名,可使用如下命令:如果想取消先前定义的别名,可使用如下命令:unalias name unalias namen n可以一次将所有的别名都从别名表中删除,使用可以一次将所有的别名都从别名表中删除,使用如下命令:如下命令:unalias-a unalias-a 4.5 shell特殊字符特殊字符 4.5.1
12、通配符通配符1 1一般通配符一般通配符n n*(星星号号),它它匹匹配配任任意意字字符符的的0 0次次或或多多次次出出现现 ,f*,f*可可以以匹匹配配f,fa,f1,fa2,ffa.sf,fa,f1,fa2,ffa.sn n?(问问号号),它它匹匹配配任任意意一一个个字字符符,f?,f?可可以以匹匹配配f1,fa,fb,f1,fa,fb,不不能能匹匹配配fabc,f12fabc,f12n n (一一对对方方括括号号),其其中中有有一一个个字字符符组组。其其作作用用是是匹匹配配该该字字符符组组所所限限定定的的任任何何一一个个字字符符.fabcdfabcd可可以以匹匹配配fa,fb,fc,fdf
13、a,fb,fc,fd,不不能能匹匹配配f1,fa1,fabf1,fa1,fab等,也可写作等,也可写作fa-d.fa-d.n n!(惊惊叹叹号号),如如果果它它紧紧跟跟在在一一对对方方括括号号的的左左方方括括号号()之之后后,则则表表示示不不在在一一对对方方括括号号中中所所列列出出的的字字符符 f!1-9.cf!1-9.c表表示示以以f f开开头头,后面一个字符不是数字后面一个字符不是数字1-91-9的的.c.c文件名。文件名。4.5 shell特殊字符特殊字符 4.5.1 通配符通配符2模式表达式 是那些包含一个或多个通配符的字 n n*(*(模模式式表表)匹匹配配给给定定模模式式表表中中“
14、模模式式”的的0 0次次或或多多次次出出现现,各模式之间以各模式之间以“”分开(下同)分开(下同)file*(.c|.o)file*(.c|.o)可可匹匹配配file,file,file.c,file.c,file.o,file.o,file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.c.o,file.o.cfile.o.c等,但不能匹配等,但不能匹配file.h,file.sfile.h,file.s等。等。n n+(+(模式表模式表)匹配给定模式表中匹配给定模式表中“模式模式”的的1 1次或多次出现次或多次出现file+(.c|.o)file
15、+(.c|.o)可可匹匹配配file.c,file.c,file.o,file.o,file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.c.o,file.o.cfile.o.c等等,但不能匹配但不能匹配filefile等。等。4.5 shell特殊字符特殊字符 4.5.1 通配符通配符2模式表达式n n?(?(模式表模式表)匹配模式表中任何一种匹配模式表中任何一种“模式模式”的的0 0次或次或1 1次出现次出现filefile?(.c|.o)(.c|.o)可可匹匹配配file,file,file.c,file.c,file.o,file.o,但但
16、不不能能匹匹配配file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.c.o,file.o.cfile.o.c等等n n(模式表模式表)仅匹配模式表中给定仅匹配模式表中给定“模式模式”的一次出现的一次出现 file(.c|.o)file(.c|.o)可可 匹匹 配配 file.c,file.c,file.o,file.o,但但 不不 能能 匹匹 配配 filefile,file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.o.cfile.c.o,file.o.c等等n n!(!(模模式式表表)除除给给定
17、定模模式式表表中中的的一一个个“模模式式”之之外外,可可以以匹匹配配其其他任何东西他任何东西 4.5 shell特殊字符特殊字符 4.5.2 引号引号1 1双引号双引号n n由双引号括起来的字符(除由双引号括起来的字符(除$、倒引号(、倒引号()和反斜线()和反斜线()外)均作为普通字符对待。)外)均作为普通字符对待。2 2单引号单引号n n由单引号括起来的字符由单引号括起来的字符全都全都全都全都作为普通字符出现作为普通字符出现3 3倒引号倒引号n n倒引号括起来的字符串被倒引号括起来的字符串被shellshell解释为命令行,在执行时,解释为命令行,在执行时,shellshell会先执行该命
18、令行,并以它的标准输出结果取代整会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。个倒引号部分。n n倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线(引号必须用反斜线()将其转义。)将其转义。4.5 shell特殊字符特殊字符 4.5.3 输入输入/输出重定向符输出重定向符 自动自动打开三个标准文件,即打开三个标准文件,即标准输入文件标准输入文件(stdinstdin),),标准输出文件标准输出文件(stdoutstdout)和)和标准错误输出文件标准错误输出文件(stderrstderr)。)。1 1输入重定向符输
19、入重定向符 n n 一般形式是:命令一般形式是:命令 文件名文件名 如:如:$score file1$score 文件名文件名 如:如:$who abc$who abc3 3输出附加定向符输出附加定向符n n一般形式是:命令一般形式是:命令文件名文件名 如:如:$ps-l psfile$ps-l psfilen n输入和输出重新定向可以连在一起使用。例如:输入和输出重新定向可以连在一起使用。例如:$wc -l outfile$wc -l outfile4 4即时文件定向符即时文件定向符n n即时文件的形式是:即时文件的形式是:命令命令 参数参数 标记符标记符 输入行输入行 标记符标记符 注意:
20、注意:标记符要成对出现标记符要成对出现 n n例如:例如:mail$1 !mail$1 2 文件名文件名 命令命令 2 2 文件名文件名n n标准输出标准输出和和标准错误输出标准错误输出可以重定向到可以重定向到同一个文件同一个文件,一般,一般形式是:形式是:command$file command$file 等价于等价于下面形式的命令:下面形式的命令:command file 2&1 command file 2&14.5 shell特殊字符特殊字符 4.5.3 输入输入/输出重定向符输出重定向符4.5 shell特殊字符特殊字符 4.5.4 注释、管道线和后台命令注释、管道线和后台命令 1
21、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 each 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
22、&$gcc m1.c&4.5 shell特殊字符特殊字符 4.5.5 命令执行操作符命令执行操作符1 1顺序执行顺序执行 在执行时,以分号隔开的各条命令从左到右依次执行在执行时,以分号隔开的各条命令从左到右依次执行 pwd;who|wc -l;cd /usr/bin pwd;who|wc -l;cd /usr/bin2 2逻辑与逻辑与n n命令命令1&1&命令命令2 2n n其功能是,先执行命令其功能是,先执行命令1 1,如果执行成功,才执行命令,如果执行成功,才执行命令2 2;否则,若命令否则,若命令1 1执行不成功,则不执行命令执行不成功,则不执行命令2 2。3 3逻辑或逻辑或n n命令命
23、令1|1|命令命令2 2n n其功能是,先执行命令其功能是,先执行命令1 1,如果执行不成功,则执行命令,如果执行不成功,则执行命令2 2;否则,若命令;否则,若命令1 1执行成功,则不执行命令执行成功,则不执行命令2 2。4.5 shell特殊字符特殊字符 4.5.6 成组命令成组命令1 1 形式形式 以花括号括起来的全部命令可视为语法上的一条命令,以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。出现在管道符的一边。$echo “User Report for date .”;who;echo “User Report for date .”;who;|pr|pr 使用花
24、括号时在格式上应注意使用花括号时在格式上应注意:左括号左括号“”“”后面应有一后面应有一个空格个空格;右括号右括号“”“”之前应有一个分号(之前应有一个分号(;)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 cat em1 cat em1)|pr|pr 二者存在重要区别:n n用花括号括起来的成组命令只是在本用花括号括起来的成组命令只是在本she
25、llshell内执行内执行命令表,不产生新的进程;命令表,不产生新的进程;n n用圆括号括起来的成组命令是在新的子用圆括号括起来的成组命令是在新的子shellshell内执内执行,要建立新的子进程。行,要建立新的子进程。4.5 shell特殊字符特殊字符 4.5.6 成组命令成组命令4.6 shell变量变量4.6.1 用户定义的变量用户定义的变量 1 1变变量量名名是是以以字字母母或或下下线线符符打打头头的的字字母母、数数字字和和下下线符序列,并且大小写字母意义不同。线符序列,并且大小写字母意义不同。2.2.定义变量并赋值定义变量并赋值的一般形式是:的一般形式是:变量名变量名=字符串字符串,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 【精品】linux shell程序设计可编辑 linux shell 程序设计 编辑
限制150内