嵌入式linuxshell脚本.ppt_第1页
嵌入式linuxshell脚本.ppt_第2页
嵌入式linuxshell脚本.ppt_第3页
嵌入式linuxshell脚本.ppt_第4页
嵌入式linuxshell脚本.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、vi与vim 2、认识bash(shell程序) 3、shell script 所有的 Unix Like 系统都会内建 vi 文书编辑器 ,其他的文书编辑器则不一定会存在; vim 具有程序编辑的能力,可以主动的以字体颜色 辨别语法的正确性,方便程序设计; 因为程序简单,编辑速度相当快速。 Vi不是一个排版软件,它只是一个文本编辑程序。 Vim是vi的一个改进版本,程序编辑器。 一般模式: 以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模 式中, 可以使用命令移动光标,删除命令来处理档案内容, 也可以使用 复制、贴上来处理你的文件数据。 编辑模式: 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文 件内容的! 要等到你按下i, I, o, O, a, A, r, R等任何一个字母 之后才会进入编辑模式。而如果要回到一般模式时, 则必须要按下Esc 这个按键即可退出编辑模式。 命令模式: 在一般模式当中,输入 : / ? 三个中的任何一个按钮,就可以将光 标移动到最底下那一行。在这个模式当中, 可以提供你搜寻资料的 动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则 是在此模式中完成的! 一般模式 光标移动 搜索与替换 删除字符 删除行 复制或粘贴行 编辑模式 以插入或替换来编辑 文本内容 命令行模式 读取/保存文件 退出或额外功能 iIoOaA(插入) : / ? ESC ESC 进入vim编辑器 vim test.sh 退出vim编辑器 :q,:q!,:wq (或ZZ ),:e! :w filename 命令描述 $将光标移动到当前行的行末 0将光标移动到当前行的行首 n|将光标移动到当前行的第n个字符上 fm将光标移动到文本的下一个字符m 命令描述 Ctrl+f 屏幕向下翻动一页 Ctrl+b 屏幕向上翻动一页 命令描述 h左移一个字符 j下移一个字符 k上移一个字符 l右移一个字符 w移到下一个单词的开头 b移到上一个单词的开头 命令描述 nG移动到第n行 G移动到最后一行 :set number显示行号 :set nonumber不显示行号 命令描述 u命令可以撤销前一次的操作 U可以撤销对当前行的所有修改 Ctrl+r 重做上一次操作 :e!恢复文件到初始状态 命令类型删除替换 字符x(向后,delete )X(向前, Backspace) r 单词dwcw 行ddcc 光标到行尾部分DC R:会一直替换光标所在的字符,直到按下ESC为止 命令描述 yy 复制光标所在的那一行 nyy复制光标所在的向下n行 P(小) 在光标下一行粘贴 P(大) 在光标上一行粘贴 :rangs/search/replace/cegi rang:表示范围,比如:1,7:第1行到7行;1,$: 表示第1行到最后一行,%。 c:确认。 e:不显示错误信息。 g:当前行整行替换 i:不分大小写 :?chroot 反向查找 :/chroot 正向查找 n上一个,N下一个 新增(append) 按a键,从光标所在位置后面开始输入新文本。 按A键,从光标所在行的行尾输入新文本。 插入(insert) 按i键,从光标所在位置前面开始输入新文本。 按 I键,从第一个非空格字符前面开始插入。 开始(open) 按o键,在光标所在行下方新增一行输入。 按O键,在光标所在行上方新增一行输入。 Shell是操作系统中运行 的程序,与系统中的其 他程序不同,Shell程序 位于操作系统内核与用 户之间,负责接收用户 输入的命令,在对已输 入放入命令解释,将需 要执行的命令程序传递 给操作系统内核执行, 因此Shell程序充当了一 个“命令解释器”。 Bsh KshBash Csh Bsh在20世纪70年代中期诞生于新泽西的 AT连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不 相同) $ 取用变量前导符:亦即是变量之前需要加的变量取代值 !逻辑运算意义上的非 not 的意思! , 数据流重导向:输出导向,分别是取代与累加 或 ; 3. 标准错误输出(stderr):代码为 2 ,使用 2 或 2 ; :以覆盖的方法将正确的数据输出到指定的 文件或装置上; :以累加的方法将正确的数据输出到指定 的文件或装置上; 2 :以覆盖的方法将错误的数据输出到指定 的文件或装置上; 2:以累加的方法将错误的数据输出到指定 的文件或装置上; 注意: 2 中间是没有空格的 要将错误信息忽略掉而不显示或储存呢? 这个时候 黑洞装置 /dev/null 就很重要了!这个 /dev/null 可以吃掉任何导向这个装置的信息喔! 将正确与错误数据通通写入同一个文件去: find /home -name .bashrc list 2; =每个类型结尾使用两个连续的分号来处理! “第二个变量内容“) 程序段 ; *) =最后一个变量内容都会用 * 来代表所有其他值 不包含第一个变量内容与第二个变量内容的其他程序执行段 exit 1 ; esac =最终的 case 结尾!反过来写思考一下! 模式匹配: * 表示任意字符 ? 表示任意单个字符 abc a、b 或 c 三字符其中之一 a-n 从a到n的任一字符 | 多重选择 语法格式: 注: 使用变量名访问列表中取值。 in列表用法是可选的,如果不用它, for循环使用命令行的位置参数。 in列表可以包含替换、字符串和文件名 for var in con1 con2 . do 程序段 done For(数值处理) for ( 初始值;限定值;执行步阶 ) do 程序段 done u 初始值:某个变量在循环当中的起始值,直接以类似 i=1 设置好 ; u 限定值:当变量的值在这个限定值的范围内,就继续执行循环。例 如 i=100; u 执行步阶:每作一次循环时,变量的变化量。例如 i=i+1。 语法格式: while condition =中括号内的状态就是判断式(如果为真 则执行循环体) do =do 是循环的开始! 程序段落 done =done 是循环的结束 break 跳出循环 continue 不会跳出循环,跳过本次循环,进入下一 次循环 例: #!/bin/sh #breakout while : do echo n “Enter any number 15:” read ANS case $ANS in 1|2|3|4|5) echo “您键入正确的数字.” ; *) echo “错误的输入” break ; esac done :表示永远为 真 例: #!/bin/sh #breakout while : do echo n “Enter any number 15:” read ANS case $ANS in 1|2|3|4|5) echo “您键入正确的 数字.”; *) echo “错误的输入, 是否继续(y/n)?” read IS_CONTINUE case $IS_CONTINUE in y|yes|Y|YES) continue ; *) break ; esac esac done 向脚本传递参数时,有时需要将设一个参 数偏移以处理选项,这就是shift命令的功能。 shift每次将参数位置向左偏移一位。 #!/bin/bash #shift loop=0 while $# -ne 0 do echo $1 shift done 例 : shell允许将一组命令集或语句形成一个可用块 ,这些块称为 shell函数。 函数定义 函数的返回 函数文件 检查载入和删除函数 函数是一种脚本内脚本 可以通过函数的名字来定义一块shell代码,以便在 以后方便地调用 使用函数而不是一个新的脚本可以大大加快处理速 度 使用函数可以方便地组织程序 情况一: 函数名() 命令1 命令2 情况二: function 函数名 命令1 命令2 执行函数时,它保留当前shell和内存信息。 此外如果执行或调用一个脚本文件中的另一段代码 ,将创建一个单独的shell,因而去除所有原脚本中 定义的存在变量。 函数可以放在同一个文件中作为一段代码,也可以 放在只包含函数的单独文件中。 #!/bin/bash # func1 hello() echo “hello there todays date is date“ echo “now going to the function hello“ hello #调用hello函数 echo “back from the function“ 注意:函数在使用前必须定义 eg1 : #!/bin/bash # func1 hello() echo “hello $1, there todays date is date“ echo “now going to the function hello“ hello jack echo “back from the function“ eg: 在函数中处理和在普通脚本中处理参数基本一样, 使用$1等位置参数,或者$*,$#等 应该注意,在函数中的$0并不表示函数名,而仍然 是脚本的文件名。 函数取得所传参数后,将原始参数传回shell脚本, 因此最好先在函数内重新设置变量保存所传的参数 。 函数里调用参数(变量)的转换以下划线开始,后 加变量名,如:_ FILENAME或_ filename。 当函数完成处理或希望函数基于某一测试语句返回 时,可做两种处理: 1) 让函数正常执行到函数末尾,然后返回脚本中调用函 数的控制部分。 2)使用 return 返回脚本中函数调用的下 一语句,可以带返回值 return:从函数中返回,用最后状态命令决定 返回值 return 0:无错误返回 return 1:有错误返回 eg: #!/bin/bash #hellofunction function hello echo “你好,$1 今天是:date” return 0 echo “=“ hello echo $? echo “=“ $? 取得调用 函数返回的 状态值 如果不作特殊说明,在函数内访问的变量是整个脚 本共享的变量 如果要定义只在函数内有效的局部变量,则需要使 用local语句 #!/bin/bash start() var1=123 local var2=456 start echo “$var1“ echo “$var2“ 将常用函数整理,放在函数文件中,并载入 shell 创建函数文件 #!/bin/sh 定位文件 . 函数名 检查载入函数 set 执行shell函数 函数名 删除shell函数 unset 函数名 示例: #!/bin/sh #func . hellofun echo “=“ h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论