嵌入式linuxshell脚本课件

上传人:公**** 文档编号:570065428 上传时间:2024-08-01 格式:PPT 页数:73 大小:1.35MB
返回 下载 相关 举报
嵌入式linuxshell脚本课件_第1页
第1页 / 共73页
嵌入式linuxshell脚本课件_第2页
第2页 / 共73页
嵌入式linuxshell脚本课件_第3页
第3页 / 共73页
嵌入式linuxshell脚本课件_第4页
第4页 / 共73页
嵌入式linuxshell脚本课件_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《嵌入式linuxshell脚本课件》由会员分享,可在线阅读,更多相关《嵌入式linuxshell脚本课件(73页珍藏版)》请在金锄头文库上搜索。

1、嵌入式linuxshell脚本1、vi与vim2、认识bash(shell程序)3、shell script嵌入式linuxshell脚本所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在;vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计; 因为程序简单,编辑速度相当快速。Vi不是一个排版软件,它只是一个文本编辑程序。Vim是vi的一个改进版本,程序编辑器。嵌入式linuxshell脚本一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 可以使用命令移动光标,删除命令来处理档案内容, 也可

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

3、编辑模式 以插入或替换来编辑文本内容命令行模式读取/保存文件退出或额外功能iIoOaA(插入): / ?ESCESC嵌入式linuxshell脚本进入vim编辑器 vim test.sh退出vim编辑器 :q,:q!,:wq (或ZZ ),:e! :w 嵌入式linuxshell脚本命令命令描述描述$将光标移动到当前行的行末将光标移动到当前行的行末0将光标移动到当前行的行首将光标移动到当前行的行首n|将光标移动到当前行的第将光标移动到当前行的第n个字符上个字符上fm将光标移动到文本的下一个字符将光标移动到文本的下一个字符m命令命令描述描述Ctrl+f屏幕向下翻动一页Ctrl+b屏幕向上翻动一页

4、嵌入式linuxshell脚本命令命令描述描述h左移一个字符左移一个字符j下移一个字符下移一个字符k上移一个字符上移一个字符l右移一个字符右移一个字符w移到下一个单词的开头移到下一个单词的开头b移到上一个单词的开头移到上一个单词的开头嵌入式linuxshell脚本命令命令描述描述nG移动到第移动到第n行行G移动到最后一行移动到最后一行:set number显示行号显示行号:set nonumber不显示行号不显示行号嵌入式linuxshell脚本命令命令描述描述u命令可以撤销前一次的操作命令可以撤销前一次的操作U可以撤销对当前行的所有修改可以撤销对当前行的所有修改Ctrl+r 重做上一次操作重

5、做上一次操作:e!恢复文件到初始状态嵌入式linuxshell脚本命令类型删除替换字符x(向后,delete)X(向前,Backspace) r单词dwcw行ddcc光标到行尾部分DCR:会一直替换光标所在的字符,直到按下ESC为止嵌入式linuxshell脚本命令命令描述描述yy复制光标所在的那一行nyy复制光标所在的向下n行P(小)在光标下一行粘贴P(大)在光标上一行粘贴嵌入式linuxshell脚本:rangs/search/replace/cegirang:表示范围,比如:1,7:第1行到7行;1,$:表示第1行到最后一行,%。c:确认。e:不显示错误信息。g:当前行整行替换i:不分大

6、小写嵌入式linuxshell脚本:?chroot 反向查找:/chroot 正向查找n上一个,N下一个嵌入式linuxshell脚本新增(append)按a键,从光标所在位置后面开始输入新文本。按A键,从光标所在行的行尾输入新文本。插入(insert)按i键,从光标所在位置前面开始输入新文本。按 I键,从第一个非空格字符前面开始插入。开始(open)按o键,在光标所在行下方新增一行输入。按O键,在光标所在行上方新增一行输入。嵌入式linuxshell脚本Shell是操作系统中运行的程序,与系统中的其他程序不同,Shell程序位于操作系统内核与用户之间,负责接收用户输入的命令,在对已输入放入命

