linux教程(第三版) 孟庆昌 ppt课件资料 第四章.ppt
《linux教程(第三版) 孟庆昌 ppt课件资料 第四章.ppt》由会员分享,可在线阅读,更多相关《linux教程(第三版) 孟庆昌 ppt课件资料 第四章.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 Linux shellLinux shell程程序设计序设计 主要内容主要内容 n nshell的主要特点、类型、建立和执行的方式n nbash变量的分类、定义形式及引用规则n n各种控制语句的格式、功能及流程n nbash中算术运算的使用n nbash函数的构成及使用规则n nbash中的内置命令4.1 shell概述概述4.1.1 shell的特点和主要版本的特点和主要版本n n作为命令解释程序作为命令解释程序n n一种高级程序设计语言,它有变量,关键字,有各种控制一种高级程序设计语言,它有变量,关键字,有各种控制语句,如语句,如if if、casecase、whilewh
2、ile、forfor等语句,支持函数模块,有等语句,支持函数模块,有自己的语法结构自己的语法结构1.shell1.shell的特点的特点的特点的特点l l组合新命令组合新命令l l直接使用直接使用shellshell的内置命令的内置命令l l结构化的程序模块结构化的程序模块l l可配置的环境可配置的环境l l 提供了文件名扩展字符提供了文件名扩展字符l l 灵活地使用数据流灵活地使用数据流l l 在后台执行命令在后台执行命令l l 高级的命令语言高级的命令语言2 2shellshell的种类的种类的种类的种类(1)Bourne shell(1)Bourne shell(简称(简称shsh)(2
3、)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.1 shell概述概述4.1.2 shell程序示例程序示例【例例4.14.1】由三条简单命令组成的由三条简单命令组成的shellshell程序(文件名程序(文件名为为ex1ex1)。)。$cat ex1datepwdcd .【例例4.24.2】带有控制结构的带有控
4、制结构的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 each subdirectory.if test$#=0if test$#=0then then ls ls .elseels
5、e for i for i do do ls ls -l$i|-l$i|grepgrep d d done donefi fi4.1 shell概述概述4.1.2 shell程序示例程序示例4.1 shell概述概述4.1.3 shell脚本的建立和执行脚本的建立和执行1.shell1.shell脚本的建立脚本的建立 建立建立shellshell脚本呢的步骤与建立普通文本文件的方式相同,可脚本呢的步骤与建立普通文本文件的方式相同,可以利用编辑器(如以利用编辑器(如vi vi)进行程序录入和编辑加工。)进行程序录入和编辑加工。2 2执行执行shellshell脚本的方式脚本的方式 执行执行she
6、llshell脚本的方式基本上有三种:脚本的方式基本上有三种:(1)(1)输入定向到输入定向到shellshell脚本脚本$bash$bash 脚本名脚本名4.1 shell概述概述4.1.3 shell脚本的建立和执行脚本的建立和执行2 2执行执行shellshell脚本的方式脚本的方式 (2)(2)以脚本名作为参数以脚本名作为参数 其一般形式是:其一般形式是:$bash$bash 脚本名脚本名 参数参数 如果以目前如果以目前shellshell(以(以 表示)执行一个表示)执行一个shellshell脚本,则可以使用脚本,则可以使用如下简便形式:如下简便形式:$脚本名脚本名 参数参数 (3
7、)(3)将将shellshell脚本的权限设置为可执行,然后在提示符下直接执脚本的权限设置为可执行,然后在提示符下直接执行它。行它。$chmodchmod a+xa+x ex2 ex2$PATH=$PATH:.$PATH=$PATH:.$ex2$ex2注意:此时该脚本所在的目录应被包含在命令搜索路径注意:此时该脚本所在的目录应被包含在命令搜索路径(PATH)(PATH)中中4.2 命令历史命令历史4.2.1 显示历史命令显示历史命令语法格式是:语法格式是:history option history option argarg n n如果不带任何参数,则如果不带任何参数,则historyhis
8、tory命令会显示历史命令的清单命令会显示历史命令的清单 n n如果如果history history 后给出一个正整数后给出一个正整数(如如50)50),就只显示历史表中的最,就只显示历史表中的最后后5050行命令行命令 n n如果如果historyhistory后给出一个文件名,就把它作为历史文件名后给出一个文件名,就把它作为历史文件名 n n常用的选项有:常用的选项有:l l -a -a 在历史文件中添加在历史文件中添加“新新”历史命令行。历史命令行。l l -n -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中
9、。l l -r -r 读取历史文件的内容,并把它作为当前的历史命令。读取历史文件的内容,并把它作为当前的历史命令。l l -w -w 把当前的历史写到历史文件中,覆盖原有内容。把当前的历史写到历史文件中,覆盖原有内容。l l -c -c 删除历史清单中所有的项。删除历史清单中所有的项。4.2 命令历史命令历史4.2.2 执行历史命令执行历史命令n n执行历史命令是命令替换之一,它以字符执行历史命令是命令替换之一,它以字符“!”开头、后随开头、后随1 1个或多个字符来定义用户所需的某种个或多个字符来定义用户所需的某种类型的历史命令类型的历史命令 基本的事件指定字格式基本的事件指定字格式 格格 式
10、式 意意 义义 !重复上一条命令,也就是重复上一条命令,也就是“!-1”!-1”!n!n 重新执行第重新执行第n n条历史命令条历史命令 !-n!-n 重新执行倒数第重新执行倒数第n n条历史命令。条历史命令。!-1!-1就等于就等于!string!string 重新执行以字符串重新执行以字符串stringstring开头的最近的历史命令行。开头的最近的历史命令行。!?string?!?string?重新执行最近的、包含字符串重新执行最近的、包含字符串stringstring的那条历史命令的那条历史命令 !#!#到现在为止所输入的整个命令行到现在为止所输入的整个命令行 4.2 命令历史命令历史
11、4.2.3 配置历史命令环境配置历史命令环境n n在默认方式下,在默认方式下,bashbash使用用户主目录下面的文件使用用户主目录下面的文件“.bash_historybash_history”来保存命令历史来保存命令历史 n n改变存放历史命令的文件改变存放历史命令的文件$HISTFILE=/home/$HISTFILE=/home/mengqc/.myhistorymengqc/.myhistory n n重新设定能够保留的命令个数重新设定能够保留的命令个数$HISTSIZE=600$HISTSIZE=600 4.3 名称补全名称补全 可以输入目录名或文件名的开头部分,然后按Tab键,L
12、inux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。4.4 别别 名名 4.4.1 定义别名定义别名一般语法格式为:alias name=valuen n如果没有指定参数,将在标准输出(屏幕)上显如果没有指定参数,将在标准输出(屏幕)上显示别名清单示别名清单 n n定义别名时,往往用单引号将它代表的内容括起定义别名时,往往用单引号将它代表的内容括起来,从而防止来,从而防止shellshell对其中的内容产生歧义,如对对其中的内容产生歧义,如对空格和特殊字符另作解释空格和特殊字符另作解释4.4 别别 名名 4.4.2 取消别名取消别名n n如果想取消先前定义的别名,可使用
13、如下命令:如果想取消先前定义的别名,可使用如下命令:unaliasunalias name namen n可以一次将所有的别名都从别名表中删除,使用可以一次将所有的别名都从别名表中删除,使用如下命令:如下命令:unaliasunalias-a-a 4.5 shell特殊字符特殊字符 4.5.1 通配符通配符1一般通配符n n*(星号),它匹配任意字符的(星号),它匹配任意字符的0 0次或多次出现次或多次出现 n n?(问号),它匹配任意一个字符(问号),它匹配任意一个字符n n (一一对对方方括括号号),其其中中有有一一个个字字符符组组。其其作作用用是是匹匹配配该该字字符组所限定的任何一个字符
14、符组所限定的任何一个字符 n n!(惊惊叹叹号号),如如果果它它紧紧跟跟在在一一对对方方括括号号的的左左方方括括号号()之之后后,则表示不在一对方括号中所列出的字符则表示不在一对方括号中所列出的字符 4.5 shell特殊字符特殊字符 4.5.1 通配符通配符2模式表达式 是是那那些些包包含含一一个个或或多多个个通通配配符的字符的字 n n*(模模式式表表)匹匹配配给给定定模模式式表表中中“模模式式”的的0 0次次或或多多次次出出现现,各模式之间以各模式之间以“”分开(下同)分开(下同)n n+(+(模式表模式表)匹配给定模式表中匹配给定模式表中“模式模式”的的1 1次或多次出现次或多次出现n
15、 n?(?(模模式式表表)匹匹配配模模式式表表中中任任何何一一种种“模模式式”的的0 0次次或或1 1次次出出现现n n(模式表模式表)仅匹配模式表中给定仅匹配模式表中给定“模式模式”的一次出现的一次出现 n n!(!(模模式式表表)除除给给定定模模式式表表中中的的一一个个“模模式式”之之外外,可可以以匹匹配其他任何东西配其他任何东西 4.5 shell特殊字符特殊字符 4.5.2 引号引号1 1双引号双引号n n由双引号括起来的字符(除由双引号括起来的字符(除$、倒引号(、倒引号()和反斜线)和反斜线()外)均作为普通字符对待。)外)均作为普通字符对待。2 2单引号单引号n n由单引号括起来
16、的字符都作为普通字符出现由单引号括起来的字符都作为普通字符出现3 3倒引号倒引号n n倒引号括起来的字符串被倒引号括起来的字符串被shellshell解释为命令行,在执行时,解释为命令行,在执行时,shellshell会先执行该命令行,并以它的标准输出结果取代整会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。个倒引号部分。n n倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线(引号必须用反斜线()将其转义。)将其转义。4.5 shell特殊字符特殊字符 4.5.3 输入输入/输出重定向符输出重定向符 自动打开三个标准
17、文件,即标准输入文件(自动打开三个标准文件,即标准输入文件(stdinstdin),),标准输出文件(标准输出文件(stdoutstdout)和标准出错输出文件()和标准出错输出文件(stderrstderr)。)。1 1输入重定向符输入重定向符 n n 一般形式是:命令一般形式是:命令 文件名文件名 如:如:$score file1$score 文件名文件名 如:如:$who$who abcabc3 3输出附加定向符输出附加定向符n n一般形式是:命令一般形式是:命令文件名文件名 如:如:$psps-l -l psfilepsfilen n输入和输出重新定向可以连在一起使用。例如:输入和输出
18、重新定向可以连在一起使用。例如:$wcwc -l -l outfileoutfile4 4即时文件定向符即时文件定向符n n即时文件的形式是:即时文件的形式是:命令命令 参数参数 标记符标记符 输入行输入行 标记符标记符 注意:注意:标记符要成对出现标记符要成对出现 n n例如:例如:mail$1 !mail$1 2 文件名文件名 命令命令 2 2 文件名文件名n n标准输出和标准错误输出可以重定向到同一个文件,一般标准输出和标准错误输出可以重定向到同一个文件,一般形式是:形式是:command$filecommand$file 等价于下面形式的命令:等价于下面形式的命令:command fi
19、le 2&1command file 2&14.5 shell特殊字符特殊字符 4.5.3 输入输入/输出重定向符输出重定向符4.5 shell特殊字符特殊字符 4.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
20、ach subdirectory.2 2管道线管道线 ls ls-l$HOME|-l$HOME|wcwc l l ls ls|grepgrep m?.cm?.c|wcwc l l3 3后台命令后台命令$gccgcc m1.c&m1.c&4.5 shell特殊字符特殊字符 4.5.5 命令执行操作符命令执行操作符1 1顺序执行顺序执行 在执行时,以分号隔开的各条命令从左到右依次执行在执行时,以分号隔开的各条命令从左到右依次执行 pwdpwd;who|;who|wcwc -l;-l;cdcd /usrusr/bin/bin2 2逻辑与逻辑与n n命令命令1&1&命令命令2 2n n其功能是,先执行
21、命令其功能是,先执行命令1 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 shell特殊字符特殊字符 4.5.6 成组命令成组命令1 1 形式形式 以花括号括起来的全部命令可视为语法上的一条命令,以花括号括起来的全部命令可视为语法上的一
22、条命令,出现在管道符的一边。出现在管道符的一边。$echo “User Report for date .”;who;|pr$echo “User Report for date .”;who;|pr 使用花括号时在格式上应注意使用花括号时在格式上应注意:左括号左括号“”后面应有一后面应有一个空格个空格;右括号右括号“”之前应有一个分号(之前应有一个分号(;)2 2()()形式形式 (echo Current directory is (echo Current directory is pwdpwd .cdcd /home/home/mengqcmengqc;ls ls-l;-l;cp m1
23、 em1&cp m1 em1&rmrm m1 m1 cat em1)|pr cat em1)|pr 二者存在重要区别:n n用花括号括起来的成组命令只是在本用花括号括起来的成组命令只是在本shellshell内执行内执行命令表,不产生新的进程;命令表,不产生新的进程;n n用圆括号括起来的成组命令是在新的子用圆括号括起来的成组命令是在新的子shellshell内执内执行,要建立新的子进程。行,要建立新的子进程。4.5 shell特殊字符特殊字符 4.5.6 成组命令成组命令4.6 shell变量变量4.6.1 用户定义的变量用户定义的变量 1 1变变量量名名是是以以字字母母或或下下线线符符打打
24、头头的的字字母母、数数字字和和下线符序列,并且大小写字母意义不同。下线符序列,并且大小写字母意义不同。2.2.定义变量并赋值的一般形式是:定义变量并赋值的一般形式是:变量名变量名=字符串字符串3 3引用变量值引用变量值 在变量名前面加上一个符号在变量名前面加上一个符号“$”$”n n如果在赋给变量的值中要含有空格、制表符或换行符,那如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。么,就应该用双引号把这个字符串括起来。$names=$names=ZhangsanZhangsan LisiLisi WangwuWangwu$echo$names$echo$n
25、ames n n如果变量值须出现在长字符串的开头或者中间,为了使变如果变量值须出现在长字符串的开头或者中间,为了使变量名与其后的字符区分开,避免量名与其后的字符区分开,避免shellshell把它与其它字符混在把它与其它字符混在一起视为一个新变量,则应该用花括号将该变量名括起来。一起视为一个新变量,则应该用花括号将该变量名括起来。例如,例如,$dir=/$dir=/usr/mengusr/meng$cat$dirqc/m1.c$cat$dirqc/m1.c4 4命令替换命令替换n n有两种形式的命令替换:一种是有两种形式的命令替换:一种是使用倒引号引用命令使用倒引号引用命令使用倒引号引用命令使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux教程第三版 孟庆昌 ppt课件资料 第四章 linux 教程 第三 ppt 课件 资料 第四
限制150内