一、脚本概述
1.Shell脚本是一种解释型语言
2.用Shell脚本保存执行命令
3.用脚本判定命令的执行条件
4.用脚本实现命令的批量执行
二、脚本基础知识
1.脚本编写
#!/bin/bash ##执行脚本的shell类型
2.脚本运行
[root@desktop8 mnt]# sh hello.sh ##用sh打开脚本
[root@desktop8 mnt]# chmod +x hello.sh ##添加执行权限
[root@desktop8 mnt]# /mnt/hello.sh ##用脚本本身的shell打开
3.脚本调试
[root@desktop8 mnt]# sh -x hello.sh
+ echo hello everyone ##命令行
hello everyone ##运行结果
4.自动添加脚本信息说明 ##配置文件/etc/vimrc
66 autocmd BufNewFile *.sh exec ":call WESTOS( )"
67 ##新建的以.sh结尾的文件自动添加函数WESTOS
68 " map
69 ##按F4自动添加函数WESTOS,“ 表示注释
建立新的脚本文件
三、简单脚本练习 ##脚本添加x权限
1.运行脚本 ip_show.sh 显示当前主机ip
显示主机IP
2.运行脚本 user_show.sh 显示当前主机可登陆的用户
显示主机可登陆用户
3.运行脚本 clear_log.sh 清空当前日志
四、基本脚本命令
diff ##比较文件差异
1.对比两个文件的不同
2.生成补丁
patch
1.安装补丁软件 patch.x86_64
2.打补丁
3.打补丁的同时对原文件备份 (.orig)
cut ##多用于截取字符
1.cut参数
cut -d ##指定分隔符
cut -f 1 ##指定截取每行第1列
cut -c 3 ##指定截取每行第3个字符
2.用cut编辑脚本 user_show.sh
执行脚本
3.用cut编辑脚本 ip_show.sh
执行脚本
sort ##多用于字符排序
1.sort参数
sort -n ##纯数字排序 sort -r ##倒序
sort -u ##去掉重复数字 sort -o ##输出到指定文件中
sort -t ##指定分割符 sort -k ##指定要排序的列
2.对mnt文件排序,找出最大的两个文件
uniq ##对重复字符的处理
1.uniq参数
uniq -u ##显示唯一的行
uniq -d ##显示重复的行
uniq -c ##每行显示的次数
##注意:配合sort命令使用
2.编辑文件,对重复字符处理
&&和||
1.&& 用来执行条件成立后执行的命令
2.|| 用来执行条件不成立后执行的命令
3.显示ping其他主机的结果
ping其他主机结果
注意:当执行脚本并没有加IP地址时,没有报错,不合理,需改善
test ##判断条件是否成立
1. test 参数
test 等同于 [ ]
字符型数据
[ "$a" = "$b" ] ##$a和$b是否一致
[ "$a" != "$b" ] ##$a和$b是否不一致
[ ! "$a" = "$b" ] ##$a和$b是否一致,且该条件不成立时
整型数据
[ "$a" -eq "$b" ] ##是否$a = $b
[ "$a" -ne "$b" ] ##是否$a != $b
[ "$a" -lt "$b" ] ##是否$a < $b
[ "$a" -le "$b" ] ##是否$a <= $b
[ "$a" -gt "$b" ] ##是否$a > $b
[ "$a" -ge "$b" ] ##是否$a >= $b
[ "$a" = "$b" -o "$a" -lt "100" ] ##$a是否等于$b,或者$a小于100
[ "$a" = "$b" -a "$a" -gt "100" ] ##$a是否等于$b,并且$a大于100
[ -z "$a" ] ##$a是否为空
[ -n "$a" ] ##$a是否不为空
文件
[ "file1" -ef "file2" ] ##节点是否一致,即文件是否一样
建立文件,查看节点,创建硬链接
[ "file1" -nt "file2" ] ##file1是否比file2时间new
[ "file1" -ot "file2" ] ##file1是否比file2时间out
[ -e "file" ] ##文件是否存在
[ -f "file" ] ##是否是普通文件
[ -L "file" ] ##是否是软链接文件
[ -S "file" ] ##是否是套接字
[ -b "file" ] ##是否是块设备
[ -d "file" ] ##是否是目录
[ -c "file" ] ##是否是字符文件
2.编写脚本check_num.sh判断数字是否在0-10之间
3.编写脚本clean_log.sh,当超级用户时,情况日志,当普通用户,提示请切换用户
4.编写脚本check_file.sh判断文件类型
编写脚本如下:
运行脚本检测
tr ##转换字符
find ##查找文件
1.find 参数
-group ##查找组
-type ##查找类型
-user ##查找用户
-not -group ##查找不是该组的文件
-a | -o ## and | or
-perm 777 ##精确匹配权限777的文件
-perm -644 ##匹配u=6、g=4、o=4的文件
-perm /666 ##匹配u=6或g=6或o=6的文件
-size 20k ##查找文件大小为20k的文件
-size -20k ##查找文件大小为小于20k的文件
-size +20k ##查找文件大小为大于20k的文件
-maxdepth 1 -name passwd ##查找目录的深度为1层
-mindepth 2 -maxdepth 2 -name passwd ##只查找目录的第2层
注意:最大深度为2层