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

下载本文档

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

文档简介

1、2021/3/10授课:XXX1 2021/3/10授课:XXX2 1、vi与vim 2、认识bash(shell程序) 3、shell script 2021/3/10授课:XXX3 所有的 Unix Like 系统都会内建 vi 文书编辑器 ,其他的文书编辑器则不一定会存在; vim 具有程序编辑的能力,可以主动的以字体颜色 辨别语法的正确性,方便程序设计; 因为程序简单,编辑速度相当快速。 Vi不是一个排版软件,它只是一个文本编辑程序。 Vim是vi的一个改进版本,程序编辑器。 2021/3/10授课:XXX4 一般模式: 以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在

2、这个模 式中, 可以使用命令移动光标,删除命令来处理档案内容, 也可以使用 复制、贴上来处理你的文件数据。 编辑模式: 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文 件内容的! 要等到你按下i, I, o, O, a, A, r, R等任何一个字母 之后才会进入编辑模式。而如果要回到一般模式时, 则必须要按下Esc 这个按键即可退出编辑模式。 命令模式: 在一般模式当中,输入 : / ? 三个中的任何一个按钮,就可以将光 标移动到最底下那一行。在这个模式当中, 可以提供你搜寻资料的 动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则 是在此模式中完成的!

3、2021/3/10授课:XXX5 一般模式 光标移动 搜索与替换 删除字符 删除行 复制或粘贴行 编辑模式 以插入或替换来编辑 文本内容 命令行模式 读取/保存文件 退出或额外功能 iIoOaA(插入) : / ? ESC ESC 2021/3/10授课:XXX6 进入vim编辑器 vim test.sh 退出vim编辑器 :q,:q!,:wq (或ZZ ),:e! :w filename 2021/3/10授课:XXX7 命令命令描述描述 $将光标移动到当前行的行末将光标移动到当前行的行末 0将光标移动到当前行的行首将光标移动到当前行的行首 n|将光标移动到当前行的第将光标移动到当前行的第n

4、个字符上个字符上 fm将光标移动到文本的下一个字符将光标移动到文本的下一个字符m 命令命令描述描述 Ctrl+f屏幕向下翻动一页 Ctrl+b屏幕向上翻动一页 2021/3/10授课:XXX8 命令命令描述描述 h左移一个字符左移一个字符 j下移一个字符下移一个字符 k上移一个字符上移一个字符 l右移一个字符右移一个字符 w移到下一个单词的开头移到下一个单词的开头 b移到上一个单词的开头移到上一个单词的开头 2021/3/10授课:XXX9 命令命令描述描述 nG移动到第移动到第n行行 G移动到最后一行移动到最后一行 :set number显示行号显示行号 :set nonumber不显示行号

5、不显示行号 2021/3/10授课:XXX10 命令命令描述描述 u命令可以撤销前一次的操作命令可以撤销前一次的操作 U可以撤销对当前行的所有修改可以撤销对当前行的所有修改 Ctrl+r 重做上一次操作重做上一次操作 :e!恢复文件到初始状态 2021/3/10授课:XXX11 命令类型删除替换 字符x(向后,delete) X(向前, Backspace) r 单词dwcw 行ddcc 光标到行尾部分DC R:会一直替换光标所在的字符,直到按下ESC为止 2021/3/10授课:XXX12 命令命令描述描述 yy复制光标所在的那一行 nyy复制光标所在的向下n行 P(小)在光标下一行粘贴 P

6、(大)在光标上一行粘贴 2021/3/10授课:XXX13 :rangs/search/replace/cegi rang:表示范围,比如:1,7:第1行到7行;1,$:表 示第1行到最后一行,%。 c:确认。 e:不显示错误信息。 g:当前行整行替换 i:不分大小写 2021/3/10授课:XXX14 :?chroot 反向查找 :/chroot 正向查找 n上一个,N下一个 2021/3/10授课:XXX15 新增(append) 按a键,从光标所在位置后面开始输入新文本。 按A键,从光标所在行的行尾输入新文本。 插入(insert) 按i键,从光标所在位置前面开始输入新文本。 按 I键,

7、从第一个非空格字符前面开始插入。 开始(open) 按o键,在光标所在行下方新增一行输入。 按O键,在光标所在行上方新增一行输入。 2021/3/10授课:XXX16 Shell是操作系统中运行 的程序,与系统中的其 他程序不同,Shell程序 位于操作系统内核与用 户之间,负责接收用户 输入的命令,在对已输 入放入命令解释,将需 要执行的命令程序传递 给操作系统内核执行, 因此Shell程序充当了一 个“命令解释器”。 2021/3/10授课:XXX17 BshBsh KshKshBashBash CshCsh BshBsh在在2020世纪世纪7070年代中期诞生于新泽西的年代中期诞生于新泽

8、西的 AT连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不 相同) $取用变量前导符:亦即是变量之前需要加的变量取代值 !逻辑运算意义上的非 not 的意思! ,数据流重导向:输出导向,分别是取代与累加 ,数据流重导向:输入导向 单引号,不具有变量置换的功能 具有变量置换的功能! 两个 中间为可以先运行的命令,亦可使用 $( ) ( )在中间为子 shell 的起始与结束 在中间为命令区块的组合! 2021/3/10授课:XXX29 数据流重导向就是将某个命令运行后应该要出现在 屏幕上的数据, 给他传输到其他的地方,例如文 件或者是装置 (例如打印机之类的)!这玩意儿在 Linux

