自己总结的linux shell 脚本讲解+示例 精典版

上传人:mg****85 文档编号:45327384 上传时间:2018-06-15 格式:PDF 页数:35 大小:964.22KB
返回 下载 相关 举报
自己总结的linux shell 脚本讲解+示例 精典版_第1页
第1页 / 共35页
自己总结的linux shell 脚本讲解+示例 精典版_第2页
第2页 / 共35页
自己总结的linux shell 脚本讲解+示例 精典版_第3页
第3页 / 共35页
自己总结的linux shell 脚本讲解+示例 精典版_第4页
第4页 / 共35页
自己总结的linux shell 脚本讲解+示例 精典版_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《自己总结的linux shell 脚本讲解+示例 精典版》由会员分享,可在线阅读,更多相关《自己总结的linux shell 脚本讲解+示例 精典版(35页珍藏版)》请在金锄头文库上搜索。

1、Linux Shell 脚本讲解脚本讲解+示例示例 精华版精华版 1Vi 编辑器编辑器 向下查找:在 Normal 模式下, “/”+Keyword,如:/tcp 向上查找:在 Normal 模式下, “?”+Keyword,如:?tcp 替换:在 Normal 模式下, “:s”+“/”+Sourceword+“/”+“Destword” ,如: :s/abc/bcd 全部替换:在 Normal 模式下, “:s”+“/”+Sourceword+“/”+“Destword”+“/g” ,如: :s/ad/bc/g 指定范围替换:在“: ”与“s”间加入范围,如“:n1,n5s/abc/dda

2、s/g”替换 1 至 5 行, “:1,$s/abc/ddas/g”替换全部 2Gedit 编辑器编辑器 图形界面编辑器,在命令行输入 Gedit+文件名即可弹出编辑器并打开文件。优点:语法 高亮,操作方便。缺点:要在图形界面下操作,远程连接比较慢。 3罗列文件罗列文件的详细信息的详细信息:ls -l 如:ls -l *.txt 可以列出所有以 txt 为后缀的文件的详细信息 4正则表达式正则表达式 符号 意义*0 个或多个在* 字符之前那个普通字符. 匹配任意字符 匹配行首,或后面字符的非$ 匹配行尾 匹配字符集合 转义符,屏蔽一个元字符的特殊意义 精确匹配符号n匹配前面字符出现 n 次n,

3、匹配前面字符至少出现 n 次n,m匹配前面字符出现 n 次与 m 次之间*符号用于匹配前面一个普通字符的 0 次或多次重复 hel*o: *符号前面的普通字符是 l, *字符就表示匹配 l 字符 0 次或多次, 如字符串 helo、hello、hellllllo 都可以由 hel*o 来表示 .符号用于匹配任意一个字符 73.表示前面三个字符为任意字符,第 4 和第 5 个字符是 7 和 3,最后一个字符为任 意字符,如 xcb738、4J973U 都能匹配上述字符串 符号用于匹配行首,表示行首的字符是字符后面的那个字符 cloud 表示匹配以 cloud 开头的行 $符号匹配行尾,$符号放在

4、匹配字符之后 a、b、1、2 等字符属于普通字符,普通字符可以按照字面意思理解,如:a 只能理解为英文的小写字母 a,没有其他隐藏含义。 micky$表示匹配以 micky 结尾的所有行 $ 表示空白行 匹配字符集合,该符号支持穷举方法列出字符集合的所有元素 0123456789、0-9 A-Za-z A-Za-z* 匹配所有英文单词 符号是转义符,用于屏蔽一个元字符的特殊意义 . $ 符号是精确匹配符号,该符号利用符号屏蔽=1) $0 记录的所有域 ARGC 命令行参数的数量 ARGLND 命令行中当前文件的位置(以 0 开始标号) ARGV 命令行参数的数组 CONVFMT 数字转换格式

5、ENVIRON 环境变量关联数组 ERRNO 最后一个系统错误的描述 FIELDWIDTHS 字段宽度列表,以空格键分割 FILENAME 当前文件名 FNR 浏览文件的记录数 FS 字段分隔符,默认是空格键(和 Tab) IGNORECASE 布尔变量,如果为真,则进行忽略大小写的匹配 NF 当前记录中的域数量 NR 当前记录数 OFMT 数字的输出格式 OFS 输出域分隔符,默认是空格键 ORS 输出记录分隔符,默认是换行符 RLENOTH 由 match 函数所匹配的字符串长度 RS 记录分隔符,默认是空格键 RSTART 由 match 函数所匹配的字符串的第 1 个位置 SUBSEP

6、 数组下标分隔符,默认值是 034 15awk 关系、布尔运算符、表达式 运算符 意义 大于 = 大于等于 = 等于 != 不等于 匹配正则表达式 ! 不匹配正则表达式 运算符 意义 | 逻辑或 express2; express3) do command done 例: #!/bin/bash for( integer=1; integer filename 将标准输出写到文件 filename 之中 filename 将标准输出写到文件 filename 之中,若 filename 文件已存在,则将标准输出追加到 filename 已有内容之后 | filename 即使noclobber

