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

下载本文档

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

文档简介

1、嵌入式linuxshell脚本嵌入式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屏幕向下

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

5、有修改Ctrl+r 重做上一次操作重做上一次操作: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:不显示错

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

7、接收用户输入的命令,在对已输入放入命令解释,将需要执行的命令程序传递给操作系统内核执行,因此Shell程序充当了一个“命令解释器”。嵌入式linuxshell脚本BshBshKshKshBashBashCshCshBshBsh在在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表示第表示第

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

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

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

13、面的部分将被全部赋给第二个变量。命令格式 read options varible1 varible2 举例 $read name1 name2 tom 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 e

16、rror 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&am

18、p;1echo $?2嵌入式linuxshell脚本所有功能脚本必须有能力进行判断,也必须有能力基于一定条件处理相关命令。本章内容有: 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 条件判断式

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

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

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

22、:每作一次循环时,变量的变化量。例如 i=i+1。 嵌入式linuxshell脚本语法格式:while condition =中括号内的状态就是判断式(如果为真则执行循环体) do =do 是循环的开始! 程序段落 done =done 是循环的结束 嵌入式linuxshell脚本break 跳出循环跳出循环continue 不会跳出循环,跳过本次循环,进入下一不会跳出循环,跳过本次循环,进入下一次循环次循环嵌入式linuxshell脚本例:#!/bin/sh#breakoutwhile :do echo n “Enter any number 15:”read ANScase $ANS in

23、1|2|3|4|5)echo “您键入正确的数字.”;*)echo “错误的输入”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脚本

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

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

26、ellohello #调用hello函数echo back from the function注意:函数在使用前必须定义eg1 :嵌入式linuxshell脚本#!/bin/bash# func1hello() echo hello $1, there todays date is dateecho now going to the function hellohello jackecho back from the functioneg:嵌入式linuxshell脚本在函数中处理和在普通脚本中处理参数基本一样,使用$1等位置参数,或者$*,$#等应该注意,在函数中的$0并不表示函数名,而仍然是脚本的文件名。函数取得所传参数后,将原始参数传回shell脚本,因此最好先在函数内重新设置变量保存所传的参数。函数里调用参数(变量)的转换以下划线开

温馨提示

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

评论

0/150

提交评论