Unix 脚本编程总结与应用实例Word格式文档下载.docx
- 文档编号:16367031
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:98
- 大小:146.12KB
Unix 脚本编程总结与应用实例Word格式文档下载.docx
《Unix 脚本编程总结与应用实例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Unix 脚本编程总结与应用实例Word格式文档下载.docx(98页珍藏版)》请在冰豆网上搜索。
作者名
……
2.00
DistributionList分发记录
CopyNo.
Holder'
sName&
Role
持有者和角色
IssueDate
分发日期
1
2
3
4
5
Catalog目录
RevisionRecord修订记录2
Catalog目录3
Title标题:
Unix脚本编程总结与应用实例8
Keywords关键词:
8
Abstract摘要:
Listofabbreviations缩略语清单:
命令格式9
一.shell与Unix平台9
二.shell基本知识9
三.grep命令11
四.sed11
五.awk命令11
六.find命令12
七.test命令12
八.expr命令13
九.流程控制语法13
1.if-then-elif-else-fi语句13
4.for语句15
6.while语句16
7.until语句17
8.break及continue18
9.case语句18
十.shell脚本调试19
实例讲解21
一.模式匹配21
1.ls显示所有以hosts.开头的文件21
2.ls显示包含x,y,z字符的所有文件21
二.正则表达式21
1.grep匹配/etc/services文件中以ftp字符串开头的哪些文本行21
2.grep匹配以system文本结尾的行。
21
3.grep匹配仅包含一个#字符的行。
4.grep匹配以<
abc>
或者[abc]开头的行21
5.grep匹配以Ftp或者ftp开头的行21
6.grep匹配F或者f以外的字符21
7.grep匹配除大写字符以外的字符21
8.grep匹配以ftp或telnet开头的文本行21
9.grep匹配以ftp开头,后跟0个或多个-agent的文本行21
10.grep匹配以ftp开头,后跟1个或多个-agent的文本行21
11.grep匹配带有数字6,后跟至少3个0的文本行(使用-E启用边界特性)22
12.grep匹配含有(abc)的文本22
13.常用正则表达式举例22
14.grep精确匹配:
在抽取字符串后加\>
。
23
15.grep消除大小写:
加入-i选项23
16.特殊字符:
$.‘“*[]^|\+?
17.grep判断变量含有[HOST]字符串23
18.grep判断变量含有[xxx]字符串23
19.grep匹配后缀为c,h,j,s,cpp,hpp的文件23
20.使用grep在文件中查找变量23
21.正则表达式语法23
三.sed命令27
1.sed文本的定位方法:
27
2.sed编辑命令27
3.sed打印文件的第二行27
4.sed打印文件的第一到三行27
5.sed打印匹配test的行28
6.sed打印匹配$的行28
7.sed打印最后一行:
$是代表最后一行的特殊字符28
8.sed脚本文件28
9.sed上例中如果将a\改为i:
28\
10.sed上例中如果将a\改为c:
11.sed删除第一行28
12.sed删除第一到第三行28
13.sed删除最后一行28
14.sed替换文本28
15.sed输出到文件,w选项:
28
16.sed从文件读取,r选项:
17.sed优势:
18.sed常见的一行命令集29
19.sed去掉字串变量前后的空格29
20.sed去除文件count中的前后的空格29
21.sed提取最后一个目录名和程序名30
22.dirname或参数扩展提取目录名30
23.grep,sed获取文件的扩展名31
24.sed获取第n个匹配的行的行号31
四.awk命令31
1.awk字段分隔符:
31
2.awk匹配模式32
3.awk“模式匹配-动作”32
4.awk内部变量32
5.awk用户定义变量32
6.awk算术运算33
7.awk高级算符33
8.awk内部算术函数33
9.awk内置函数33
10.awk的自定义函数34
11.awk的“下一”语句:
35
12.awk中的字符串相加:
13.awk的逻辑运算符35
14.awk的逻辑与||、逻辑或&
&
15.awk的FS、OFS和ORS使用:
16.awk的sprintf函数的使用36
17.awk的重定向,输出到文件:
36
18.awk删除文件的第一行36
19.awk删除输入行中特定行的换行字符36
20.awk获取输入行中,域的最大个数36
21.awk输出一行超过80个字符的每一行36
22.awk输出至少一个域的所有行。
可用来将一个文档里的所有空白行删除36
23.awk输出范围在0到100之间的7个随机数36
24.awk将所有用户的login名称依照字母的顺序输出36
25.awk将一个文档的总行数输出36
26.awk输出文档的内容时会在每行的最前面输出行号它的功能与'
cat-n'
类似36
27.awk自定义函数的例子一:
第一个域与第二个域的平方和37
28.awk的split、数组、注释37
29.awk打印传入字符串的第n个分隔域。
37
30.在awk中使用shell中的变量37
31.在某个目录下查找包含特定字符串的文件。
返回文件名称38
五.其它命令38
1.eval命令:
可用于动态生成和执行代码38
2.exitn:
退出39
3.export导出环境变量:
39
4.shift命令:
5.shell的参数扩展:
6.<
<
即时文档40
7.sh调试选项40
8.time命令测试一个程序执行时间41
9.expr命令41
10.if语句判断变量是否为某个值(防止空串)41
11.nm命令察看一下xxx.o文件中是否有多个相同名字的函数41
12.ps、grep和awk显示属于某个用户的所有进程(并杀死)41
13.touch命令42
14.touch与make联合使用强制编译42
15.dd命令传送文件42
16.talk命令42
17.ps命令42
18.rm指令43
19.find命令43
21.rusers命令43
22.cal命令43
23.tty命令43
24.banner命令43
25.find命令44
26.cut命令44
27.paste命令44
28.rm命令45
29.mkdir命令46
30.cat命令46
32.groupadd和mkgroup命令46
33.ln命令47
34.su命令47
35.setenv命令47
36.repeat命令47
37.getopts命令48
38.sort命令49
38.kill命令和trap命令49
39.操作系统和数据库检查(IBM)
(一):
检查核心参数的配置50
40.操作系统和数据库检查(IBM)
(二):
检查时区的配置50
41.操作系统和数据库检查(IBM)(三):
检查硬件错误50
42.操作系统和数据库检查(IBM)(四):
检查硬盘错误50
43.操作系统和数据库检查(IBM)(五):
检查交换区的使用情况50
44.操作系统和数据库检查(IBM)(六):
检查内存的使用情况50
45.操作系统和数据库检查(IBM)(七):
检查系统的运行情况51
46.操作系统和数据库检查(IBM)(八):
检查文件系统的使用情况51
47.操作系统和数据库检查(IBM)(九):
检查文件系统的属性51
48.操作系统和数据库检查(IBM)(十):
HACMP检查51
49.操作系统和数据库检查(IBM)(十一):
检查数据库的DR状态52
50.操作系统和数据库检查(IBM)(十二):
检查数据库的运行状态52
51.操作系统和数据库检查(IBM)(十三):
数据库检查53
52.操作系统和数据库检查(IBM)(十四):
检查数据库的运行日志54
53.fsck命令54
54.useradd和mkuser命令54
54.exec命令54
54.tr命令55
六.杂项55
1.setenvPATH和setpath=(....)55
2.awk中输出单引号55
3.awk或read找出文件行字符数大于80的行55
4.shell脚本程序中的用户切换:
56
5.shell中删除文件且不显示输出信息和出错信息56
6.shell变量赋初值时存在特殊字符56
7.sed的参数串中存在/特殊字符56
8.find在一个目录下找包含一个字符串的所有文件57
9.shell中确定一个文件的存在,文件ins_billdb57
10.read的参数与实际域的个数不同57
11.grep获取主机名和IP地址57
12.grep确定变量不是数字58
13.确定字符串是否是ip地址58
15.grep和awk列出某个目录下的一级子目录59
16.用printf将一个数打印成逗号分隔的形式59
17.iTELLIN示例一:
在ksh中使用数组60
18.iTELLIN示例二:
从文件中读取参数:
61
19.iTELLIN示例三:
包含其它脚本文件63
20.iTELLIN示例四:
初始化一个临时文件供使用63
21.iTELLIN示例五:
分解字符串64
22.iTELLIN示例六:
替换配置文件中的值64
24.iTELLIN示例八:
用另外的文件作为函数库66
25.iTELLIN示例九:
解压缩文件到一个目录66
26.iTELLIN示例十:
判断操作是否成功69
27.iTELLIN示例十一:
封装创建一个组的函数69
28.iTELLIN示例十二:
封装创建一个用户的函数71
29.iTELLIN示例十三:
判断一个字符串是否是正整数72
30.iTELLIN示例十四:
判断当前用户是否有root权限73
31.iTELLIN示例十五:
判断一个字符串是否是整数73
32.iTELLIN示例十六:
删除某个文件夹下若干天以来未改动的文件74
参考资料75
unix,shell,正则表达式,匹配
本文描述unixshell的各种应用实例。
本文搜集整理常用的shell应用实例,以例子详述unixshell部分命令的使用,着重于正则表达式以及grep、sed、awk等命令,涵盖业务开发中需要使用到的unixshell编程命令,供查阅或者自测使用,面向对象为已经具备脚本编程基础的开发人员。
注:
文中大部分表达式在sco-unixunixware7下使用sh测试通过,有些规则或表达式不能通过测试或结果不正确,在本文档中使用红色波浪下划线将其标出,使用时应注意验证其在不同shell下的表现。
本文不是命令手册,所以除部分命令如grep、sed、awk外,本文不详述讲述命令的各个参数,查看命令参数请使用man命令,本文着重于以实际例子讲述命令特征。
abbreviations缩略语
Description描述
命令格式
一.shell与Unix平台
Unix平台
shell
FreeBSD3.4
/bin/sh
SGIIPIX6.5
/sbin/sh
HUPX-11
usr/bin/sh
UnixWare7
$SHELL或/bin/sh
Solaris8(固有的)
/usr/bin/sh
Solaris8(标准的)
/usr/bin/ksh
IBMAIX4.3
IBMAIX4.3(可信的)
/usr/bin/tsh
Linux
二.shell基本知识
脚本参数:
shell脚本参数可以任意多,但只有前9各可以被访问,使用shift命令可以改变这个限制。
参数从第一个开始,在第九个结束。
$0程序名字
$n第n个参数值,n=1..9
$*所有命令行参数
$@所有命令行参数,如果它被包含在引号里,形如”$@”,则每个参数也各自被引号包括
$#命令行参数个数
$$当前进程的进程ID(PID)
$!
最近后台进程的进程ID
$?
最近使用命令的退出状态
其他参数:
$CDPATH包含一系列目录名,cd命令对他们诸葛进行搜索来查找作为参数传递给它的目录;
如果该变量未设置,cd命令搜索当前目录
$EDITOR程序(如e-mail程序)里使用的默认编辑器
$ENVUNIX查找配置文件的路径
$HOME用户初次登录时的起始目录名
$MAIL用户的系统邮箱文件的名称
$MAILCHECKshell检查用户邮箱是否有新邮件并将结果通知用户的间隔时间(以秒为单位)
$PATH包含用户的搜索路径的变量—shell用来搜索外部命令或程序的目录
$PPID父进程的进程ID
$PS1系统第一个提示符,一般为$
$PS2系统第二个提示符,一般为>
$PWD当前工作目录的名称
$TERM用户的控制终端的类型.
$LINENO所在的代码行,一般用来输出错误行号
shift[n]将命令行参数往左移n位,但$0不变
export变量名表将变量名表所列变量传递给子进程
read变量名表从标准输入读字符串,传给指定变量
echo变量名表将变量名表指定的变量显示到标准输出
set显示设置变量
env显示目前所有变量
set命令可以重新设定参数表.如sethellowold命令会设定$*为字符串helloworld,$n和$#也同时受影响。
shift命令可以将所有参数左移一个单位,$*、$n、$#均受影响。
数组(在sh中不支持,可以在ksh中使用):
${#varlist[@]}数组元素个数
${datalist[index]}数组元素
${#datalist[index]}数组元素长度
执行命令:
1)command:
直接执行命令command
2)shcommand:
启动一个shellprocess执行命令command
3).command:
在本process中执行命令command
4)execcommand:
本Script将会被所执行的命令所取代,当这个命令执行完毕之後,本Script也会随之结束。
echo命令使用的特殊字符
\b退格
\c显示新行,但是不把光标移到下一行
\f换页
\n换行(光标移到下一行)
\r回车
\t水平制表符
\v垂直制表符
\\反斜杠
\ONASCII码为八进制数N的字符
set命令:
把各位置参数的值依次设为”argument-list”里指定的参数,即重新设置$*,$@,$1-$9
如:
set“hello”“world”
则$*和$@都变成helloworld
$1为hello
$2为world
三.grep命令
搜索文本的匹配内容。
格式:
grep[-option]pattern[filename]
选项:
-c只输出匹配行的计数
-i不区分大小写(只适用于单字符)
-h查询多文件时不显示文件名
-l查询多文件时只输出包含匹配字符的文件名
-n显示匹配行及行号
-s不显示不存在或无匹配文本的错误信息
-v显示不包括匹配文本的所有行
四.sed
查找和编辑文本。
(1)直接键入命令
sed[-option]command_linefilename
(2)将sed命令插入脚本文件,然后调用sed
sed[-option]-fprogram_filefilename
(3)将sed命令插入脚本文件,并使脚本可执行
sedprogram_file[-option]filename
n不打印;
sed不把编辑行写到标准输出,默认为打印所有行(编辑的和未编辑的)。
p命令可以用来打印编辑行。
c下一个命令是编辑命令。
在使用多项编辑时要加入该选项。
f如果正在调用sed脚本,要使用此选项。
此选项sed脚本支持所有的sed命令。
五.awk命令
awk是一种程序语言,对于资料的处理具有很强的功能,对于文档里的资料做修改、比较、抽取等处理,awk能够以很短的程序轻易地完成。
如果使用C语言写程序完成上述的操作不方便且很花费时间,所写的程序也会很大。
awk能够依照用户定义的格式来分解输入的资料也可以依照用户定义的格式来打印资料。
awk可用于在对象文件中逐行读取记录,按照命令中定义的匹配模式寻找相关记录,然后对该记录进行操作动作。
格式:
(1)直接键入命令:
awk[-Fchar]‘command_line’filename
(2)将awk命令插入脚本文件,然后调用awk:
awk-fprogram_filefilename
前一种形式的-Fchar确定间隔符,command_line为操作动作,filename为对象文件。
后一种形式的program_file是指用户按一定格式编制好的对对象文件的匹配与操作。
六.find命令
通过文件名或其它特征查找文件。
find[path-list][predicate-list]
-typetp文件类型为tp:
b块特别文件
c字符设备特别文件
d目录文件
f普通文件
p管道文件(FIFO)
ssocket
I符号链接文件
-useruname文件属于用户uname。
-groupgname文件属于组gname。
-sizen文件是n块大小(每块512字节),若n后跟一个c,单位为字节。
-atimen在n天内已访问过此文件。
-mtimen在n天内已修改过此文件
-ctimen在n天内文件被修改、属性(拥有者、组、链接数等)被修改。
-execcommand{}\;
执行命令
-print打印当前路径名
-newerfile修改时间比file文件晚
七.test命令
testexpression
expression中包含一个以上的判断准则以作为test评诂的标准。
两准则间用"
-a"
代表逻辑AND运算,"
-o"
代表逻辑OR运算,而在准则前放置一"
!
"
代表NOT运算。
如果没有括号,则优先权则为"
>
"
。
和expr命令相同,相使用左右括号时,必须在其前面加上"
\"
以下是有关准则的叙述(符合叙述时传回真,否则传回伪):
stringstring不为空白字串
-nstringstring的长度大於0
-zstringstring的长度等於0
string1=string2string1等於string2
string1!
=string2string1不等於string2
int1-gtint2int1大於int2
int1-geint2int1大於等於int2
int1-eqint2int1等於int2
int1-neint2int1不等於int2
int1-leint2int1小於等於int2
int1-ltint2int1小於int2
-rfilename档案可读取
-wfilename档案可写入
-xfilename档案可执行
-ffilename档案为一般档
-dfilename档案为目录
-sfilename档案为非空的一般档
test-r"
$filename"
-a-s"
八.expr命令
命令格式
exprexpression
expression是由字串以及运算子所组成,每个字串或是运算子之间必须用空白隔开。
下表是运算子的种类及功能,而优先顺序则以先後次序排列,可以利用小括号来改变运算的优先次序。
其运算结果则输出至标准输出上。
:
字串比较。
比较的方式是以两字串的第一个字母开始,而以第二个字串的字母结束。
如果相同时,则输出第二个字串的字母个数,如果不同时则传回0。
\|OR运算,如果它非null
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unix 脚本编程总结与应用实例 脚本 编程 总结 应用 实例