第五章-Linuxshell程序设计上课讲义

上传人:youn****329 文档编号:127470193 上传时间:2020-04-02 格式:PPT 页数:80 大小:1.22MB
返回 下载 相关 举报
第五章-Linuxshell程序设计上课讲义_第1页
第1页 / 共80页
第五章-Linuxshell程序设计上课讲义_第2页
第2页 / 共80页
第五章-Linuxshell程序设计上课讲义_第3页
第3页 / 共80页
第五章-Linuxshell程序设计上课讲义_第4页
第4页 / 共80页
第五章-Linuxshell程序设计上课讲义_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《第五章-Linuxshell程序设计上课讲义》由会员分享,可在线阅读,更多相关《第五章-Linuxshell程序设计上课讲义(80页珍藏版)》请在金锄头文库上搜索。

1、第五章Linuxshell程序设计 李威liweizhisjb 1 Linux内核概述 shell层是内核之外的中间层 是用户和系统交互的界面 3 Linux内核概述 其实shell还是一种高级程序设计语言 它有变量 关键字还有各种控制语句 4 Linuxshell程序设计 Linux提供多种不同的shell 常用的有Bourneshell 简称sh C shell 简称csh Kornshell 简称ksh 和BourneAgainshell 简称bash 5 Linuxshell程序设计 Bourneshell是AT TBell实验室为AT T的UNIX开发的 是UNIX默认的shell

2、6 Linuxshell程序设计 C shell 简称csh 是加州伯克利大学的BillJoy为BSDUNIX开发的 与sh不一样 7 Linuxshell程序设计 Kornshell 简称ksh 也是AT TBell实验室开发的 其命令交互界面和编程界面很好 8 Linuxshell程序设计 BourneAgainshell 简称bash 是GNU开发的一个shell 是Linux默认的shell 9 Linuxshell程序设计 shell特点 对已有命令进行组合构成新命令 组合方式简单 提供了文件名扩展字符 使单一字符串可以匹配多个文件名 可以直接使用shell的内置命令而不需创建新的进

3、程 shell灵活使用数据流 提供通配符 输入 输出重定向 管道线等机制 提供了顺序流程控制 条件控制 循环控制语句 shell提供了在后台执行命令的能力 shell提供了可配置的环境 允许用户创建修改命令 命令提示符等系统行为 shell提供了一个高级的命令语言 允许用户创建简单和复杂的程序 操作系统本身自带的命令 不需要外部软件支持的命令 如 cd echo kill等命令 10 Linuxshell程序设计 shell脚本的创建和执行 使用shell的最简单的方法是从键盘上直接输入命令行或存入文件中 这种被shell解释执行的文件为shell脚本 利用编辑器建立一个shell脚本 和普通

4、文件一样 例 viex1 建立一个名字为ex1的shell脚本 11 Linuxshell程序设计 执行shell脚本的方式有三种 1 bash 脚本名 2 bash脚本名 参数 3 将shell脚本的权限设置为可执行 然后再提示符下直接执行它 用输入重定向让shell从给定文件中读入命令行 进行相应处理 以脚本名作为参数传递给程序中的命令 例 1 bash ex1 2 ex1 3 chmoda xex2 ex2 脚本后面不能带参数 目前使用的shell以 表示 把shell脚本ex2置为对所有用户都有执行权限 然后在提示符后可以直接执行该文件 12 Linuxshell程序设计 bash提供

5、了命令历史功能 即系统为每一个用户维护一个命令历史文件 root bash history 该文件把用户输入的命令自动的加到该命令历史表中 用户可以调用或者修改以前的命令 HISTFILE home test history HISTSIZE 100 可以通过HISTFILE改变存放历史命令的文件 将历史命令存放在 home test history下 设置历史文件中可以保留100条历史命令 默认是500 13 Linuxshell程序设计 显示命令历史表中的命令history option arg 显示历史命令 包括刚输入的history 例 history history50 显示历史表中

6、的最后50行命令 14 Linuxshell程序设计 执行历史命令 以字符 开头 后随一个或多个字符来定义某种类型的历史命令 符号间没有空格 15 Linuxshell程序设计 名称补全 在bash命令行上输入目录名和文件名时 可以按tab键让系统自动补全剩余的部分 例 cd us cate 系统自动补全 usr 如果目录中有ex1 ex2 exam1则系统会补全到三者相同部分的最后一个字符 屏幕显示为 catex 如果此时用户继续按Tab键 屏幕显示为 catexex1ex2exam1等待用户选择 16 Linuxshell程序设计 别名 对于常用的选项或参数比较多的固定命令可以取个别名替换

7、 定义别名的命令alias name value 例 alias aliasll ls l ll aliasll ls l ll 在屏幕上显示别名清单 等价于 ls l 等价于 ls 17 Linuxshell程序设计 别名 对于常用的选项或参数比较多的固定命令可以取个别名替换 定义别名的命令alias name value 取消别名 unaliasname 执行后从别名表中删除name指定的别名 18 Linuxshell程序设计 19 Linuxshell程序设计 模式表达式 除了 和 之外还有以下形式 模式表 匹配给定模式表中的模式的 次或多次出现 各模式以 分开 模式表 匹配给定模式表

8、中的模式的 次或多次出现 各模式以 分开 模式表 匹配给定模式表中任一模式的 次或 次出现 各模式以 分开 模式表 仅匹配模式表中的给定模式的 次出现 模式表 除给定模式表中的模式外匹配其他任何模式 20 Linuxshell程序设计 例 file c o 将匹配文件file file c file o file c c file o o file c o file o c等file c o 将匹配文件file c file o file c c file o o file c o file o c等 不匹配filefile c o 只匹配文件file file c file o 不匹配fil

