第6章shell编程(new).ppt_第1页
第6章shell编程(new).ppt_第2页
第6章shell编程(new).ppt_第3页
第6章shell编程(new).ppt_第4页
第6章shell编程(new).ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

SHELL 本章内容shell简介几种流行的shellshell基础shell特殊字符标准输出与管道Linux的shell编程学习目标了解shell的基本概念掌握shell的基础知识熟悉Linux的标准输出管道掌握Linux的shell编程 什么是Shell Shell就是一个命令行解释器 作用就是遵循一定的语法将输入的命令加以解释并传给系统 Shell既是一种命令语言 又是一种程序设计语言 几种流行的shell ash 占用系统资源最少 命令少 使用不便bash BourneAgainShell Linux系统默认使用的shellksh Kornshell 完全兼容商业发行版的kshcsh 实质tcshzsh 最大的shell查看当前使用shell echo SHELL Shell基础 格式如下 命令选项参数例如 root startroot ls lpictotal760 rw r r 1rootroot744023月17日10 091 jpg rw r r 1rootroot640943月17日10 332 jpg rw r r 1rootroot552933月17日10 433 jpg Shell基础 命令行实际上是可以编辑的一个文本缓冲区 在按回车之前 可以对输入的文本进行编辑 比如利用BACKSPACE键可以删除刚键入的字符 可以进行整行删除 还可以插入字符 使得用户在输入命令 尤其是复杂命令时 若出现键入错误 无须重新输入整个命令 只要利用编辑操作 即可改正错误 利用上箭头可以重新显示刚执行的命令 利用这一功能可以重复执行以前执行过的命令 而无须重新键入该命令 bash保存着以前键入过的命令的列表 这一列表被称为命令历史表 按动上箭头 便可以在命令行上逐次显示各条命令 同样 按动下箭头可以在命令列表中向下移动 这样可以将以前的各条命令显示在命令行上 用户可以修改并执行这些命令 在一个命令行中还可以置入多个命令 用分号将各个命令隔开 这些命令顺序执行 Shell特殊字符 通配符通配符用于模式匹配 如文件名匹配 路经名搜索 字符串查找等 代表任意长度字符串 但应注意 文件名前的圆点 和路经名中的斜线 必须显式匹配 代表任何单个字符 代表指定的一个字符范围 只要文件名中 位置处的字符在 中指定的范围之内 那么这个文件名就与这个模式串匹配 方括号中的字符范围可以由直接给出的字符组成 也可以由表示限定范围的起始字符 终止字符及中间的连字符 组成 Shell特殊字符 通配符当前目录下所有文件的名称 当前目录下所有文件名中包含有Text的文件的名称 当前目录下所有以a b c d m开头的文件的名称 当前目录下所有以a b c d m开头且后面只跟有一个字符的文件的名称 目录 usr bin下所有名称为两个字符的文件的名称 Text ab dm ab dm usr bin Shell特殊字符 反引号 号反引号 这个字符所对应的键一般位于键盘的左上角 不要将其同单引号 混淆 反引号括起来的字符串被shell解释为命令行 在执行时 shell首先执行该命令行 并以它的标准输出结果取代整个反引号 包括两个反引号 部分 在Shell中以字符 开头的正文行表示注释行 标准输出与管道 输出重定向管道 输出重定向 标准输出 stdout 和标准错误输出 stderr 通常都对应终端的屏幕输出重定向是指把命令 或可执行程序 的标准输出或标准错误输出重新定向到指定文件中 输出重定向的一般形式为 命令 文件名 ls directory out如果 符号后边指定的文件已存在 那么这个文件将被重写 如果要将一条命令的输出结果追加到指定文件的后面 可以使用追加重定向操作符 形式为 命令 文件名 管道 将一个程序或命令的输出作为另一个程序或命令的输入 有两种方法 一种是通过一个临时文件将两个命令或程序结合在一起 另一种是Linux所提供的管道功能 管道可以把一系列命令连接起来 这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令 第二个命令的输出又会作为第三个命令的输入 以此类推 显示在屏幕上的是管道行中最后一个命令的输出 如果命令行中未使用输出重定向 管道的一般形式为 命令1 命令2 catsample txt grep High wc l Linux的shell编程 shell基本语法运行shell程序的方法shell程序设计的流程控制 Shell基本语法 对shell来讲 所有变量的取值都是一个字符串 shell程序采用 var的形式来引用名为var的变量的值 Shell有以下几种基本类型的变量 Shell定义的环境变量用户定义的变量位置参数 Shell定义的环境变量 shell在开始执行时就已经定义了一些和系统的工作环境有关的变量 这些变量用户还可以重新定义 常用的shell环境变量有 HOME 用于保存注册目录的完全路径名 PATH 用于保存用冒号分隔的目录路径名 shell将按PATH变量中给出的顺序搜索这些目录 找到的第一个与命令名称一致的可执行文件将被执行 TERM 终端的类型 UID 当前用户的标识符 取值是由数字构成的字符串 PWD 当前工作目录的绝对路径名 该变量的取值随cd命令的使用而变化 用户定义的变量 用户可以按照下面的语法规则定义自己的变量 变量名 变量值要注意的一点是 在定义变量时 变量名前不应加符号 在引用变量的内容时则应在变量名前加 在给变量赋值时 等号两边一定不能留空格 若变量中本身就包含了空格 则整个字符串都要用双引号括起来 在编写shell程序时 为了使变量名和命令名相区别 建议所有的变量名都用大写字母来表示 注意 有时候变量名很容易与其他文字混淆 比如 num 2echo thisisthe numnd 这并不会打印出 thisisthe2nd 而仅仅打印 thisisthe 因为shell会去搜索变量numnd的值 但是这个变量时没有值的 可以使用花括号来告诉shell我们要打印的是num变量 num 2echo thisisthe num nd 这将打印 thisisthe2nd 用户定义的变量 位置参数 位置参数是一种在调用shell程序的命令行中按照各自的位置决定的变量 是在程序名之后输入的参数 位置参数之间用空格分隔 shell取第一个位置参数替换程序文件中的 1 第二个替换 2 依次类推 0是一个特殊的变量 它的内容是当前这个shell程序的文件名 所以 0不是一个位置参数 在显示当前所有的位置参数时是不包括 0的 运行shell程序的方法 因为shell程序是解释执行的 所以不需要编译装配成目标程序 按照shell编程的惯例 以bash为例 程序的第一行一般为 bin bash 其中 表示该行是注释 叹号 告诉shell运行叹号之后的命令并用文件的其余部分作为输入 也就是运行 bin bash并让 bin bash去执行shell程序的内容 执行shell程序的方法主要有两种 shshell程序文件名用chmod命令使shell程序成为可执行的 Shell程序设计的流程控制 Test测试命令If条件语句For循环while和until循环Case条件选择 Test测试命令 test命令用于检查某个条件是否成立 它可以进行数值 字符和文件三个方面的测试 其测试符和相应的功能分别如下 1 数值测试 eq 等于则为真 ne 不等于则为真 gt 大于则为真 ge 大于等于则为真 lt 小于则为真 le 小于等于则为真 2 字符串测试 等于则为真 不相等则为真 z字符串 字符串长度伪则为真 n字符串 字符串长度不伪则为真 Test测试命令 3 文件测试 e文件名 如果文件存在则为真 r文件名 如果文件存在且可读则为真 w文件名 如果文件存在且可写则为真 x文件名 如果文件存在且可执行则为真 s文件名 如果文件存在且至少有一个字符则为真 d文件名 如果文件存在且为目录则为真 f文件名 如果文件存在且为普通文件则为真 c文件名 如果文件存在且为字符型特殊文件则为真 b文件名 如果文件存在且为块特殊文件则为真另外 Linux还提供了与 或 o 非 a 三个逻辑操作符用于将测试条件连接起来 其优先级为 最高 a 次之 o 最低 x y 1 letx y 1 If条件语句 shell程序中的条件分支是通过if条件语句来实现的 其一般格式为 if条件命令串then条件为真时的命令串else条件为假时的命令串fi 实例 例1 文件判断 bin bashreadxif e x thenecho Thisfileexist elseecho Thisfileisnotexist fi 实例 例2 数值判断 bin bashx 3readyif x lty thenecho ok elseecho err fi 实例 例3 数值运算 bin bashreadsecho s 5 echo s 5 实例 例4 若命令的第一个参数为v则显示AAAA 否则显示BBBB bin bashif 1 v thenecho AAAA elseecho BBBB fi For循环 for循环对一个变量的可能的值都执行一个命令序列 赋给变量的几个数值既可以在程序内以数值列表的形式提供 也可以在程序以外以位置参数的形式提供 for循环的一般格式为 for变量名 in数值列表 do若干个命令行done变量名可以是用户选择的任何字符串 如果变量名是var 则在in之后给出的数值将顺序替换循环命令列表中的 var 如果省略了in 则变量var的取值将是位置参数 对变量的每一个可能的赋值都将执行do和done之间的命令列表 实例 例1 forNUMBERin0123456789doechoThenumberis NUMBERdone例2 forNAMEinJohnPaulGeorge doecho NAMEismyfrienddone 实例 例3 判断 etc下r开头的文件的目录属性 bin bashforxin etc r doif d x thenecho xisdir elseecho xisfile fidone while和until循环 while和until命令都是用命令的返回状态值来控制循环的 While循环的一般格式为 while若干个命令行1do若干个命令行2done只要while的 若干个命令行1 中最后一个命令的返回状态为真 while循环就继续执行do done之间的 若干个命令行2 until命令是另一种循环结构 它和while命令相似 其格式如下 until若干个命令行1do若干个命令行2doneuntil循环和while循环的区别在于 while循环在条件为真时继续执行循环 而until则是在条件为假时继续执行循环 实例 例一 bin bashx 1while x lt10 doecho xx x 1 done 例二 bin bashx 1until x gt10 doecho xx x 1 done 输出1 10这十个数 Case条件选择 if条件语句用于在两个选项中选定一项 而case条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法 其格式如下 casestringinexp 1 若干个命令行1 exp 2 若干个命令行2 其他命令行esacshell通过计算字符串string的值 将其结果依次和表达式exp 1 exp 2等进行比较 直到找到一个匹配的表达式为止 如果找到了匹配项则执行它下面的命令直到遇到一对分号 为止 通常用 作为case命令的最后表达式以便使在前面找不到任何相应的匹配项时执行 其他命令行 的命令 实例 例 选择P或p来打印文件 选择D或d来删除文件 其他则退出 bin bashecho PleasechooseeitherP DorQ echo P printafile echo D deleteafile echo Q quit readscase sinP p echo Nowyouselectprintingfile D d echo Nowyouselectdeletefile echo Nowleaving esac 自测题 1 在命令行界面 如何浏览以前输入的命令 A 使用PageUp键B 使用PageDown键C 使用方向上键D 使用方向右键2 你以pm用户身份登陆 然后使用了su命令 并输入了必要信息 接着运行cd 命令 当你运行pwd命令时 将看到什么信息 A home pmB homeC rootD 自测题 3 在Linux系统中 下列哪个命令可以用来安装驱动程序包 A SETUPB loadC rpmD installmod4 在Linux系统中 下列哪个命令可以用来将分区挂载到目录 A fdiskB mkfsC tune2fsD mount 自测题 5 所有的LINUX文件和目录都具有拥有权和许可权 现在我们有一名为fido的文件 并用chmod551fido对其进行了许可权的修改 我们用ls al查看到如下的几个文件许可权信息 问那一个文件的许可权是fido文件的 A rwxr xr xB rwxr r C r r r D r xr x x6 用ls al命令列出下面的文件列表 问那一个文件是连接文件 A rw

温馨提示

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

评论

0/150

提交评论