210 likes | 384 Views
Linux 操作系统应用. 子情境 5.1 Shell 命令编程. 教学单元 5.1.1 Shell 程序的编写与执行. 统计车间生产数据. 每天上午和下午下班前必须对数据进行双硬盘备份,且要求保存最近 3 次备份。. 改手工为 Shell 程序进行备份。. 备份的数据存放于 /home/hbzy/workdata/. 最近三次备份文件为 worknewdata.tar 、 work2nddata.tar 、 work3rddata.tar. 备份文件存放于 /home/hbzy/disk1backup/ 和 /dev/disk2backup/. 任务描述.
E N D
Linux操作系统应用 子情境5.1 Shell命令编程 教学单元5.1.1 Shell程序的编写与执行
统计车间生产数据 每天上午和下午下班前必须对数据进行双硬盘备份,且要求保存最近3次备份。 改手工为Shell程序进行备份。 备份的数据存放于/home/hbzy/workdata/ 最近三次备份文件为worknewdata.tar、work2nddata.tar、work3rddata.tar 备份文件存放于/home/hbzy/disk1backup/和/dev/disk2backup/ • 任务描述
任务实施流程 浏览“相关资讯” 任务准备 设计执行任务的程序结构与流程 用vi编辑Shell程序 调试shell程序 执行shell程序
1 什么是Shell程序 2 为什么要使用Shell编程 • 相关资讯 Shell本身就是一个解释型的程序设计语言,输入的任何命令都能直接添加到一个可执行的Shell程序中;它还提供了定义变量和参数的手段、丰富的程序控制结构。 把多个命令编制成一个Shell程序(Shell脚本)来完成这些复杂任务。
3 Shell程序基本组成 ·主体:是变量、控制语句及命令语句组成。 ·以#!作为第一行开头,用#表示注释。 4 在Shell脚本中常用的bash内部命令 (1)echo 功能:在屏幕上显示出由arg参数指定的字符串。 格式:echo arg • 相关资讯
4 在Shell脚本中常用的bash内部命令 • 相关资讯 (2)eval 功能:读入参数args,并将它们合并成一个新的命令,然后执行。 格式:eval args (3)exec 功能:不创建新的子进程,而是转去执行指定的命令,当指定的命令执行完成时,该进程就终止。 格式:exec 命令参数 (4)wait 功能:使Shell等待在后台启动的所有子进程结束,wait的返回值总为真。 格式:wait (5)exit 功能:退出Shell程序。 格式:exit [数字] (6)“.”(点) 功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句。 格式: .Shell程序文件名
1 2 一台装有RHEL 5 Server操作系统的计算机,系统装载2块硬盘,其中非引导硬盘挂载为/dev/disk2backup;在主硬盘/home/hbzy/下建立有workdata、disk1backup两个目录分别用来存放用户工作数据文件和用户工作数据备份文件(worknewdata.tar、work2nddata.tar、work3rddata.tar)。 启动该计算机以hbzy帐号(密码hbzy123)进入字符界面。 • 任务准备
3 图10-1 查看/home/hbzy/disk1backup目录 图10-2 查看/dev/disk2backup目录 • 任务准备 查看执行任务前相关目录的状态。 -用cd命令进入/home/hbzy/disk1backup/目录,再用ls –l 命令显示,如图10-1所示。 -用cd命令进入/dev/disk2backup/目录,然后用ls –l 命令显示,如图10-2所示。
步骤1 设计完成任务的程序结构、流程 • 任务实施 在动手编写程序前,必须先构思并设计出完成任务的程序基本结构、流程如下: (1) 使用rm命令删除/home/hbzy/disk1backup/目录下的work3rddata.tar文件。 (2) 使用mv命令将/home/hbzy/disk1backup/目录下的work2nddata.tar改名为work3rddata.tar。 (3) 使用mv命令将/home/hbzy/disk1backup/目录下的worknewdata.tar改名为work2nddata.tar。 (4) 使用tar命令将/home/hbzy/workdata/目录备份为worknewdata.tar文件存放于/home/hbzy/disk1backup/目录中。 (5) 使用rm命令删除/dev/disk2data/目录中的worknewdata.tar、work2nddata.tar、work3rddata.tar三个文件。 (6) 使用cp命令将/home/hbzy/disk1backup/目录下worknewdata.tar、work2nddata.tar、work3rddata.tar三个文件复制到/dev/disk2backup/目录中。 (7) 使用输出任务完成的提示信息。
步骤2 使用vi编辑Shell程序autobackupdata.shell • 任务实施 (1)启动vi编辑器 输入命令:vi autobackupdata.shell (2)输入程序 在vi编辑器界面输入下列程序内容,输入完毕后保存退出vi。程序内容见下页。
#!/bin/bash #delete file work3rddata.tar rm /home/hbzy/disk1backup/work3rddata.tar #rename file work2nddata.tar to work3rddata.tar mv /home/hbzy/disk1backup/work2nddata.tar /home/hbzy/disk1backup/work3rddata.tar #rename file worknewdata.tar to work2nddata.tar mv /home/hbzy/disk1backup/worknewdata.tar /home/hbzy/diskbackup/work2nddata.tar #backup /home/hbzy/workdata to /home/hbzy/disk1backup/worknewdata.tar tar cf /home/hbzy/disk1backup/worknewdata.tar /home/hbzy/workdata #delete files worknewdata.tar、work2nddata.tar、work3rddata.tar in /dev/disk2data folder rm /dev/disk2backup/worknewdata.tar rm / dev/disk2backup/work2nddata.tar rm / dev/disk2backup/work3rddata.tar #copy worknewdata.tar、work2nddata.tar、work3rddata.tar to /dev/disk2backup cp /home/hbzy/disk1backup/worknewdata.tar /dev/disk2backup/ cp /home/hbzy/disk1backup/work2nddata.tar /dev/disk2backup/ cp /home/hbzy/disk1backup/work3rddata.tar /dev/disk2backup/ echo “Task is finished” • 任务实施
输入命令:bash autobackupdata.shell 如果程序有错,返回“步骤2”修改程序,直到程序正确。 输入命令如图10-4所示: 图10-4 运行Shell程序 • 任务实施 步骤3 调试Shell程序 步骤4 增加Shell程序的可执行权并运行
1 查看任务完成后相关文件状况 查看任务完成后/home/hbzy/disk1backup/、/dev/disk2backup/目录下文件状况。 2 分析观测结果 通过任务完成前后显示的文件创建时间对比可知任务按要求完成。 • 任务检测
每种Shell都有自己的配置文件,用户可设置各种环境变量。重要的Shell环境配置文件有:每种Shell都有自己的配置文件,用户可设置各种环境变量。重要的Shell环境配置文件有: /etc/bashrc 包含系统定义的命令别名和bash的环境变量定义。 /etc/profile 包含系统的环境定义,并指定启动时必须运行的程序。 /etc/inputrc 包含系统的键盘设定,以及针对不同终端程序的键位配置信息。 $HOME/.bashrc 包含为用户定义的命令别名和bash的环境变量定义。 $HOME/bash_profile 包含为用户定义的环境变量,并指定用户登录时需要启动的程序。 $HOME/.inputrc 包含用户的键盘设定,以及针对用户终端的键位配置信息。 Shell环境配置文件 1 • 知识或技能拓展
(1) Shell预定义变量(内建变量) Shell变量类型 2 • 知识或技能拓展 常用的Shell预定义变量有: $#:位置参数的数量。 $*:所有位置参数的内容。 $?:命令执行后返回的状态,用于检查上一个命令执行是否正确(返回0表示该命令被正确执行;返回非0值表示该命令执行出错) $$:当前进程的进程号。 $!:后台运行的最后一个进程号。 $0:当前执行的进程名 $1、$2、$3等:位置参数
(2) Shell环 境变量 Shell变量类型 2 • 知识或技能拓展 常用的Shell环境变量(与系统工作环境有关的变量)有: PATH 命令搜索路径。 PWD 当前工作目录的绝对路径,其取值随cd命令的使用而变化。 SHELL 用户的Shell类型。 PS1 主命令提示符。 IFS Shell使用的分隔符。 LOGNAME 用户登陆名,也就是账户名。 UID 当前用户的识别码。 HOME 用户主目录的位置,通常是/home/用户名。 TERM 终端类型。 HISTFILE 命令历史文件。 HISTSIZE 命令历史文件中最多可包含的命令条数。
(3) 用户变量 Shell变量类型 2 • 知识或技能拓展 用户定义的变量由字母、数字及下划线组成,变量名的第一个字符不能为数字,区分大小写。自定义变量的语法规则: -变量名=变量值 这样创建的变量是只属于当前Shell程序的局部变量。 -export 变量名 将一个局部变量提供给其它命令或Shell程序使用。 -export 变量名=变量值 在给变量赋值的同时使用export命令。 -readonly 变量名 保证变量的只读性。
(4) 参数变量 Shell变量类型 2 • 知识或技能拓展 -变量=${参数-word}:用参数的值来置换变量的值,否则用word置换。 -变量=${参数=word}:用参数的值来置换变量的值,否则把变量设置成word,然后再用word替换参数的值。注意,位置参数不能用于这种方式。 -变量=${参数?word}:用参数的值来置换变量的值,否则就显示word,并从Shell程序退出。 -变量=${参数+word}:如果设置了参数,则用word置换变量,否则不进行置换。
Shell程序的优点和基本组成 Shell程序中常用的内部命令 编写Shell程序的基本过程和基本方法 (重点) Shell环境配置文件 (重点) Shell变量类型(重点、难点) • 任务总结
一 1、2、3、4、5、6、7、8、9、10 二 1、2、3 • 操作与练习
Thank You ! 行重于思 做重于说