9、e c c file o o file c o file o c等 file c o 只匹配文件file c file o不匹配file file c c file o o file c o file o c等 21 Linuxshell程序设计 引号 分为单引号 双引号和倒引号 用双引号括起来除 倒引号 和反斜线 之外都作为普通字符对待 表示变量替换 倒引号 表示命令替换 反斜线 表示转义字符 单引号括起来的字符表示都是普通字符 倒引号 括起来的字符被shell解释为命令行 22 Linuxshell程序设计 例 catex3echo currentdirectoryis pwd echo

10、homedirectoryis HOME echo file bashex3currentdirectoryis homehomedirectoryis rootfile 23 Linuxshell程序设计 注释 shell程序中以 开头的正文行表示注释 在shell脚本的第一行以 开头表示该脚本是用哪种shell编写的 从而调用相应的解释程序执行 后台命令 当程序执行需要时间过长时 那么在命令最后输入 符号 则shell在后台启动该程序 马上显示下一个提示符 允许用户输入新的命令 24 Linuxshell程序设计 等价于pwd这里分号隔开的命令 前面的命令执行成功who wc l与否并不影

11、响后面命令的执行cd home 命令执行操作符 多条命令可以在一行中出现 各命令之间以分号隔开 例pwd who wc l cd home 25 Linuxshell程序设计 命令执行操作符 逻辑与操作符 可将两个命令联系在一起 命令 命令 表示先执行命令 如果执行成功才执行命令 否则不执行命令 逻辑非操作符 可将两个命令联系在一起 命令 命令 表示先执行命令 如果不成功则执行命令 如果命令成功则不执行命令 26 Linuxshell程序设计 27 Linuxshell程序设计 成组命令 在shell中有两种方式将若干命令组合在一起 一个是花括号 一个是圆括号 形式 以花括号括起来的全部命令作

12、为一条命令执行 左括号后有一个空格右括号前有分号 形式 左括号后不需有空格 右括号之前也不需加分号 例 echo userreportfor date who cat echo和who命令的执行结果经管道传给屏幕进行输出 28 Linuxshell程序设计 二者区别 花括号括起来的组命令在本shell执行命令 不产生新进程 圆括号括起来的组命令要在新的子shell内执行 要建立新的子进程 29 Linuxshell程序设计 shell有两类变量 环境变量和临时变量 环境变量是永久性变量 值不会随shell脚本执行结束而消失 临时变量是在shell程序内部定义 使用范围仅限于定义它的程序 出了程

13、序就不能使用 程序结束后 它的值就不存在了 环境变量像 HOME 用户主目录的全路径 LOGNAME 用户的注册名 通过该变量系统来确认用户是否是文件的拥有者 是否有权利执行某个命令 PATH shell从中查找命令的目录列表 例 PATH PATH home 30 Linuxshell程序设计 用户定义的变量 变量名是以字母或下划线开头 由字母 下划线和数字组成的序列 大小写意义不同 变量长度不受限制 定义变量并赋值的一般形式变量名 字符串引用变量时用 变量 31 Linuxshell程序设计 例 dir home ccc echo dir echodir today Sunday echo

14、 today Today dir home cc cat dir c mi c cat dirc mi c cat dir mi c 显示结果 home ccc 显示结果dir 显示结果SundayToday未被赋值 为空串 将文件 home ccc mi c显示出来 提示出错 认为dirc是个新变量 前面未赋值 所以找不到文件mi c 将文件 home cc mi c显示出来 32 Linuxshell程序设计 数组 bash只提供一维数组 数组元素下标由0开始编号 一般形式为 declare a数组名 读取数组元素值的一般形式是 数组名 下标 对数组元素赋值的一般形式是 数组名 下标 值或

15、数组名 值 值 值 33 Linuxshell程序设计 例 city 0 Beijing city 1 Shanghai echo city 0 A thisisanexampleofshellscript echo A 0 A 2 A 3 A 6 echo A 8 显示结果Beijing 显示结果结果显示为thisanexamplescript 显示结果结果显示为空串 34 Linuxshell程序设计 输入命令 read命令 从键盘上读取数据 然后赋给指定的变量 例 readxyzTodayisMonday echo z x y 显示结果MondayTodayis 35 Linuxshel

16、l程序设计 输入命令 read命令 从键盘上读取数据 然后赋给指定的变量 例 readn1n2n3FirstSecondThird1234abcd 回车键 echo n3 echo n2 n1 变量个数少于数据个数时 从左往右对应赋值 最后一个变量被赋予剩余的所有数据 显示结果为Third1234abcd 显示结果为SecondFirst 36 Linuxshell程序设计 输入命令 read命令 从键盘上读取数据 然后赋给指定的变量 例 readn1n2n3 回车键 echo n3 echo n2 n1 变量个数多于给定的数据个数时 依次对应赋值 没有数据对应的取空串 显示结果为空串 显示结果为21 37 Linuxshell程序设计 预先定义的特殊变量 命令行上参数的个数 上一条命令的返回值 执行成功为 执行失败返回非 值 当前进程的进程号 上一个后台命令对应的进程号 由 位数字构成 由当前shell设置的执行标志名组成的字符串 表示在命令行中实际给出的所有实参字符串 例ex6m1 cm2 c 值为 38 Linuxshell程序设计 39 Linuxshell程序设计 bash中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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