您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 第8章linux操作系统
第8章vi工具与Shell编程无论是在linux上进行开发,还是基本操作,几乎都离不开文本,所以文本编辑工具就显得非常重要。linux系统本身提供了很多文本编辑器,其中vi文本编辑工具就是其中之一。文本文件编辑工具vi进入vi的命令:vivi文件名vi+n文件名vi+/pattern文件名vi文件名1文件名2…文件名n~:标识空行退出vi命令:编辑模式:•两个大写的字母Z,即ZZ;•功能:存盘并退出;命令模式:•q:不存盘退出;•w:存盘不退出;•w文件名:存在指定文件中,退出;•wq!:强制保存并退出;•r文件名:读取制定文件内容插入当前文件;•n,mw文件名:将指定区间保存到文件。编辑模式Shell提示符命令模式退出vi启动vi:自动返回a、i、oESC插入模式vi命令模式关系图进入插入模式的命令:•i:在光标所在位置的前面插入;•I:在光标所在行的开头插入;•a:在光标所在位置的后面插入;•A:在光标所在行的结尾插入;•o:在光标所在行的下面新建一行插入;•O:在光标所在行的上面新建一行插入;删除文本x:删除当前光标处字符;d命令dh:删除前一个字符dw:删除一个单词dd:删除当前行dG:删除文件结尾前所有行移动光标插入/编辑模式下:利用键盘上的方向键;命令模式下:l:向右移动h:向左移动k:向上移动j:向下移动模糊查找?模式:向文件头方向查找合适的文本;N或n:重复前一个查找命令;/模式:向文件尾方向查找合适的文本;精确查找/字符序列↙:精确查找指定字符序列完全相同的词;/^字符序列↙:查找指定字符序列仅出现在行首的词;/字符序列$↙:查找指定字符序列仅出现在行尾的词;\特殊字符:搜索的字符序列中本身就含有特殊字符,加反斜线屏蔽,取消特殊含义。$特殊功能字符:$通常表示行尾。替换指定字符r+字符:仅允许替换一个字符,并且操作完成后返回命令模式;R:用输入的字符逐个替换光标处的字符;cw:替换指定字符;C(大写):修改整行之间的文本;:s/oldword/replacement/查找当前行上符合oldword模式的第1个实例并用字符串replacement替换。:n,ms/oldword/replacement/g在指定的行上进行全局替换。复制与粘贴yw:拷贝光标所在处到字尾的字符;yy:拷贝光标所在行;p:将缓冲区内的字符粘贴到光标所在行下面;P(大写)将文本行粘贴到文件中光标所在行的上面;vi环境设置①查看所有缺省选项:setall↙②更改选项的值:set选项↙SHELL脚本shell的基本知识shell是一个用户接口,它提供用户要求的服务,用户通过shell与计算机交互,用户不必了解硬件的内部细节。当通过用户名和密码登陆到linux系统后,由shell负责解译及执行用户输入到计算机中的所有命令,直到运行EXIT指令退出系统。shell是一个命令语言解释器,拥有自己一系列的shell指令集,同时shell还能被系统中其他进程所调用。用户使用linux操作系统过程中,在提示符下输入的命令都由shell先解释然后传给linux核心。shell的种类Bourneshell(sh)Cshell(csh)KornshellBourneAgainShell(bash)TcshShell(tcsh)RestrictedShell;AShell;ZShell等等可以采用显示“SHEll”环境变量,来确定当前用户使用的SHELLshell脚本文件shell脚本就是把一系列linux命令,按照一定的组织格式存储在一个文件中,shell可以读取这个文件并按照规则执行其中的命令,这样的文件就被称为shell脚本文件。shell脚本可以象简单的程序设计一样允许输入/输出、操纵变量(虽然很简单)、控制流程等等。用户宿主目录下的.bash_logout文件就是一个shell脚本文件,看看它的内容创建shell脚本和创建普通的源程序代码是一样的,可以选择一个方便的文本编辑工具如前面章节的vi命令,然后把设计好的命令序列输入并且保存到一个指定的名字的文件中你可以创建内容只有echo“Hello!”一行的文件,这就是一个简单的shell脚本文件执行shell脚本文件的方法1、在命令提示符后键入bash脚本文件名2、先改变脚本文件的权限,增加用户的可执行权限,然后直接键入它的名字来执行shell脚本文件的内容注释:和通常的源代码一样,shell脚本也提供注释行的功能,以便用户编写出可读性好的脚本代码。在shell脚本中,通过使用#符号作为注释行的前缀符号,当shell对脚本代码进行解释执行的时候,遇见#符号时,忽略该行的所有内容。shell脚本文件的内容变量:在shell脚本中,支持通过变量保存中间值并参与运算和输入输出。但是,在bashshell下,变量不比象一些高级语言(如C)一样显式地被声明(C语言的变量需要显式地先声明才能使用)。shell脚本中的变量,可以在任何时间通过赋值来创建。甚至赋值操作符(=)右边为空也可以。语法:变量名=值注意:赋值操作符“=”两边必须不能有空格。shell脚本文件的内容变量的引用:在shell脚本的任何位置都可以引用变量。变量的引用符号为$符号,相关的还有定界符号{}.语法:$variable${variable}定界符号{}是为了区分变量的名字和其他和变量名字结合在一起的字符串来使用的,目的是使得shell解释程序能够准确地识别用户使用的变量。shell脚本文件的内容输入变量的值:在编写一些特殊的shell脚本时,有时需要从键盘输入值给脚本干预脚本的运行,这可以使用read命令来实现.语法:$read变量名当脚本执行到read语句时,将等待用户输入一个值给变量。让用户输入一个值并回车后,这个值就被保存在变量中。shell脚本文件的内容变量的作用域:变量根据它的可访问范围分为局部变量和全局变量。局部变量:只能在创建这个变量的shell中有效的变量。全局变量:可以由父shell传递值到子shell的变量。shell脚本文件的内容数值运算shell不支持数字变量,变量都被作为字符串来处理。但是有时侯是需要使用变量参与数学运算的。shell允许保存数字形式字符串的变量参与模拟数字运算。使用expr命令求值算术表达式。算术展开表达式格式为$((算术表达式))shell脚本文件的内容命令替换在一个命令中使用多个命令的方法---命令替换。命令替换首先执行被替换的命令,然后执行整个命令。命令替换的方法有两种,1、使用重音符“`”的形式;2、使用$()的形式。shell脚本文件的内容shell流程控制test和[]测试命令测试命令对表达式进行测试,求出真(true)或者假(false)的逻辑值。shell脚本可以根据这些测试的结果逻辑值来处理不同的流程测试命令分以下几类测试算术表达式测试字符串表达式测试文件shell脚本文件的内容算术测试表达式选项选项含义-eq等于-ne不等于-gt大于-ge大于等于-lt小于-le小于等于shell脚本文件的内容字符串测试表达式选项选项含义string如果string的长度不为零则值为true,否则为false-zstring如果string的长度为零,则值为true,否则为falsestring1=string2如果string1与string2相等,则值为true,否则为falsestring1!=string2如果string1与string2不相等,则值为true,否则为falseshell脚本文件的内容文件测试表达式选项选项含义-eFile如果文件File存在则值为true-sFile如果文件File存在且文件大小大于零,则值为true-fFile如果文件File存在且为普通文件,则值为true-dFile如果文件File存在且为目录文件,则值为true-bFile如果文件File存在且为块文件,则值为true-cFile如果文件File存在且为字符文件,则值为true-LFile如果文件File存在且为符号链接文件,则值为true-rFile如果文件File存在且是可读文件,则值为true-wFile如果文件File存在且是可写文件,则值为true-xFile如果文件File存在且是可执行文件,则值为true-OFile如果文件File存在且属于当前用户,则值为true-GFile如果文件File存在且属于当前用户组,则值为trueFile1–ntFile2如果文件File1新于文件File2,则值为trueFile1–otFile2如果文件File1旧于文件File2,则值为trueshell脚本文件的内容脚本流程分支结构1、if语句if语句和它的英文含义一样,如果条件成立就执行规定的语句或者语句序列。if的基本使用格式为:if语句的另外一种格式为:ifConditionifConditionthenthenCommand(s)Command1(s)fielseCommand2(s)fi复杂的if语句shell脚本文件的内容case...esac语句当if语句出现的分支比较多的时候,使用if语句使得脚本代码过于冗长而且可读性变差,这时可以使用case...esac语句来实现同样的功能。case语句的使用格式是:case$VARIABLE-NAMEinvalue1)Command1(s);;value2)Command1(s);;...valueN)CommandN(s);;*)Command(s);;esacshell脚本文件的内容循环结构可以提供给脚本编写者重复执行某一动作的能力,linux的shell脚本支持循环是通过下面三种构造来实现的。while构造until构造for构造shell脚本文件的内容while构造:while循环结构的特点是:先测试条件再执行循环体,只要条件为真时,就执行循环体中的命令序列。当第一次测试条件的时候如果为假,则循环体就被执行了零次。while构造的格式是:whileConditiondoCommand(s)doneshell脚本文件的内容until构造:until循环构造为循环执行语句序列直到某个条件为真。它的求值模式和while循环相反。until循环构造格式:untilConditiondoCommand(s)doneshell脚本文件的内容shell脚本文件的内容1.for构造:for构造循环有两种形式。第一种形式的格式为:for(([expression1];[expression2];[expression3]))doCommand(s)done第二种形式的格式为:forVARIABLE_NAMEinlist_of_valuesdoCommand(s)doneshell脚本文件的内容break和continue命令break命令用语循环体中,它能导致立即结束循环。continue命令用于循环体中,它能导致立即开始新的循环。位于continue命令后的循环体其它语句序列将不被执行。shell脚本文件的内容shell脚本的参数和shift命令shell脚本是需要传递参数给它内部进行处理的。如下•./test2030在shell脚本中$n可以用于传递这些参数,其中$0表示命令本身的字符串,$1、$2、$3...$9表示第一、第二个参数...第9个参数。特殊的$#表示参数的合计数目。shift命令可以形象地理解为在shell脚本内部把参数的次序依次向前提一个。这样shift执行前的$1就不再起作用,shift命令执行前的$2变成了执行后的$1,$3变成了$2,依此类推。shell脚本文件的内容shell脚本文件的内容shell脚本文件的内容shell脚本文件的内容
本文标题:第8章linux操作系统
链接地址:https://www.777doc.com/doc-6375484 .html