收藏 分销(赏)

shell脚本教程详细讲解省名师优质课获奖课件市赛课一等奖课件.ppt

上传人:w****g 文档编号:10450555 上传时间:2025-05-28 格式:PPT 页数:80 大小:470.54KB 下载积分:18 金币
下载 相关 举报
shell脚本教程详细讲解省名师优质课获奖课件市赛课一等奖课件.ppt_第1页
第1页 / 共80页
shell脚本教程详细讲解省名师优质课获奖课件市赛课一等奖课件.ppt_第2页
第2页 / 共80页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,本幻灯片资料仅供参考,不能作为科学依据,如有不当之处,请参考专业资料。谢谢,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,本幻灯片资料仅供参考,不能作为科学依据,如有不当之处,请参考专业资料。谢谢,College of Information Science and Engineering,Shandong Agricultural University,SHELL,脚本编程,第1页,shell,脚本能提升用户操作和管理员进行系统管理效率,普通步骤,编辑器编写脚本程序,shell,做解释程序,非交互地执行脚本,两种执行方式:,用,sh,命令执行脚本文件,给脚本文件添加执行权限,用,./,命令执行,第2页,2,HELLO WORLD!,vi hello.sh,按,i,进入插入模式,输入,echo“hello world!”,:,输入,wq,保留退出,sh hello.sh,或者,chmod 755 hello.sh,./hello.sh,第3页,3,一、VI编辑器,VI,三种工作模式,VI,开启,VI,退出,VI,文本,编辑,VI,命令模式下操作,VI,行命令模式下操作,VI,编辑器使用,第4页,4,系统配置文件、shell脚本文件等都是文本文件,编辑它们都要使用文本编辑器。,在Linux系统中有各种文本编辑器,其中现有字符界面如VI、EMACAS等,也有图形界面如“附件”菜单下“文本编辑器(gedit)”等,用户能够依据自己喜好选择使用。,学习vi方法:vi命令太多且难以记忆,而实际上真正经常使用命令并不是太多,只要掌握几个关键并加以适当练习很快就上手使用vi。,第5页,5,为何选择,VI,就使用方便性而言,有比,vi,更加好编辑器,还要图形化,edit,,为何还要用,vi,?,历史久远,功效强大,在有些情况下系统中能够找到编辑器只有,vi,;,用户一旦熟悉后,使用非常方便;系统管理员使用正则表示式能够极大地提升工作效率,而学习,vi,也是掌握正则表示式有效路径。,因为,vi,版本不一样,其命令格式、功效和使用方法会有一些差异。,Shell,中执行,vi,命令,,RedHat,系统实际上是执行,vim,,它是传统,vi,增强版本,第6页,6,1,、,VI,三种工作模式,命令模式,开启,VI,默认进入命令模式。此时界面不能编辑,只能接收命令,(,键入命令看不到,),文件保留,退出,文本删除、复制、搜索等操作,输入模式,编辑模式,命令模式下用,i(sert),a(ppend),,,o,s,等均可进入该模式。按,esc,返回命令模式,行编辑模式,实际上也是命令模式一个,在,命令模式下输入冒号,进入一个命令行,,可显示地输入命令,(所以也有些书认为是两种工作模式)。,三种模式可自由切换,普通切换命令就是操作英文单词首字母,第7页,7,2,、,VI,开启,开启命令:vi my.txt,假如文件存在,则vi显示文件内容并等候用户命令。,假如指定文件不存在,则vi将通知用户这是未命名文件,并进入一个空白界面。,开启vi时都是默认处于命令模式。用户必须使用命令切换到文本输入模式才能进行输入编辑,或者可执行删除、复制等编辑命令。,vi,R file_name,,以只读方式打开文件,第8页,8,3,、,VI,退出,冒号进命令行模式下:,:q!,不存档强制退出。,:w,保留但不退出,,,w,(rite),后,可加所要存档文档名。,:wq,存档后退出。,命令模式下按,zz,,,功效与,:wq,相同。,:x,与,:wq,相同,命令模式:,ZZ,、,ZQ,保留,/,不保留退出,第9页,9,4、怎么编辑,必须从命令模式转入插入模式才能进行输入编辑,可用命令有,:,新增,(append),a,:从光标所在位置,后面,开始新增资料,A,:,从光标所在,行最终面,地方开始新增资料。,插入,(insert),i,:,从光标所在位置,前面,开始插入资料,I,:从光标所在,行,第一个非空白字元,前面,开始插入资料。,开始,(open),o,:在光标所,在行下,新增一列并进入输入模式。,O:,在光标所,在行上方,新增一列并进入输入模式。,冒号进入行命令模式,输入,set nu,可设置,vi,显示行号,第10页,10,5,、命令模式下操作:删除与修改,x,:,删除光标所在字符,dw,删除一个单词,dd,:删除光标所在行,s,:删除光标所在字节,并进入输入模式,#,表示数字,#x,删除几个字符,如,3x,#dw,删除几个单词,如,3dw,表示删除三个单词,#dd,删除多个行,如,3dd,表示删除光标行及光标下两行,d$,删除光标到行尾内容,d,光标键:,左:删除光标前面字符;,右:删除光标所在字符;,上:将当前行与上一行删除;,下:当前行与下一行删除,nd,上下光标键,:,删除当前行之上、下几行文本(包含当前行),u:,恢复刚才被修改文本,U,:恢复光标所在行全部修改,.:,重复上一次命令操作,第11页,11,命令模式下操作:,文本复制、粘贴,复制命令:,y,yy:,复制整行,yw:,复制光标所在单词,nyw,:复制包含光标所在,n,个单词,nyy:,复制包含当前行在内,n,行,粘贴命令,P,光标移动,h,、,j,、,k,、,l,nG,:移动到底,n,行行首,第12页,12,6,、行,命令模式下操作:,字符串查找、替换,:/string,搜索指定字符串。,按键,n,:继续进行搜索,假如写是斜杠(,/,):按,n,会从当前位置向后查找;假如写是问号(?),按,n,键则从当前位置向前查找,查找且替换,:%s /SEARCH/REPLACE,把文档中全部,SEARCH,替换成,REPLACE,;,:#,#s/SEARCH/REPLACE/g,号表示数字,表示从多少行到多少行,把,SEARCH,替换成,REPLACE,;,:s /SEARCH/REPLACE/g,把,当前光标,所在行中,SEARCH,单词,替换成,REPLACE,,并把全部,SEARCH,高亮显示,第13页,13,7,、设置,vi,全局配置文件位于,/etc/vim/vimrc(,或者,/etc/vimrc),也能够拥有自己独立配置文件,配置文件位“,/.vimrc”,,假如没有该文件,也能够直接用以下命令创建并编辑,比如:,set nu,显示行号,set ruler ,显示光标位置,set undolevel,显示光标位置,set smartindent,智能缩进,syntax on(,或,syn on),语法高亮,第14页,14,文本输入状态,命令状态,行编辑状态,按,ESC,键,按,A,I,S,C,O,等命令,按“:”键,执行非退出命令,如,w,三种模式间转换关系,第15页,15,案例练习,1.,请在,/tmp,这个目录下建立一个名为,vitest,目录;,2.,进入,vitest,这个目录当中;,3.,将,/etc/man.config,拷贝到本目录底下,4.,使用,vi,开启本目录下,man.config,这个档案;,5.,在,vi,中设定一下行号;,6.,移动到第,58,行,向右移动,40,个字符,请问您看到双引号内是什么目录?,7.,移动到第一行,而且向下搜寻一下“,bzip2”,这个字符串,请问他在第几行?,8.,接着下来,我要将,50,到,100,行之间,man,改为,MAN,,而且一个一个挑选是否需要修改,怎样下达指令?,9.,修改完之后,突然反悔了,要全部复原,有哪些方法?,10.,我要复制,51,到,60,行这十行内容,而且贴到最终一行之后;,11.,删除,11,到,30,行之间,20,行;,12.,将这个文件另存成一个,man.test.config,文件;,13.,到第,29,行,而且删除,15,个字符;,14.,储存后离开,第16页,16,1.mkdir/tmp/vitest,2.cd/tmp/vitest,3.cp/etc/man.config.,4.vi man.config,5.:set nu,6.,先按下,58G,再按下,40,会看到,/dir/bin/foo,这个字样在双引号内;,7.,先执行,1G,或,gg,后,直接输入,/bzip2,8.,直接执行,:50,100s/man/MAN/gc,即可,9.(1),简单方法能够一直按,u,恢复到原始状态,,(2),使用不储存离开,:q!,之后,再重新读取一次该文件;,10.51G,然后再,10yy,之后按下,G,到最终一行,再,p,粘贴,10,行,11.11G,之后,再给他,20dd,即可删除,20,行了;,12.:w man.test.config,13.29G,之后,再给他,15x,即可删除,15,个字符;,14.:wq!,第17页,17,二、SHELL变量与语法,Shell,概述,shell,变量和符号,shell,控制流程语法,shell,中输出重定向,脚本实例,SHELL,变量与语法,第18页,18,1,、,shell,基本元素,(,1,),#,!,/bin/bash,必须,指出,shell,类型,(,2,),#,注释,(,3,)变量,(,4,)控制,一、,Shell,概述,一个,shell,脚本,vi clearup.sh,#,!,/bin/bash,#this is clear,cd/var/log,cat/dev/null/var/log/messages,/dev/null Linux,中无限大垃圾回收站,echo Logs cleaned up.,第19页,19,2,、普通步骤:,(,1,)编辑文件,(,2,)保留文件,(,3,)将文件赋予可执行权限,(,4,)运行及排错,第20页,20,注意:,普通以,.sh,为文件后缀。没有也能执行。,常见两种执行方式,./,文件名,在当前目录下写明路径执行,要求文件必须有执行权限,如,chmod 755 run.sh,./run.sh,sh,文件名,sh run.sh,文件开头指定一个或多个解释脚本程序,shell,,如,#!/bin/bash,假如指定,注意,/bin,不要漏了“,/”,,不然用,./,方式执行会找不到路径。,不指定话普通默认以,/bin/sh,执行,shell,脚本,第21页,21,3,、,Shell,普通结构,shell,类型,函数,主过程,普通模板,abc.sh,#!/bin/bash shell,类型,#a simple shell script example,#a function,funciton sayhello(),函数,echo Enter Your name:,read name,读取来自键盘输入变量,echo Hello$name,echo programme starts here.,主过程,sayhello,echo programme ends.,第22页,22,1,、注释符,#,除了,#!/bin/bash,里,#,特殊,2,、美元符,$,变量符。与反斜杠转义符相反,使其后普通字符作为变量名,如,$a,表示变量,a,值。变量字符长度超出,1,个时,用,括起来,3,、单引号,被引发字符全部做普通字符,即全部原样,echo my$SHELL,二、Shell中特殊符号,第23页,23,4,、双引号,引号内内容,除,$,、转义符,、倒引号,这三个保留特殊功效,其它字符均做普通字符。,5,、倒引号,(,数字,1,键旁边那个键),引号内字符串当做,shell,命令行解释执行,得到结果取代整个倒引号括起来部分。,pwd,即,pwd,命令执行结果,$LOGNAME,系统变量,第24页,24,练习一下:区分下面几句,echo my home is$HOME,echo“my home is$HOME”,echo my home is$HOME,echo“my home is pwd”,echo my home is pwd,用于括起来,shell,命令,用于原样显示,第25页,25,6.,反斜线,反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(,)能够阻止,shell,把后面字符解释为特殊字符。,例,4,:,yuqunyuqun$echo “Filename is N0$*”,Filename is N0$*,注意:在单引号括起来字符串中,反斜线也成为普通字符,而失去转义字符功效。,第26页,26,三、变量,shell,变量 能够保留如路径名、文件名或者一个数字,当地变量 局部变量只在创建它们,Shell,中使用,能够在,shell,程序内任意使用和修改它们。,环境变量 能够在创建它们,Shell,及其派生出来任意子程序中使用。有些变量是用户创建,其它则是专用(比如,PATH,、,HOME),。是系统环境一部分,无须去定义它们,能够在,shell,程序中使用它们。还能在,shell,中加以修改。,内部变量 由系统提供。与环境变量不一样,但用户不能修改它们。,第27页,27,当地变量和环境变量对比,第28页,28,1,、当地变量(局部变量、用户变量),当地变量 在用户现在,shell,生命期脚本中使用,变量名,=,值,注意:,(,1,)等号两边不能够有空格,(,2,)取值包含空格,必须用双引号括起来,(,3,),Shell,变量能够用大小写字母,区分大小写,第29页,29,变量申明和使用,(,1,)变量是弱类型(不用申明类型),(,2,)变量申明及赋值格式,变量,=,值,(等号两边不能有空格),(,3,)变量引用,$,变量名,$,变量名,变量名为,1,个字符时提议使用方式一,多出一个字符时提议使用方式二,举例,:$a,$abc,第30页,30,显示变量,echo,命令能够显示单个变量取值,变量名前加,$,echo$Name,echo$name,echo$nameare,echo$name are,输出引用变量时加,比很好,第31页,31,去除变量,unset,变量名,举例:,echo$name,unset name,(,注意:,name,前没有,$),显示当地全部变量,set,第32页,32,设置只读变量,设置变量时,不想再改变其值,能够将之设为只读变量,变量名,=,值,readonly,变量名,第33页,33,2,、环境变量,环境变量用于全部用户进程(通常称为子进程)。登陆进程称为父进程,经过,pstree,能够查看,环境变量能够用于全部子程序,着包含编辑器、脚本和应用,举例:,vi a.sh,#!/bin/bash,#,检测环境变量,echo,家目录是,$HOME,环境变量能够在命令行中设置,但用户注销时这些值将丢失,环境变量均为大写,必须用,export,命令导出,第34页,34,设置环境变量,variable-name=value,export variable-name(,环境变量名大写,),显示环境变量,env,能够看到全部环境变量,echo$,环境变量名(显示一个变量),去除环境变量,unset,环境变量名,第35页,35,HOME,:代表使用者家目录。,cd,去到使用者家目录 或者利用,cd,就能够直接回到使用者家目录了。,PS1,:,shell,主提醒符,SHELL,:当前这个环境使用,SHELL,是哪个程序?假如是,bash,话,预设是,/bin/bash,PWD,:用户当前工作目录路径。它指出用户当前在,Linux,文件系统中处于什么位置。它是由,Linux,自动设置,HISTSIZE,:这个与“历史命令”相关,曾经下达过指令能够被系统统计下来,而统计,“,数目”则是由这个值来设定。,ENV,:这个使用者所使用个性化环境设置文件读取文件。,MAIL,:当我们使用,mail,这个指令在收信时,系统会去读取邮件信箱文件(,mailbox),。,PATH,:就是执行文件搜寻路径,目录与目录中间以冒号,(:),分隔,因为文件搜寻是依序由,PATH,变量内目录来查询,所以,目录次序也是主要喔。,LANG,:语系文件,很多数据都会用到他,当出现编码错误时候往往需要设置它,汉字编码是,zh_CN.UTF8,第36页,36,PATH示例,举例:配置,java,环境变量可使任何目录都能执行,javac,命令,(,1,)需要配置,Java,环境变量,JAVA_HOME(JDK,存放路径),CLASSPATH,(字节码位置,让,JVM,知道要运行类字节码放在哪),PATH(,让,OS,找到,javac,等命令存放位置),(,2,)在,Linux,下配置它们,打开终端,vi.bash_profile,在配置文件中追加内容,JAVA_HOME=JDK,存放位置,CLASSPATH=.(,当前目录),PATH=$JAVA_HOME/BIN:$PATH(,不覆盖原来内容,追加),export JAVA_HOME CLASSPATH PATH,保留,让配置起作用(,source.bash_profile,或者注销,),第37页,37,让环境变量修改在退出,shell,再次登录时仍有效,需要在相关配置文件中修改,Bash,初始化文件有:,/etc/profile,、,/.bash_profile,、,/.bash_login,、,/.profile,、,/.bashrc,、,/etc/bashrc,/etc/profile,/.bash_profile,/.bashrc,/etc/bashrc,/.bash_login,/.profile,第38页,38,/etc/profile,存放一些全局(共有)变量,不论哪个用户,登录时都会读取该文件。通常设置一些,Shell,变量,PATH,USER,HOSTNAME,和,HISTSIZE,等,/.bash_profile:,每个用户都可使用该文件输入专用于自己使用,shell,信息,当用户登录时,该文件仅仅执行一次,!,默认情况下,他设置一些环境变量,执行用户,.bashrc,文件,.,/.bashrc:,该文件包含专用于你,bash shell,bash,信息,当登录时以及每次打开新,shell,时,该该文件被读取,.,/etc/bashrc:,为每一个运行,bash shell,用户执行此文件,.,当,bash shell,被打开时,该文件被读取,.,第39页,39,上述配置文件作用,1,)登录,Linux,先开启系统配置文件,/etc/profile,,并从,/etc/profile.d,目录配置文件中搜集,shell,设置,为系统,每个用户,设置环境信息。,2,)用户配置文件,/.bash_profile,,每个用户,专用于自己使用,shell,信息,仅用户,登录时执行一次,!,默认情况下,此文件经过脚本执行同目录下用户,.bashrc,文件。,3,),/.bashrc,文件包含专用于用户,bash shell,bash,信息,登录及每次打开新,shell,时都会执行,。里面又会调用,/etc/bashrc,第40页,40,设置用户自己环境变量,在,/home/user/.bash_profile,中定义下句,会怎样?,alias la=ls a|grep“.*”,答:,user,下次再登陆,其,shell,会自动建立一个别名命令,la,,功效为查看当前目录下名字以,.,开头文件。,写在,/.bash_profile,中,需重新登录才能有效。除非运行,source.bash_profile,使其马上有效。,写在,/.bashrc,中,则打开新终端中就有效,区分:,bash_profile,只在会话开始时候读取一次,而,bashrc,则每次打开终端时都会读取,按照传统,定义变量如,PATH,放到,.bash_profile,中,而像别名函数等放在,.bashrc,中,不过,.bash_profile,先于,.bashrc,读取内容,也可全放入,.bashrc,中,习惯用各自配置文件,编辑不需要,root,权限,第41页,41,3,、内部变量,内部变量是,Linux,所提供一个特殊类型变量,这类变量在程序中用来作出判断。在,shell,程序内这类变量值是不能修改。,部分内部变量是:,$#,传送给,shell,程序位置参数数量,$?,最终命令完成码或者在,shell,程序内部执行,shell,程序(返回值),$0shell,程序名称,$*,调用,shell,程序时所传送全部参数单字符串,,“,参数,1”“,参数,2”,形式保留参数,第42页,42,$“,参数,1”“,参数,2”,形式保留参数,$n,第,n,个参数,$,本程序,PID,$!,上一个命令,PID,第43页,43,使用,shell,预定义变量脚本举例,第44页,44,4,位置参数(,1,),位置参数及引用,能够编写一个,shell,脚本,当从命令行或者从其它,shell,脚本中调用它时候,这个脚本接收若干参数。这些选项是经过,Linux,作为位置参数(,positional parameter,)提供给,shell,程序。在,shell,脚本中应有变量,接收实参,这类变量名称很尤其,分别是,1,,,2,,,3,,,,这类变量称为位置变量。位置参数,1,存放在位置变量,1,中,位置参数,2,存放位置变量,2,中,,,在程序中能够使用,$1,,,$2,,,来访问,,举例:,第45页,45,(,2,)用,set,命令为位置参数赋值,在,shell,程序中能够利用,set,命令为位置参数赋值或重新赋值。,普通格式:,set ,参数表,说明:该命令后面无参数时,将显示系统中系统变量值;假如有参数将分别给位置参数赋值。,第46页,46,四、变量表示式,1,、条件判断命令,test,test n1-,参数,n2,(或,参数 表示式),真返回,0,,假返回,1,。,(,1,)整数,比较运算符见右表,test 1,lt,4,#,判断,10,4,、其它参数,-a,逻辑与,-o,逻辑或,!逻辑非,第50页,50,3、控制流程,shell,运算符和,C,语言基本类似,也有分支、循环流程控制。,简单举例,后面例子包括命令,seq,命令:产生,1-9,数字序列,比如,seq 1 4,expr,命令:对表示式求值,直接求值命令:对被括起来表示式求值,第51页,51,表示式求值:,$expr 1+3,$expr 2 1,$expr 1*3,使用*要加转义符,$echo expr 1+3,注意:表示式中,数字和运算符指教要有空格,出现在语句中要加反引号,第52页,52,1,)分支结构,if,分支,if,$#-eq 0,then,echo“,输入了,0,个参数”,elif,$#-lt 1,then echo“,输入了多个参数”,else echo“,输入了,1,个参数”,fi,case,case“$#”,in,0,),echo“,输入了,0,个参数,”,;,1,),echo“,输入了,1,个参数”,;,*,),echo“,输入了多个参数”,;,esac,每个分支条件后必须以两个分号结尾,第53页,53,2,)循环结构,for,例子,输出,100,内,10,倍数,for i in seq 1 9,do,echo expr$i*10,done,或写,echo$(expr$i*10),乘号前加转义符,,与数字间要有空格。,第54页,54,read,变量,1,变量,2,能够从键盘上读取多个变量值,用户输入数据时,以空格或者,Tab,键作为分隔。,假如输入数据个数不够,则从左到右对应赋值,没有输入变量为空;,假如输入数据个数超了,则从左到右对应赋值,最终一个变量被赋予剩下全部数据。,第55页,55,read a b,for i in seq$a$b,do,echo expr$i*10,done,输出,a,到,b,序列数各数,10,倍数,第56页,56,while,例子,求,1,到,100,和,i=1,sum=0,while$i le 100,do,sum=$sum+$i,i=$i+1,done,echo$sum,:直接求值命令,第57页,57,五 命令结果重定向,1stdout,标准输出,2stderr,标准错误,输出重定向到文件,file,,终端上只能看到标准错误:,#,命令,file,错误重定向到文件,file,,终端上只能看到标准输出:,#,命令,2file,标准输出和标准错误都重定向到,file,,终端上看不到任何信息:,#,命令,file,2&1,(等于,#,命令,1file,2&1,),第58页,58,屏蔽命令任何输出:,/dev/null 2&1,cp/etc/my.conf,/dev/null 2&1,/dev/null,空设备,此句命令结果是:,cp,命令没有目标文件,应该输犯错误。,2&1,表示错误重定向指向标准输出。,/dev/null,又使标准输出重定向到空,就是不要输出信息,即:一个错误命令执行,什么功效都不实现,且没有任何信息或错误提醒输出。,第59页,59,1,),command file 2file,2,),command file 2&1,有什么区分?,1,)写法,stdout,和,stderr,都直接送到,file,中,会出现两个同抢占,file,管道,,file,会被打开两次,stdout,和,stderr,输出信息会相互覆盖。,2,)写法将,stdout,直接送向,file,stderr,继承,1,管道后,再被送往,file,此时,file,只被打开了一次,也只使用了一个管道,FD1,它包含了,stdout,和,stderr,内容。从,IO,效率上,前一条命令效率要比后面一条命令效率要低,所以在编写,shell,脚本时候,惯用,command file 2&1,这么写法。,還能够:,命令 2file&2,命令&/dev/null,第60页,60,*有趣,IO Redirection,$cat file,文件內容会被洗掉,$cat file,此处会没有内容,stdout,、,stderr,管道先准备好才会从,stdin,读内容,file,会先清空,file,,然後才读进,/dev/nulldosleep 300doneecho“$user has logged on!”fi,说明:(,1,)假如没有从命令行输入用户名,则测试,$#-ne 1,为“真”,显示使用方法提醒信息。(,2,)程序中,until,语句,expression,(循环条件)是,who|grep“$user”,命令执行返回码,假如没有找到指定用户名,返回码为非,0,(为“假”),则用,sleep,命令暂停执行程序,5,分钟;找到后返回码为,0,(为“真”),则终止循环并显示该用户已经登录信息。(,3,)采取重定向到,/dev/null,空文件目标是不显示查找到用户其它信息。,每隔,5,分钟检验指定用户是否登录系统,第70页,70,试验8.1,关键代码提醒,1)checkuser,a=cut-d:-f1/etc/passwd|grep-c“$1$”,if$a-gt 0,2)printnumber,判断参数是否是数,a=$(echo$1|bc 2/dev/dull),if$a!=$1,$1,参数不是数,bc,计算器,进制转换命令,可自学:,4,个,linux,筛选数据惯用工具,cut,grep,awk,sed,第71页,71,截取小数点前后子串,$,变量名,匹配模式,截掉匹配子串后剩下字符串是结果,str1=$a%.*,str2=$a#*.,#,从左向右,,%,从右向左,搜索最长匹配符号写两次,最短匹配写,1,次,$MYVAR=foodforthought.jpg$echo$MYVAR#*forthought.jpg$echo$MYVAR#*foodforthought.jpg,$MYFOO=chickensoup.tar.gz$echo$MYFOO%.*chickensoup$echo$MYFOO%.*chickensoup.tar,指定字符偏移和长度截出子串,$EXCLAIM=cowabunga,$echo$EXCLAIM:0:3cow,#,从第一个字符开始,截,3,个字符,$echo$EXCLAIM:3:7 abunga,#,从第四个字符开始,截,7,个字符,第72页,72,作 业,练习本课件给出例子。熟练,vi,编辑器,熟悉脚本语法。,试验,8.1,第73页,更多练习,练习,vi,编辑器使用并熟练掌握它。,简明说明,shell,功效,惯用,shell,有哪些?,查看系统,PATH,环境变量,了解可执行文件路径信息,怎样实现用系统当前日期和时间作为第一级提醒符?,怎样实现用,alias,命令将,cp,命令设置别名为,copy,?,简明说明,shell,程序结构。,简明说明运行,shell,脚本程序几个方法。,假如你希望编写脚本程序在任何一个目录下都能直接执行(输入程序名后回车),则应该怎样处理?,第74页,74,变量赋值方式有几个?各用在哪些场所?,写出几个与命令行参数相关变量并简明说明怎样在脚本中引用。,以下,shell,脚本文件存在什么错误?,echo what month is this?,read$month,echo$month is as good a month as any.,编写一个,shell,程序,它输出一个,1,到,10,之间平方和立方对照表。,编写一个名为,reverse,shell,程序,将输入若干个命令行参数以逆序输出。,用其它循环语句编程实现本题功效。,第75页,75,编写一个,shell,脚本程序,它能依据输入命令行参数采取不一样动作:假如是目录,则列出该目录中文件;假如是可执行文件,则用,shell,执行之;假如是可读文件,则分屏显示其内容。,编写一个求平方和求立方函数,在,shell,程序中调用它实现第十四题功效。,编写一个弹出式菜单,shell,程序并实现其简单菜单功效:,*,MENU *1.copy 2.rename *3.remove 4.find *5.exit *,即用户按下数字,1,,则提醒用户输入源和目标文件名后执行复制;输入数字,2,,则提醒用户输入要更名文件或目录名后执行更名操作;输入数字,3,和,4,分别执行删除和查找操作;输入数字,5,,则退出该菜单,shell,程序执行。,第76页,76,附:vi惯用命令,命令模式惯用命令,命令,说明,功效键,命令,说明,功效键,h,向左移一个字符,Ctrl+f,(,b),向后,(,前)翻一页,PageDown(Pageup),l,向右移一个字符,H,移至窗口第一行,j,向上移一个字符,M,移至窗口中间行,k,向下移一个字符,L,移至窗口最终一行,0,移动到该行首,Home,G,移至文件最终行,$,移动到该行之末,End,nG,移至文件第,n,行,第77页,77,命令,说明,命令,说明,x,删除光标后字符,s,删除光标所在字符,并进入输入状态,X,删除光标前字符,S,删除光标所在行,并进入输入状态,dd,删除光标所在行,u,恢复刚才被修改文本,ndd,删除包含光标所在行n行文本,U,恢复光标所在行全部修改,r,修改光标所在字符,.,重复上一次命令操作,R,进入替换状态,直至按,Esc,回到指令模式状态,删除与修改,第78页,78,命令,说明,命令,说明,Y,复制到当前行编辑缓冲区,p,将编辑缓冲区内容粘贴到光标后一行,nY,复制当前行开始n行至编辑缓冲区,P,将编辑缓冲区内容粘贴到光标前一行,第79页,79,末行命令模式惯用命令,命令,说明,命令,说明,:q,结束编辑,:x,若有修改存盘退出,:q!,强制离开,vi,,放弃存盘,:e filename,编辑名为filename文件,:w,存盘,:set nu,显示行号,:w filename,将编辑内容为名filename文件,:set nonu,不显示行号,:wq,存盘并退出,/exp,往前查找字符串,exp,ZZ,存盘并退出,?exp,往后查找字符串,exp,第80页,80,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服