一、shell脚本编程基础

内容:1. 编程基础 2. 脚本基本格式3. 变量4.运算5.条件测试6.条件判断if 7.条件判断case 8.配置用户环境

shell脚本:包含一些命令或声明,并符合一定格式的文本文件
格式要求:首行shebang机制
#!/bin/bash #!/usr/bin/python #!/usr/bin/perl
shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 bash中变量的种类 局部变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效 环境变量:生效范围为当前shell进程及其子进程 本地变量:生效范围为当前shell进程中某代码片断,通常指函数 位置变量:$1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数 特殊变量:$?, $0, $*, $@, $#,$$ 算术运算和逻辑运算 算术运算:help let +, -, , /, %取模(取余), **(乘方)
逻辑运算true (0), false(1) 条件测试 断某需求是否满足,需要由测试机制来实现专用的测试表达式需要由测试命令辅助完成测试过程
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]] COMMAND1 && COMMAND2 并且,短路与,代表条件性的AND THEN COMMAND1 || COMMAND2 或者,短路或,代表条件性的OR ELSE ! COMMAND 非 如:[ -f “$FILE” ] && [[ “$FILE”=~ .
.sh$ ]] 使用read来把输入值分配给一个或多个shell变量 条件选择if语句 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi case语句

二、文件查找和压缩

文件查找 在文件系统上查找符合条件的文件 文件查找:locate, find 非实时查找(数据库查找):locate 实时查找:find locate查询系统上预建的文件索引数据库 locate KEYWORD find实时查找工具,通过遍历指定路径完成文件查找 find [OPTION]... [查找路径] [查找条件] [处理动作] 压缩、解压缩及归档工具 tar zcvf file.tar.gz /etc/ file.tgz tar jcvf file.tar.bz2 /etc/ tar Jcvf file.tar.xz /etc tar Jxvf file.tar.xz -C /data/ tar xvf file.tar.xz

三、处理文本的工具sed

Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等 用法:sed [option]... 'script' inputfile.. 常用选项: -n 不输出模式空间内容到屏幕,即不自动打印 -e 多点编辑 -f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本 -r 支持使用扩展正则表达式 -i.bak 备份文件并原处编辑 编辑命令: d 删除模式空间匹配的行,并立即启用下一轮循环 p 打印当前模式空间内容,追加到默认输出之后 a []text 在指定行后面追加文本,支持使用\n实现多行追加 i []text 在行前面插入文本 c []text 替换行为单行或多行文本 w /path/file 保存模式匹配的行至指定文件 r /path/file 读取指定文件的文本至模式空间中匹配到的行后 = 为模式空间中的行打印行号 ! 模式空间中匹配行取反处理 sed工具 s/// 查找替换,支持使用其它分隔符,s@@@;s### 替换标记: g 行内全局替换 p 显示替换成功的行 w /PATH/FILE 将替换成功的行保存至文件中 四,查找工具和文件压缩   文件查找介绍了locate和find,其中locate是按数据库非实时查找的,一些地方欠缺,一般使用较少,find命令在生产中使用较多,find命令支持多种条件查找,文件压缩介绍的工具就比较多了,每一种都有它的不同的压缩算法,compress是一款较老的压缩工具了,它的后缀是.Z的,目前市面上用这款的比较少,gzip的后缀是.gz 还有bzip2后缀是.bz2,这两款是现在比较流行的,xz后缀为.xz是一款比较新的压缩工具,压缩效果比较好。 这几种压缩工具只能对文件进行压缩,对于文件夹就无能无力了,zip后缀为.zip是一款打包压缩的工具,可以对文件夹进行打包压缩,使用也是比较广泛的。   tar是一款归档工具,可以结合压缩工具归档并压缩。split是一款可以把一个文件切割成多份的工具。 cpio命令可以复制文件到归档