7、令解释,将需要执行的命令程序传递给操作系统内核执行,因此Shell程序充当了一个“命令解释器”。嵌入式linuxshell脚本BshBshBshBshKshKshKshKshBashBashBashBashCshCshCshCshBshBsh在在2020世纪世纪7070年代中期诞生于新泽西的年代中期诞生于新泽西的AT&TAT&T贝尔实验室,具有较强的脚本编程贝尔实验室,具有较强的脚本编程功能功能CshCsh在在2020世纪世纪8080年代早期诞生于加利福年代早期诞生于加利福尼亚大学尼亚大学 ,使用,使用C C语言的语法,用户命令语言的语法,用户命令交互更加方便交互更加方便KshKsh结合了结合

8、了BshBsh和和CshCsh两者的功能优势,兼两者的功能优势,兼有有BshBsh的语法和的语法和CshCsh的交互特性的交互特性 BashBash是是BshBsh的升级替代品,吸收了的升级替代品,吸收了KshKsh中中的诸多优秀特性,的诸多优秀特性,BashBash是开源软件是开源软件嵌入式linuxshell脚本命令记忆能力 (history):使用过的命令记录在在你的家目录内的 .bash_history命令与文件补全功能: (tab 按键的好处)命令别名配置功能: (alias)作业控制、前台、后台控制程序脚本(shell script)通配符嵌入式linuxshell脚本变量:简单的

9、说,就是让某一个特定字符串代表不固定的内容就是了。变量类型:环境变量预定义变量位置变量用户自定义变量(本地变量)嵌入式linuxshell脚本使用set命令查看环境变量 set常用环境变量 USER UID SHELL HOME PWD PATH 环境变量配置文件/etc/bashrc /etc/profile /.bash_profile/.bashrc 嵌入式linuxshell脚本$ ./exam01 one two tree four five six$0$0表示命令名称表示命令名称$0$0属于预定义变量属于预定义变量$0$0不属于位置变量不属于位置变量$1$1表示第表示第1 1个命令

10、参数个命令参数$2$2表示第表示第2 2个命令参数个命令参数$3$3表示第表示第3 3个命令参数个命令参数$n$n表示第表示第n n个命令参数个命令参数嵌入式linuxshell脚本变量名变量名含义含义$# 表示位置参数的数量 $*表示所有位置参数的内容 $?表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在Linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误 $表示当前进程的进程号 $!表示后台运行的最后一个进程号 $0表示当前执行的进程名 嵌入式linuxshell脚本自定义变量的设置$ DAY=sunday自定义变量的查看与引用 $ echo $DAY

11、自定义变量的输出 $ export DAY自定义变量的清除 $ unset DAY 嵌入式linuxshell脚本1.变量与变量内容以一个等号=来连结2.等号两边不能直接接空格符3.变量名称只能是英文字母与数字,但是开头字符不能是数字4.变量内容若有空格符可使用双引号或单引号将变量内容结合起来 5.双引号内的特殊字符如$等,可以保有原本的特性6.可用跳脱字符 将特殊符号变成一般字符;7.在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号命令或 $(命令)。8.若该变量为扩增变量内容时,则可用 $变量名称 或 $变量 累加内容9.若该变量需要在其他子程序运行,则需要以 export

12、来使变量变成环境变量:嵌入式linuxshell脚本echo (显示变量)命令格式echo -en var-e 表示解析转义字符表示解析转义字符 -n 回车不换行,回车不换行,linux默认回车换默认回车换行行控制字符:c-不换行;t-跳格;n-换行举例echo whats your nameecho nameecho $nameecho $LOGNAME嵌入式linuxshell脚本read如果只指定了一个变量,那么r e a d将会把所有的输入赋给该变量,直至遇到回车。如果给出了两个变量,s h e l l将用空格作为变量之间的分隔符。如果变量数少于单词数,那么第一个单词将被赋给第一个变量

13、,字符串后面的部分将被全部赋给第二个变量。命令格式read options varible1 varible2 举例$read name1 name2tom jerry bob嵌入式linuxshell脚本 符号符号意义意义*代表 0 个到无穷多个任意字符?代表一定有一个任意字符 同样代表一定有一个在括号内的字符(非任意字符)。例如 abcd 代表一定有一个字符, 可能是 a, b, c, d 这四个任何一个 - 若有减号在中括号内时,代表在编码顺序内的所有字符。例如 0-9 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的! 若中括号内的第一个字符为指数符号 () ,那表示反向选

