预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共80页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

shell脚本能提高用户操作和管理员进行系统管理的效率,一般步骤编辑器编写脚本程序shell做解释程序,非交互地执行脚本,两种执行方式:用sh命令执行脚本文件给脚本文件添加执行权限,用./命令执行HELLOWORLD!一、VI编辑器为什么选择VI1、VI的三种工作模式2、VI的启动3、VI的退出4、怎么编辑5、命令模式下的操作:删除与修改命令模式下的操作:文本复制、粘贴6、行命令模式下的操作:字符串的查找、替换7、设置vi案例练习二、SHELL变量与语法1、shell的基本元素(1)#!/bin/bash必须的,指出shell的类型(2)#注释(3)变量(4)控制2、一般步骤:(1)编辑文件(2)保存文件(3)将文件赋予可执行的权限(4)运行及排错注意:一般以.sh为文件后缀。没有也能执行。常见的两种执行方式./文件名在当前目录下写明路径执行,要求文件必须有执行权限,如chmod755run.sh./run.shsh文件名shrun.sh文件开头指定一个或多个解释脚本程序的shell,如#!/bin/bash如果指定,注意/bin不要漏了“/”,否则用./方式执行会找不到路径。不指定的话一般默认以/bin/sh执行shell脚本1、注释符#除了#!/bin/bash里的#特殊2、美元符$变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来3、单引号被引起的字符全部做普通字符,即全部原样echo‘my$SHELL’练习一下:区别下面几句三、变量本地变量和环境变量的对比HOME:代表使用者的家目录。cd~去到使用者的家目录或者利用cd就可以直接回到使用者家目录了。PS1:shell的主提示符SHELL:目前这个环境使用的SHELL是哪个程序?如果是bash的话,预设是/bin/bashPWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的HISTSIZE:这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。ENV:这个使用者所使用的个性化环境设置文件的读取文件。MAIL:当我们使用mail这个指令在收信时,系统会去读取的邮件信箱文件(mailbox)。PATH:就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔,由于文件的搜寻是依序由PATH的变量内的目录来查询,所以,目录的顺序也是重要的喔。LANG:语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF8PATH示例设置用户自己的环境变量使用shell预定义变量的脚本举例3、控制流程1)分支结构2)循环结构五命令结果重定向屏蔽命令任何输出的:>/dev/null2>&1*有趣的IORedirection六脚本实例#!/bin/sh-fname=/bin/dateif(test–f“$fname”)thenecho“exist”fi说明:在shell程序中经常需要判断所处理的文件是否存在。本程序采用if语句的简单格式测试date文件,如果存在,则显示相关信息,否则退出if语句。#!/bin/sh-hour=`date|cut–c10-11`iftest“$hour”–ge0–a“$hour”–le11;thenecho“Goodmorning!”eliftest“$hour”–ge12–a“$hour”–le17;thenecho“Goodafternoon!”elseecho“Goodevening!”fi说明:第一个有效语句是将命令执行的结果赋给hour变量,所以用反向单引号。用cut命令从date命令的输出中切割出“小时”信息;这里-c10-11选项表示只切割10到11列。这个程序使用了if连用格式,也可以使用if完整格式的嵌套形式。#!/bin/sh-iftest$#-ne1thenecho"Incorrectnumberofarguments"echo"Usage:ifuserusername"elseuser=$1ifwho|grep–q$user;thenecho$1"userisloggedon."exit0elseecho$1"userisnotloggedon."exit1fifi④简单的菜单功能#!/bin/sh-forfilein*.txtdoleftname=`basename$file.txt`mv$file$leftname.docdone说明:(1)在Linux系统中不支持mv*.txt*.doc这样的更名命令形式,如果需要将文件成批地更名最好编写一个shell脚本文件。(2)在for语句的参数列表中使用了“*”通配符。(3(在程序中用到base