7、选项已开启, 仍然强制将标准输出写到文件filename之中,即将 filename 文件覆盖掉 n| filename 即使 noclobber 选项已开启, 仍然强制将 FD为 n 的输出写到文件filename之中,即将 filename 文件覆盖掉 n filename 将 FD 为 n 的输出写到文件 filename 之中 n filename 将 FD 为 n 的输出写到文件 filename 之中,若 filename 文件已存在,则将 FD 为 n 的输出追加到 filename 已有内容之后 filename,重定向标准错误输出 do read filename let “

8、count +=1“ done loggg #计算 loggg 文件的最大行数,并赋给 maxline 变量 #这是与 while 和 until 循环最大的区别 #灵活运用了输入重定向符号) 、管道符(|)和 do let count=count+1 echo “This is the $count sleep“ sleep 5 done 60. 圆括号结构圆括号结构 圆括号内的n条命令在子Shell中运行, bash版本 3之后定义了内部变量BASH_SUBSHELL,该变量记录了子 Shell 的层次。层次从 0 开始。子 Shell 可以继承父 Shell 的一些属性, 但父 Shel

9、l 不能继承子 Shell 的属性。 子 Shell 能够从父 Shell 继承得来的属性如下: 当前工作目录 环境变量 标准输入、标准输出和标准错误输出 所有已打开的文件标识符 忽略的信号 子 Shell 不能从父 Shell 继承得来的属性,归纳如下: 除了环境变量和.bashrc 文件中定义变量之外的 Shell 变量 未被忽略的信号处理 61. Shell 的限制模式的限制模式 以前所讲的 Shell 都是运行在正常模式下的, Shell 还有一种模式称为限制模式, 简称 rsh (Restricted Shell) ,处于限制模式的 Shell 下运行一个脚本或脚本片断,将会禁用一些

10、命令或操作。限制的命令和操作包含如下几方面: 用 cd 命令更改当前工作目录的命令 更改重要环境变量的值,包括$PATH、$SHELL、$BASH_ENV、$ENV 和$SHELLOPTS 输出重定向符号,包括、|、 do let count=count+1 echo “This is the $count sleep“ sleep 5 done trap 命令还可以忽略某些信号, 即进程收到某些信号后不做任何处理, 我们只要简单将trap 命令的 command 用空字符串代替即可(“或) 子 Shell 继承父 Shell 忽略的信号,不能继承父 Shell 未忽略的信号 65. 函数函数

11、 在函数名前可以加上关键字 function,但加上和省略关键字 function 对脚本的最终执行 不产生任何影响。 函数体中的命令集合必须含有至少一条命令, 即函数不允许空命令, 这一点和 C 语言不 同。 在 bash Shell 编程中,向函数传递的参数仍然是以位置参数的方式来传递的,而不能传递数组等其它形式变量,这与 C 语言或 Java 语言中的函数传递是不同的。 在 Linux Shell 编程中, 函数还可传递间接参数, 但该方式传递方式远远没有 C语言和 Java语言灵活, 而只能使用间接变量引用来传递参数, 这种方式是一种笨拙的间接参数传递 方式。其中表达式 expr1 为

12、循环变量赋初值的语句。 在 Linux Shell 编程中, 函数通过 return 返回其退出状态, 0 表示无错误, 1 表示有错误。 在脚本中可以有选择的使用 return 语句,因为函数在执行完最后一条语句后将执行调用该函数的地方执行后继操作。 在 Linux Shell 编程中,可以通过 local 关键字在 Shell 函数中声明局部变量,局部变量将 局限在函数范围内。此外,函数也可调用函数外的全局变量,如果一个局部变量和一个全局变量名字相同,则在函数中局部变量将会覆盖掉全局变量。 Linux Shell 中可以递归调用函数,即函数可以直接或间接调用其自身。在递归调用中,主调函数又

13、是被调函数。 执行递归函数将反复调用其自身, 每调用一次就进入新的一层。 66. 别名别名 bash Shell 的别名(aliases)可以为系统命令重新起一个名字,命令格式是:alias alias-name= original-command,例:alias cdetc=cd /etc;cdetc。Original-command 中有空格时需要用单引号,否则不需要。 删除已经设置的别名,可以使用 unalias 命令,unalias 是一个内建命令,有如下两种格 式: unalias alias-name #删除别名 alias-name unalias -a #删除所有别名 在脚本中使用别名需要打开 expand_aliases 选项 shopt -s expand_aliases alias 命令不能在诸如 if/then 结构、循环和函数等混合型结构中使用 67. 列表列表 列表由一串命令用与运算(; /backup/bak01.txt #完成目标(2) 50 17 * * * tar zcvf backup.tar.gz /data #完成目标(3) 55 17 * * * umount /dev/hdc #完成目标(4)

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

当前位置:首页 > 生活休闲 > 科普知识

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