14、择,例如 abc 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。嵌入式linuxshell脚本符号符号内容内容#批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行跳脱符号:将特殊字符或通配符还原成一般字符|管线 (pipe):分隔两个管线命令的界定(后两节介绍);;连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)$取用变量前导符:亦即是变量之前需要加的变量取代值!逻辑运算意义上的非 not 的意思!,数据流重导向:输出导向,分别是取代与累加,数据流重导向:输入导向 单引号,不具有变量置换的功能 具有变量置换的功能! 两个 中

15、间为可以先运行的命令,亦可使用 $( )( )在中间为子 shell 的起始与结束 在中间为命令区块的组合!嵌入式linuxshell脚本数据流重导向就是将某个命令运行后应该要出现在屏幕上的数据, 给他传输到其他的地方,例如文件或者是装置 (例如打印机之类的)!这玩意儿在 Linux 的文本模式底下可重要的! 尤其是如果我们想要将某些数据储存下来时,就更有用了!嵌入式linuxshell脚本简单的说,标准输出指的是命令运行所回传的正确的信息,而标准错误输出可理解为 命令运行失败后,所回传的错误信息。数据流重导向可以将 standard output (简称 stdout) 与 standard

16、 error output (简称 stderr) 分别传送到其他的文件或装置去,而分别传送所用的特殊字符则如下所示: 1. 1. 标准输入标准输入(stdin) (stdin) :代码为:代码为 0 0 ,使用,使用 或或 或或 ; 3. 3. 标准错误输出标准错误输出(stderr)(stderr):代码为:代码为 2 2 ,使用,使用 2 2 或或 2 2 ;嵌入式linuxshell脚本 :以覆盖的方法将正确的数据输出到指定的文件或装置上;:以累加的方法将正确的数据输出到指定的文件或装置上;2 :以覆盖的方法将错误的数据输出到指定的文件或装置上;2:以累加的方法将错误的数据输出到指定的

17、文件或装置上;注意: 2 中间是没有空格的嵌入式linuxshell脚本要将错误信息忽略掉而不显示或储存呢? 这个时候黑洞装置 /dev/null 就很重要了!这个 /dev/null 可以吃掉任何导向这个装置的信息喔!将正确与错误数据通通写入同一个文件去:find /home -name .bashrc list 2&1 find /home -name .bashrc & list 嵌入式linuxshell脚本standard input : 与 /dev/nul 2&1echo $?0VALUE=helloexpr $VALUE + 1 /dev/nul 2&1echo $?2嵌入式l

18、inuxshell脚本所有功能脚本必须有能力进行判断,也必须有能力基于一定条件处理相关命令。本章内容有: if then else语句。 while、for和until loops循环。 脚本中动作。嵌入式linuxshell脚本例:#!/bin/bash#make a directorymkdir /home/jgsong/mydocs#copy all doc filescp *.docs /home/jgsong/docs#delete all doc filesrm *.docs嵌入式linuxshell脚本单层条件判断式:单层条件判断式:if 条件判断式 then 当条件判断式成立时

19、,可以执行指令序列;fi一个条件判断判断式# 一个条件判断判断(else) if 条件判断判断式 then 当条件判断式成立时,可以执行指令序列;else 当条件判断式不成立时,可以执行指令序列;fi# 多重条件刞断式if 条件刞断式一 then 当条件判断式一成立时,可以执行指令序列elif 条件刞断式二 then 当条件判断式二成立时,可以执行指令序列else 当条件判断式一与二均不成立时,可以执行指令序列fi嵌入式linuxshell脚本case语句为多选择语句。可以用c a s e语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。c a s e语句格式如下:case $变量名称

20、 in =关键词为 case ,还有发数前有钱字号 “第一个变量内容”) =每个变量内容建议用双引号括起来,关键词则为小括号 ) 程序段 ; =每个类型结尾使用两个连续的分号来处理! “第二个变量内容) 程序段 ; *) =最后一个变量内容都会用 * 来代表所有其他值 不包含第一个变量内容与第二个变量内容的其他程序执行段 exit 1 ; esac =最终的 case 结尾!反过来写思考一下!嵌入式linuxshell脚本模式匹配:模式匹配:*表示任意字符表示任意字符?表示任意单个字符表示任意单个字符abca、b或或c三字符其中之一三字符其中之一a-n从从a到到n的任一字符的任一字符|多重选择

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