9、 的文本模式底下可重要的! 尤其是如果我 们想要将某些数据储存下来时,就更有用了! 2021/3/10授课:XXX30 简单的说,标准输出指的是命令运行所回传的正确的信 息,而标准错误输出可理解为 命令运行失败后,所 回传的错误信息。 数据流重导向可以将 standard output (简称 stdout) 与 standard error output (简称 stderr) 分别传送到 其他的文件或装置去,而分别传送所用的特殊字符则如下 所示: 1. 1. 标准输入标准输入(stdin) (stdin) :代码为:代码为 0 0 ,使用,使用 或或 或或 ; 3. 3. 标准错误输出标准

10、错误输出(stderr)(stderr):代码为:代码为 2 2 ,使用,使用 2 2 或或 2 2 ; 2021/3/10授课:XXX31 :以覆盖的方法将正确的数据输出到指定的 文件或装置上; :以累加的方法将正确的数据输出到指定的 文件或装置上; 2 :以覆盖的方法将错误的数据输出到指定 的文件或装置上; 2:以累加的方法将错误的数据输出到指定 的文件或装置上; 注意: 2 中间是没有空格的 2021/3/10授课:XXX32 要将错误信息忽略掉而不显示或储存呢? 这个时 候黑洞装置 /dev/null 就很重要了!这个 /dev/null 可以吃掉任何导向这个装置的信息喔! 将正确与错

11、误数据通通写入同一个文件去: find /home -name .bashrc list 2; =每个类型结尾使用两个连续的分号来处理! “第二个变量内容) 程序段 ; *) =最后一个变量内容都会用 * 来代表所有其他值 不包含第一个变量内容与第二个变量内容的其他程序执行段 exit 1 ; esac =最终的 case 结尾!反过来写思考一下! 2021/3/10授课:XXX51 模式匹配:模式匹配: * 表示任意字符表示任意字符 ? 表示任意单个字符表示任意单个字符 abc a、b 或或 c 三字符其中之一三字符其中之一 a-n 从从a到到n的任一字符的任一字符 | 多重选择多重选择 2

12、021/3/10授课:XXX52 语法格式: 注: 使用变量名访问列表中取值。 in列表用法是可选的,如果不用它, for循环使用命令行的位置参数。 in列表可以包含替换、字符串和文件名 for var in con1 con2 . do 程序段 done 2021/3/10授课:XXX53 ForFor(数值处理)(数值处理) for ( 初始值;限定值;执行步阶 ) do 程序段 done u 初始值:某个变量在循环当中的起始值,直接以类似 i=1 设置好; u 限定值:当变量的值在这个限定值的范围内,就继续执行循环。例 如 i=100; u 执行步阶:每作一次循环时,变量的变化量。例如

13、i=i+1。 2021/3/10授课:XXX54 语法格式: while condition =中括号内的状态就是判断式(如果为真 则执行循环体) do =do 是循环的开始! 程序段落 done =done 是循环的结束 2021/3/10授课:XXX55 break 跳出循环跳出循环 continue 不会跳出循环,跳过本次循环,进入下一不会跳出循环,跳过本次循环,进入下一 次循环次循环 2021/3/10授课:XXX56 例: #!/bin/sh #breakout while : do echo n “Enter any number 15:” read ANS case $ANS i

14、n 1|2|3|4|5) echo “您键入正确的数字.” ; *) echo “错误的输入” break ; esac done :表示永远为 真 2021/3/10授课:XXX57 例: #!/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 ; *

15、) break ; esac esac done 2021/3/10授课:XXX58 2021/3/10授课:XXX59 向脚本传递参数时,有时需要将设一个参 数偏移以处理选项,这就是shift命令的功能。 shift每次将参数位置向左偏移一位。 #!/bin/bash #shift loop=0 while $# -ne 0 do echo $1 shift done 例: 2021/3/10授课:XXX60 shell允许将一组命令集或语句形成一个可用块 ,这些块称为 shell函数。 函数定义 函数的返回 函数文件 检查载入和删除函数 2021/3/10授课:XXX61 函数是一种脚本内

16、脚本 可以通过函数的名字来定义一块shell代码,以便 在以后方便地调用 使用函数而不是一个新的脚本可以大大加快处理速 度 使用函数可以方便地组织程序 2021/3/10授课:XXX62 情况一: 函数名() 命令1 命令2 情况二: function 函数名 命令1 命令2 2021/3/10授课:XXX63 执行函数时,它保留当前shell和内存信息。 此外如果执行或调用一个脚本文件中的另一段代码 ,将创建一个单独的shell,因而去除所有原脚本中 定义的存在变量。 函数可以放在同一个文件中作为一段代码,也可以 放在只包含函数的单独文件中。 2021/3/10授课:XXX64 #!/bin

17、/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 : 2021/3/10授课:XXX65 #!/bin/bash # func1 hello() echo hello $1, there todays date is date echo now going to the function hello hello jack echo

18、 back from the function eg: 2021/3/10授课:XXX66 在函数中处理和在普通脚本中处理参数基本一样, 使用$1等位置参数,或者$*,$#等 应该注意,在函数中的$0并不表示函数名,而仍然 是脚本的文件名。 函数取得所传参数后,将原始参数传回shell脚本, 因此最好先在函数内重新设置变量保存所传的参数 。 函数里调用参数(变量)的转换以下划线开始,后 加变量名,如:_ FILENAME或_ filename。 2021/3/10授课:XXX67 当函数完成处理或希望函数基于某一测试语句返回 时,可做两种处理: 1) 让函数正常执行到函数末尾,然后返回脚本中调用函 数的控制部分。 2)使用 return 返回脚本中函数调用的下 一语句,可以带返回值 return:从函数中返回,用最后状态命令决 定返回值 return 0:无错误返回 return 1:有错误返回 2021/3/10授课:XXX68 eg: #!/bin/bash #hellofunction function hello echo “你好,$1 今天是:date” return 0 echo “=“ hello echo $? echo

温馨提示

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

评论

0/150

提交评论