shell脚本教程详细讲解.ppt
《shell脚本教程详细讲解.ppt》由会员分享,可在线阅读,更多相关《shell脚本教程详细讲解.ppt(80页珍藏版)》请在咨信网上搜索。
1、College of Information Science and Engineering Shandong Agricultural University SHELL SHELL脚本编程脚本编程2shell脚本能提高用户操作和管理员进行系统管理的效率,一般步骤1.编辑器编写脚本程序2.shell做解释程序,非交互地执行脚本,两种执行方式:1.用sh命令执行脚本文件2.给脚本文件添加执行权限,用./命令执行3HELLO WORLD!HELLO WORLD!1.vi hello.shn按i进入插入模式n输入echo“hello world!”n:输入wq保存退出2.sh hello.sh或者c
2、hmod 755 hello.sh./hello.sh4一、一、VIVI编辑器编辑器1.VI的三种工作模式2.VI的启动3.VI的退出4.VI的文本编辑5.VI命令模式下的操作6.VI行命令模式下的操作 VI 编辑器的使用5n系统配置文件、shell脚本文件等都是文本文件,编辑它们都要使用文本编辑器。n在Linux系统中有多种文本编辑器,其中既有字符界面如的VI、EMACAS等,也有图形界面的如“附件”菜单下的“文本编辑器(gedit)”等,用户可以根据自己的喜好选择使用。n学习vi的方法:vi的命令太多且难以记忆,而实际上真正经常使用的命令并不是太多,只要掌握几个关键的并加以适当练习很快就上
3、手使用vi。6为什么选择为什么选择VIVIn就使用的方便性而言,有比vi更好的编辑器,还要图形化的edit,为什么还要用vi?p历史久远,功能强大,在有些情况下系统中能够找到的编辑器只有vi;p用户一旦熟悉后,使用非常方便;系统管理员使用正则表达式可以极大地提高工作效率,而学习vi也是掌握正则表达式的有效途径。n由于vi的版本不同,其命令格式、功能和用法会有一些差别。Shell中执行vi命令,RedHat系统实际上是执行vim,它是传统vi的增强版本71 1、VIVI的三种工作模式的三种工作模式n命令模式p启动VI默认进入命令模式。此时界面不能编辑,只能接受命令(键入的命令看不到)p文件的保存
4、,退出,文本的删除、复制、搜索等操作n输入模式p编辑模式 p命令模式下用i(sert),a(ppend),o,s等均可进入该模式。按esc返回命令模式n行编辑模式p实际上也是命令模式的一种,在命令模式下输入冒号进入一个命令行,可显示地输入命令(所以也有些书认为是两种工作模式)。三种模式可自由切换,一般切换命令就是操作的英文单词的首字母82 2、VIVI的启动的启动n启动命令:vi my.txtn如果文件存在,则vi显示文件内容并等待用户的命令。n如果指定的文件不存在,则vi将告知用户这是未命名的文件,并进入一个空白的界面。n启动vi时都是默认处于命令模式。用户必须使用命令切换到文本输入模式才能
5、进行输入编辑,或者可执行删除、复制等编辑命令。vi R file_name,以只读方式打开文件93 3、VIVI的退出的退出n冒号进命令行模式下::q!不存档强制退出。:w保存但不退出,w(rite)后可加所要存档的文档名。:wq存档后退出。p命令模式下按zz,功能与:wq相同。p:x与:wq相同n命令模式:ZZ、ZQ保存/不保存退出104 4、怎么编辑、怎么编辑必须从命令模式转入插入模式才能进行输入编辑,可用命令有:n新增(append)pa:从光标所在位置后面开始新增资料pA:从光标所在行最后面的地方开始新增资料。n插入(insert)pi:从光标所在位置前面开始插入资料pI:从光标所在行
6、的第一个非空白字元前面开始插入资料。n开始(open)po:在光标所在行下新增一列并进入输入模式。O:在光标所在行上方新增一列并进入输入模式。冒号进入行命令模式,输入set nu可设置vi显示行号115、命令模式下的操作:删除与修改、命令模式下的操作:删除与修改nx:删除光标所在字符ndw删除一个单词ndd:删除光标所在的行ns:删除光标所在字节,并进入输入模式#表示数字n#x删除几个字符,如3xn#dw删除几个单词,如3dw表示删除三个单词n#dd删除多个行,如3dd表示删除光标行及光标的下两行nd$删除光标到行尾的内容d光标键:左:删除光标前面的字符;右:删除光标所在的字符;上:将当前行与
7、上一行删除;下:当前行与下一行删除nd上下光标键:删除当前行之上、下的几行文本(包括当前行)u:恢复刚才被修改的文本 U:恢复光标所在行的所有修改.:重复上一次命令的操作12命令模式下的操作:命令模式下的操作:文本复制、粘贴文本复制、粘贴n复制命令:ypyy:复制整行pyw:复制光标所在的单词pnyw:复制包括光标所在的n个单词pnyy:复制包括当前行在内的n行n粘贴命令pPn光标移动ph、j、k、lpnG:移动到底n行行首136 6、行、行命令模式下的操作:命令模式下的操作:字符串的查找、替换字符串的查找、替换n:/string搜索指定的字符串。p按键n:继续进行搜索 如果写的是斜杠(/):
8、按n会从当前位置向后查找;如果写的是问号(?),按n键则从当前位置向前查找n查找且替换p:%s /SEARCH/REPLACE把文档中所有SEARCH替换成REPLACE;p:#,#s/SEARCH/REPLACE/g 号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;p:s /SEARCH/REPLACE/g 把当前光标所在行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示147 7、设置、设置vivi 全局的配置文件位于/etc/vim/vimrc(或者/etc/vimrc)也可以拥有自己独立的配置文件,配置文件位“/.vimrc”,如果没有该文
9、件,也可以直接用如下命令创建并编辑比如:set nu 显示行号set ruler 显示光标位置set undolevel 显示光标位置set smartindent 智能缩进syntax on(或syn on)语法高亮15文本输入状态命令状态行编辑状态按ESC键按A,I,S,C,O等命令按“:”键执行非退出命令,如w三种模式间的转换关系三种模式间的转换关系16案例练习案例练习n1.请在/tmp 这个目录下建立一个名为 vitest 的目录;n2.进入 vitest 这个目录当中;n3.将/etc/man.config 拷贝到本目录底下n4.使用 vi 开启本目录下的 man.config 这个
10、档案;n5.在 vi 中设定一下行号;n6.移动到第 58 行,向右移动 40 个字符,请问您看到的双引号内是什么目录?n7.移动到第一行,并且向下搜寻一下“bzip2”这个字符串,请问他在第几行?n8.接着下来,我要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何下达指令?n9.修改完之后,突然反悔了,要全部复原,有哪些方法?n10.我要复制 51 到 60 行这十行的内容,并且贴到最后一行之后;n11.删除 11 到 30 行之间的 20 行;n12.将这个文件另存成一个 man.test.config 的文件;n13.到第 29 行,并且删除 15
11、 个字符;n14.储存后离开17n1.mkdir/tmp/vitestn2.cd/tmp/vitest n3.cp/etc/man.config.n4.vi man.config n5.:set nu n6.先按下 58G 再按下 40 会看到/dir/bin/foo 这个字样在双引号内;n7.先执行 1G 或 gg 后,直接输入/bzip2n8.直接执行:50,100s/man/MAN/gc 即可n9.(1)简单的方法可以一直按 u 恢复到原始状态,(2)使用不储存离开 :q!之后,再重新读取一次该文件;n10.51G 然后再 10yy 之后按下 G 到最后一行,再p粘贴10行 n11.11
12、G 之后,再给他 20dd即可删除 20 行了;n12.:w man.test.config n13.29G 之后,再给他 15x 即可删除 15 个字符;n14.:wq!18二、二、SHELLSHELL变量与语法变量与语法1.Shell概述2.shell变量和符号3.shell控制流程语法4.shell中的输出重定向5.脚本实例 SHELL变量与语法191、shell的基本元素(1)#!/bin/bash 必须的,指出shell的类型(2)#注释(3)变量(4)控制一、一、ShellShell概述概述一个shell脚本vi clearup.sh#!/bin/bash#this is clea
13、rcd/var/logcat/dev/null/var/log/messages /dev/null Linux中的无限大的垃圾回收站echo Logs cleaned up.202、一般步骤:(1)编辑文件(2)保存文件(3)将文件赋予可执行的权限(4)运行及排错21注意:1.一般以.sh为文件后缀。没有也能执行。2.常见的两种执行方式n./文件名 在当前目录下写明路径执行,要求文件必须有执行权限,如chmod 755 run.sh./run.shnsh 文件名sh run.sh3.文件开头指定一个或多个解释脚本程序的shell,如#!/bin/bashn如果指定,注意/bin不要漏了“/”
14、,否则用./方式执行会找不到路径。n不指定的话一般默认以/bin/sh执行shell脚本223、Shell的一般结构 shell 类型 函数 主过程一般模板 abc.sh#!/bin/bash shell类型#a simple shell script example#a functionfunciton sayhello()函数echo Enter Your name:read name 读取来自键盘输入的变量echo Hello$nameecho programme starts here.主过程sayhelloecho programme ends.231、注释符#除了#!/bin/ba
15、sh里的#特殊2、美元符$变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用括起来3、单引号被引起的字符全部做普通字符,即全部原样echo my$SHELL二、二、ShellShell中的特殊符号中的特殊符号244、双引号引号内的内容,除$、转义符、倒引号这三个保留特殊功能,其他字符均做普通字符。5、倒引号(数字1键旁边的那个键)引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。pwd即pwd命令的执行结果$LOGNAME系统变量25练习一下:区别下面几句练习一下:区别下面几句necho my home is
16、$HOMEnecho“my home is$HOME”necho my home is$HOMEnecho“my home is pwd”necho my home is pwd 用于括起来shell命令 用于原样显示266.反斜线 反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠()能够阻止shell把后面的字符解释为特殊字符。例4:yuqunyuqun$echo “Filename is N0$*”Filename is N0$*注意:在单引号括起来的字符串中,反斜线也成为普通字符,而失去转义字符功能。27三、变量三、变量shell 变量 可以保存如路径名、文件名或者
17、一个数字n本地变量 局部变量只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。n环境变量 可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们。还能在shell中加以修改。n内部变量 由系统提供的。与环境变量不同,但用户不能修改它们。28本地变量和环境变量的对比291、本地变量(局部变量、用户变量)u本地变量 在用户现在的shell生命期的脚本中使用u 变量名=值注意:(1)等号两边不可以有空格 (2)取值包含空格,必须用双引号括起来
18、 (3)Shell变量可以用大小写字母,区分大小写30u变量的声明和使用(1)变量是弱类型的(不用声明类型)(2)变量声明及赋值格式 变量=值(等号两边不能有空格)(3)变量的引用$变量名$变量名 变量名为1个字符时建议使用方式一,多余一个字符时建议使用方式二 举例:$a$abc 31u显示变量 echo命令可以显示单个变量取值,变量名前加$echo$Nameecho$nameecho$nameareecho$name are输出引用变量时加比较好32u清除变量 unset 变量名举例:echo$name unset name(注意:name前没有$)显示本地所有变量 set33u设置只读变量
19、 设置变量时,不想再改变其值,可以将之设为只读变量 变量名=值 readonly 变量名342、环境变量环境变量用于所有用户进程(通常称为子进程)。登陆进程称为父进程,通过pstree可以查看u环境变量可以用于所有子程序,着包括编辑器、脚本和应用 举例:vi a.sh#!/bin/bash#检测环境变量 echo 家目录是$HOMEu 环境变量可以在命令行中设置,但用户注销时这些值将丢失u 环境变量均为大写u 必须用export命令导出35n设置环境变量 p variable-name=valuep export variable-name(环境变量名大写)n显示环境变量p env 可以看到所
20、有的环境变量p echo$环境变量名(显示一个变量)n清除环境变量p unset 环境变量名36uHOME:代表使用者的家目录。cd 去到使用者的家目录 或者利用 cd 就可以直接回到使用者家目录了。uPS1:shell的主提示符u SHELL:目前这个环境使用的 SHELL 是哪个程序?如果是 bash 的话,预设是/bin/bashuPWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的u HISTSIZE:这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。u ENV:这个使用者所使用的个
21、性化环境设置文件的读取文件。uMAIL:当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱文件(mailbox)。u PATH:就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔,由于文件的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。uLANG:语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF837PATHPATH示例示例n举例:配置java环境变量可使任何目录都能执行javac命令(1)需要配置Java环境变量u JAVA_HOME(JDK存放的路径)u CLASSPATH(字节码的位置,让JVM知
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- shell 脚本 教程 详细 讲解
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。