22、inuxshell脚本语法格式:while condition =中括号内的状态就是判断式(如果为真则执行循环体) do =do 是循环的开始! 程序段落 done =done 是循环的结束 嵌入式linuxshell脚本break跳出循环跳出循环continue不会跳出循环,跳过本次循环,进入下一不会跳出循环,跳过本次循环,进入下一次循环次循环嵌入式linuxshell脚本例:#!/bin/sh#breakoutwhile :do echo n “Enter any number 15:”read ANScase $ANS in1|2|3|4|5)echo “您键入正确的数字.”;*)ech

23、o “错误的输入”break;esacdone:表示永远为真嵌入式linuxshell脚本例:#!/bin/sh#breakoutwhile :do echo n “Enter any number 15:”read ANScase $ANS in1|2|3|4|5)echo “您键入正确的数字.”;*)echo “错误的输入,是否继续(y/n)?”read IS_CONTINUEcase $IS_CONTINUE iny|yes|Y|YES)continue;*)break;esacesacdone嵌入式linuxshell脚本嵌入式linuxshell脚本 向脚本传递参数时,有时需要将设一

24、个参数偏移以处理选项,这就是shift命令的功能。shift每次将参数位置向左偏移一位。#!/bin/bash#shiftloop=0while $# -ne 0 do echo $1 shiftdone例:例:嵌入式linuxshell脚本shell允许将一组命令集或语句形成一个可用块,这些块称为 shell函数。函数定义 函数的返回函数文件检查载入和删除函数嵌入式linuxshell脚本函数是一种脚本内脚本可以通过函数的名字来定义一块shell代码,以便在以后方便地调用使用函数而不是一个新的脚本可以大大加快处理速度使用函数可以方便地组织程序嵌入式linuxshell脚本情况一:函数名()

25、命令1 命令2 情况二:function 函数名 命令1 命令2 嵌入式linuxshell脚本执行函数时,它保留当前shell和内存信息。此外如果执行或调用一个脚本文件中的另一段代码,将创建一个单独的shell,因而去除所有原脚本中定义的存在变量。函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中。嵌入式linuxshell脚本#!/bin/bash# func1hello() echo hello there todays date is dateecho now going to the function hellohello #调用hello函数echo back

26、from the function注意:函数在使用前必须定义eg1 eg1 :嵌入式linuxshell脚本#!/bin/bash# func1hello() echo hello $1, there todays date is dateecho now going to the function hellohello jackecho back from the functionegeg:嵌入式linuxshell脚本在函数中处理和在普通脚本中处理参数基本一样,使用$1等位置参数,或者$*,$#等应该注意,在函数中的$0并不表示函数名,而仍然是脚本的文件名。函数取得所传参数后,将原始参数传

27、回shell脚本,因此最好先在函数内重新设置变量保存所传的参数。函数里调用参数(变量)的转换以下划线开始,后加变量名,如:_ 或_ 。嵌入式linuxshell脚本当函数完成处理或希望函数基于某一测试语句返回时,可做两种处理:1) 让函数正常执行到函数末尾,然后返回脚本中调用函数的控制部分。2)使用 return 返回脚本中函数调用的下一语句,可以带返回值return:从函数中返回,用最后状态命令决定返回值return 0:无错误返回return 1:有错误返回嵌入式linuxshell脚本eg:#!/bin/bash#hellofunctionfunction hello echo “你好,

28、$1 今天是:date” return 0echo “=“helloecho $?echo “=“$? 取得调用函数返回的状态值嵌入式linuxshell脚本如果不作特殊说明,在函数内访问的变量是整个脚本共享的变量如果要定义只在函数内有效的局部变量,则需要使用local语句嵌入式linuxshell脚本#!/bin/bashstart() var1=123 local var2=456startecho $var1echo $var2嵌入式linuxshell脚本将常用函数整理,放在函数文件中,并载入shell创建函数文件#!/bin/sh定位文件. . 函数名检查载入函数set执行shell

29、函数函数名删除shell函数unset 函数名嵌入式linuxshell脚本示例:#!/bin/sh#func. hellofunecho “=“hello echo “=“#!/bin/sh#hellofunfunction hello() echo “你好, 今天是:date” return 1嵌入式linuxshell脚本示例:#!/bin/sh#func. hellofunset#表示显示载入状态unset hello#表示删除hello函数调用echo “=“hello echo “=“#!/bin/sh#hellofunfunction hello echo “你好,今天是:date” return 0嵌入式linuxshell脚本

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号