网站内部优化是什么,网站首页一般做多大,诸城网站建设费用,打米传奇手游目录
第一章#xff1a;shell介绍
1、shell简介
2、shell应用场景
第二章#xff1a;shell的使用技巧
1、vi编辑器的基本使用
2、shell常见的解释器
#xff08;1#xff09;解释器理解
#xff08;2#xff09;常见解释器
#xff08;3#xff09;编写shell脚…目录
第一章shell介绍
1、shell简介
2、shell应用场景
第二章shell的使用技巧
1、vi编辑器的基本使用
2、shell常见的解释器
1解释器理解
2常见解释器
3编写shell脚本
3、shell脚本文件权限与脚本执行
1shell脚本文件权限
2shell脚本执行
第三章shell的变量以及常见符号
1、常见变量
2、常用的几个符号
3、秒变计算器的运算符
1整数
2小数
4、常见的条件判断
1文件夹/路径判断
2权限判断
3整数型判断
4浮点型判断
5字符串判断
6练习
# 判断输入变量大小
# 判断创建文件结果
第四章shell脚本的输入输出
1、shell脚本输入之read命令
1read常见参数
2示例
2、shell脚本输出上色
1脚本输出上色
2示例
第五章处理海量数据的grep、cut、awk、sed 命令
1、grep命令
1应用场景
2语法
3选项说明
2、cut命令
1应用场景
2语法
3、awk命令
1应用场景
2语法
3特殊要点以及举例说明
# 特殊字段
# 选项
4、sed命令
1sed应用场景
2sed语法
第六章神奇的循环控制语句if 、for、case、while
1、if 循环控制
1单分支
# 语法
# 示例
2多分支
# 语法
# 示例
编辑2、for循环控制
1语法
2示例
3、case循环控制
1应用场景
2语法结构
3示例
4、while 循环
1应用场景
2语法结构
3示例
第七章shell实战
1、如何让shell实现可选择性执行的功能
2、巡检内存使用率
3、批量创建用户
4、数据库里查询学生成绩
1数据库中建表
2新建shell脚本
5、实现高效率登录别的机器 第一章shell介绍
1、shell简介
Shell是一种脚本语言又是一种命令语言可以通俗一点来讲Shell脚本就是一系列命令的集合可以在Unix/linux上面直接使用并且直接调用大量系统内部的功能来解释执行程序把一些重复性工作交给shell做来实现自动化运维。
Shell 虽然没有C/C、Java、Python等强大但也支持了基本的编程元素。例如if、for、while等循环还有变量、数组、字符串、注释、加减乘除逻辑运算等。
2、shell应用场景
Shell 主要用来开发一些实用的、自动化的小工具而不是用来开发具有复杂业务逻辑的中大型软件
监控linux系统环境的使用情况数据的处理。eg日志的切割、分析、统计等与数据库的交互对数据库进行增删改查等操作监控进程自动化启停服务进程完成一些重复性的工作。eg创建100个新用户;到服务器集群配置某个文件等
第二章shell的使用技巧
1、vi编辑器的基本使用 vi 编辑器是所有 unix 及 Linux 系统下标准的编辑器它的强大不逊色于任何最新的文本编辑器 参考文章Linux入门基础完整版【详解】-CSDN博客
【第三章第五节】 2、shell常见的解释器
1解释器理解
一种命令解释器主要作用是对命令进行运行和解释将需要执行的操作传递给操作系统内核并执行
2常见解释器
# !/bin/bash默认
# !/bin/ksh
# !/bin/bsh
# !/bin/sh
3编写shell脚本
vi first.sh//脚本内容
# !/bin/bash
# 作者YYL
# 编写时间2024-03-23
# 功能this is my first shell
echo this is my first shell ! 注意shell一定要有解释器吗----------不一定 3、shell脚本文件权限与脚本执行
1shell脚本文件权限 文件权限 - rw- r-- r-- 目录权限 d rw- r-- r-- 权限分为三列每三个为一列分别是所有者 (owner) 所属组 (group) 其他 (others) 2shell脚本执行 方法1添加执行权限 chmod x shell.sh 然后执行 ./shell.sh方法2sh shell.sh 或者bash shell.sh方法3source shell.sh 第三章shell的变量以及常见符号 1、常见变量
不同于其他语言需要先声明变量再调用shell的变量直接使用如下
//赋值
a15//调用变量
echo $a 或者 echo ${a}常用的变量如下
变量含义$?判断上一条命令执行的是否成功$0返回脚本的文件名称$1-$9返回对应的参数值即第一个参数、第二个参数......$*返回所有的参数值$#返回参数的个数和
新建一个test脚本简单使用上述变量执行情况如下
#!bin/bash
# 作者YYL
# 编写时间2024-03-25
# 功能shell变量使用情况
echo 脚本名称$0
echo 第一个参数是$1
echo 第二个参数是$2
echo 第四个参数是$4
echo 共输入了 $# 个参数
echo 输入的参数都有哪些$*2、常用的几个符号
符号含义追加内容会覆盖原有的内容追加内容不会覆盖原有的内容;执行多条命令|管道符前面的命令执行成功后面的才可以执行||前面的命令执行失败后面的才可以执行会输出变量值会直接输出引号内本身的内容输出命令的结果 如adate;echo $a2错误输出 如2 /dev/null 错误输出到无底洞1正确输出 3、秒变计算器的运算符
1整数
计算方式数字运算变量运算加expr 12 6expr $a $becho $[12 6]echo $[a b]echo $((12 6))echo $((a b))减expr 12 - 6expr $a - $becho $[12 - 6]echo $[a - b]echo $((12 - 6))echo $((a - b))乘expr 12 \* 6expr $a \* $becho $[12 * 6]echo $[a * b]echo $((12 * 6))echo $((a * b))除expr 12 / 6expr $a / $becho $[12 / 6]echo $[a / b]echo $((12 / 6))echo $((a / b))求余expr 12 % 6expr $a % $becho $[12 % 6]echo $[a % b]echo $((12 % 6))echo $((a % b)) 2小数
在进行小数计算时需要用到【bc计算器】直接输入【bc】即可进入计算器其中scale可以设置保留几位小数不过它只对除法、取余数、乘幂有效对加减无效
用命令使用bc计算器来计算如下
计算命令计算结果echo scale2;(0.20.3)/1 | bc计算出0.20.3的和并保留两位小数此时bc计算器会省略掉个位数的0echo scale2;(1.21.3)/1 | bc计算出1.21.3的和并保留两位小数 注意使用bc计算器计算出来的结果如果是零点几那么前面的零忽略不显示 4、常见的条件判断 条件判断语法[ 判断表达式 ] 1文件夹/路径判断
参数参数说明举例举例说明-e目标是否存在[ -e for.sh ] || touch for.sh判断当前目录下是否有for.sh文件假如没有就创建一个for.sh文件-d是否为路径[ -d /home/LL ] echo /home/LL存在查看 /home/LL 该路径是否存在存在则返回【/home/LL存在】的信息不存在则无信息返回-f是否为文件[ -f first.sh ] echo first.sh是一个文件判断first.sh是否为文件如果是则输出【first.sh是一个文件】的信息如果不是则无信息返回
2权限判断
参数参数说明举例举例说明-r是否有读取权限[ -r for.sh ] echo 有读取权限判断for.sh文件有读取权限并输出信息-w是否有写入权限[ -w for.sh ] echo 有写入权限判断for.sh文件有写入权限并输出信息-x是否有执行权限 [ -x first.sh ] echo first.sh 文件有执行权限判断first.sh文件是否有执行权限如果有则输出【first.sh 文件有执行权限】的信息如果没有则无
3整数型判断
参数参数说明举例-eq等于equal[ 8 -eq 8 ] echo 8 等于 8-ne不等于not equal[ 9 -ne 8 ] echo 9 不等于 8-gt大于greater than[ 9 -gt 8 ] echo 9 大于 8-lt小于lesser than[ 7 -lt 8 ] echo 7 小于 8-ge大于或者等于greater or equal[ 9 -ge 8 ] echo 9 大于或者等于 8-le小于或者等于lesser or equal[ 7 -le 8 ] echo 7 小于或者等于 8 4浮点型判断
浮点型判断应用偏少需要用到【bc计算器】这里简单举例 [ echo 1.2 1.3 | bc -eq 1 ] echo 1.2 小于 1.3
5字符串判断
参数参数说明举例相等 [ kkkk kkkk ] echo 两个字符串相等 !不相等[ kkkkk ! kkkk ] echo 两个字符串不相等
6练习
# 判断输入变量大小
新建一个【judge.sh】文件编写shell脚本并执行查看结果
#!/bin/bash
# 判断输入的第一个数是否大于输入的第二个数
# by YYL
if [ $1 -eq $2 ]
then
echo $1 等于 $2else
echo $1 不等于 $2
fi # 判断创建文件结果
新建一个【touch_1.sh】文件编写shell脚本并执行查看结果
#!/bin/bash
# 判断创建的文件是否创建成功
# by YYL
touch $1
if [ $? -eq 0 ];then
echo $1 创建成功
fi 第四章shell脚本的输入输出
1、shell脚本输入之read命令 语法read -参数 1read常见参数
参数参数说明-p给出提示符默认不支持 “\n” 换行-s隐藏输入的内容如果要使用必须写在 -s 之前-t给出等待的时间超时会退出 read如果要使用必须写在 -s 之前-n限制读取字符的个数触发到临界值会自动执行如果要使用必须写在 -s 之前
2示例
新建一个【123.sh】文件编写shell脚本并执行查看结果该脚本用于输入密码后再进行输出
方法1
#!/bin/bash
# 输出所输入的密码
# by YYLread -n 5 -p 请输入您的密码 pass
echo -e \n
echo 您输入的密码是$pass 方法2
#!/bin/bash
# 输出所输入的密码
# by YYLecho 请输入您的密码
read pass
echo 您输入的密码是$pass 2、shell脚本输出上色
1脚本输出上色 语法 echo -e \033[ 字背景颜色 ; 字体颜色 ; 特效字符串 \033[ 关闭属性 #字体色范围30-37
echo -e \033[30m 黑色字 \033[0m
echo -e \033[31m 红色字 \033[0m
echo -e \033[32m 绿色字 \033[0m
echo -e \033[33m 黄色字 \033[0m
echo -e \033[34m 蓝色字 \033[0m
echo -e \033[35m 紫色字 \033[0m
echo -e \033[36m 天蓝字 \033[0m
echo -e \033[37m 白色字 \033[0m
#字背景颜色范围40-47
echo -e \033[40;37m 黑底白字 \033[0m
echo -e \033[41;30m 红底黑字 \033[0m
echo -e \033[42;34m 绿底蓝字 \033[0m
echo -e \033[43;34m 黄底蓝字 \033[0m
echo -e \033[44;30m 蓝底黑字 \033[0m
echo -e \033[45;30m 紫底黑字 \033[0m
echo -e \033[46;30m 天蓝底黑字 \033[0m
echo -e \033[47;34m 白底蓝字 \033[0m
# 特效范围
echo -e \033[0m 无任何特效 \033[0m
echo -e \033[1m 高亮度 \033[0m
echo -e \033[4m 下划线 \033[0m
echo -e \033[5m 闪烁 \033[0m 2示例
#!/bin/bash
read -p echo -e \033[45;30;5m 请输入您的密码: \033[0m pass
echo $pass 第五章处理海量数据的grep、cut、awk、sed 命令 前言grep 、 cut 、 awk 、 sed 常常应用在查找日志、数据、输出结果等等并对我们想要的数据进行提取通常grep sed 命令是对行进行提取 cut 跟 awk 是对列进行提取 1、grep命令
1应用场景
通常对数据进行行的提取
2语法
grep [选项]...[内容]...[file]
3选项说明
选项选项说明示例-v对内容进行取反提取grep -v root /etc/passwd-n对提取的内容显示行号grep -n root /etc/passwd-w精确匹配grep -w user /etc/passwd-i忽略大小写grep -i user /etc/passwd^匹配开头行首grep -i ^user /etc/passwd //匹配以user为开头的行-E正则匹配grep -E user|root|adm /etc/passwd //匹配user、root、adm所在行 2、cut命令
1应用场景
通常对数据进行列的提取
2语法
cut [选项]...[file]
参考文章Linux入门基础完整版【详解】-CSDN博客 四-5 3、awk命令
一个非常强大的数据处理命令支持条件判断、数组、循环等功能与grep、sed被称为linux三剑客
1应用场景
通常对数据进行列的提取
2语法
awk 条件 {执行动作} 文件名
awk 条件1 {执行动作} 条件2 {执行动作} ... 文件名
awk [选项] 条件1 {执行动作} 条件2 {执行动作} ... 文件名
3特殊要点以及举例说明
# 特殊字段
特殊字段含义参数参数说明示例printf格式化输出不会自动换行%ns字符串型n代表有多少个字符printf %s\t%s\t%s\t%s\t%s\t%s\n 1 2 3 4 5 6%ni整型n代表输出几个数字%nf浮点型n代表的是小数点后有多少个小数\t制表符echo scale2;0.130.1 | bc | awk {printf %.2f\n,$0} //完整打印出0.23\n换行符print打印出内容默认会自动换行df -h | grep /dev/vda1 | awk {printf /dev/vda1的使用率是} {print $5} # 选项
选项含义举例查询结果$1代表第一列df -h | grep /dev/vda1 | awk {printf /dev/vda1的使用率是} {print $5}打印出第二行第五列的数据$2代表第二列$0代表一整行echo scale2;0.130.1 | bc | awk {printf %.2f\n,$0}完整打印出0.23-F指定分隔符cat /etc/passwd | awk -F : {print $1}以【:】为分隔符打印出第一列的数据BEGIN在读取所有行内容前就开始执行常常被用于修改内置变量的值cat /etc/passwd | awk BEGIN {FS:} {print $1}以【:】为分隔符打印出第一列的数据FSBEGIN时定义分隔符END结束的时候执行cat /etc/passwd | awk BEGIN {FS:} {print $1} END {printf 以上为执行结果 \n}执行结束胡输出一行“以上为执行结果”NR行号df -h | awk NR2 {print $6}打印出第二行第六列的数据df -h | awk (NR 2 NR 5) {print $6}打印出第二到五行的第六列数据 4、sed命令
1sed应用场景
主要对数据进行处理选取、新增、替换、删除、搜索
2sed语法
sed [选项] [动作] 文件名
参考文章Linux入门基础完整版【详解】-CSDN博客 四-7 第六章神奇的循环控制语句if 、for、case、while 1、if 循环控制
1单分支
# 语法
if [ 条件判断 ];then执行动作
fiif [ 条件判断 ];then执行动作
else执行动作
fi
# 示例
例1判断【/home/LL】目录下是否存在文件1.txt返回信息如下
存在/home/LL目录下存在1.txt文件不存在/home/LL目录下不存在1.txt文件
# 单分支循环
#!/bin/bash
# 判断文件是否存在if [ -e /home/LL/1.txt ];thenecho /home/LL目录下存在1.txt文件
elseecho /home/LL目录下不存在1.txt文件
fi例2判断【/home/LL】目录下是否存在某个文件该文件执行时输入返回信息如下
存在/home/LL目录下存在目标文件不存在/home/LL目录下不存在目标文件
# 单分支循环
#!/bin/bash
# 判断文件是否存在if [ -e /home/LL/$1 ];thenecho /home/LL目录下存在目标文件
elseecho /home/LL目录下不存在目标文件
fi2多分支
# 语法
if [条件判断];then执行动作
elif [条件判断];then执行动作
elif [条件判断];执行动作
fi
# 示例
判断输入的一个数字是否大于10
#多分支循环
#!/bin/bash
# 判断输入的数字是否大于10
echo 请输入一个数字
read number
if [ $number -eq 10 ];thenecho 等于10
elif [ $number -lt 10 ]thenecho 小于10
elif [ $number -gt 10 ]thenecho 大于10
fi 2、for循环控制
1语法
for 变量名 in 值1 值2 值3do执行动作done
for 变量名 in 命令do执行动作done
for ((条件))do执行动作done
2示例
例1依次打印出1-10这10个数字写法1
#!/bin/bash
# 依次打印出1-10这10个数字for i in 1 2 3 4 5 6 7 8 9 10doecho $isleep 2done 例2依次打印出1-10这10个数字写法2
#!/bin/bash
# 依次打印出1-10这10个数字for i in seq 1 10doecho $isleep 2done 例3ping 对应网站查看是否连通
a.txt文件内容如下
www.baidu.com
www.taobao.com
www.taobaooooo.com
www.qq.com
222.sh文件内容如下
#!/bin/bash
# ping 网站是否连通for i in $(cat a.txt)doping -c 2 $iecho -e \ndone例4依次打印出1-10这10个数字写法3
#!/bin/bash
# 依次打印出1-10这10个数字for ((i1;i11;i))doecho $isleep 2done3、case循环控制
1应用场景
case循环常使用于多重分支与if不同的是if可以判断多个条件case一次只能判断一种条件
2语法结构
case 变量 in值1 )执行动作1;;值2 )执行动作2;;值3 )执行动作3;;....
esac
3示例
输入一个城市查询该城市天气以及温度
#!/bin/bash
# 程序选择
echo 请输入你要查询天气的城市
read city
case $city in广州)echo 广州多云温度23~25摄氏度;;上海)echo 上海下雨温度12~17摄氏度;;北京)echo 北京下雪温度1~14摄氏度;;深圳)echo 深圳多云温度22~26摄氏度;;* )echo 输入有误请重新输入;;esac 4、while 循环
1应用场景
while循环是条件循环也是不定循环只要条件判断式成立循环就会一直进行着直到判断式不成立或者选择跳出循环才会结束
2语法结构
while [ 条件判断式 ]do执行动作done
3示例
计算从0加到输入的数字的总和一共是多少
#!/bin/bash
# 计算从0加到输入的数字的总和一共是多少
i0
sum0
while [ $i -le $1 ]dosum$(($sum$i))i$(($i1))doneecho the sum is:$sum第七章shell实战
我们这里写一个shell脚本有7个功能可供选择选项如下下面详细描述实现过程
1、算出你输入的目录下一共有多少文件 eg:/data 2、计算从0加到你输入的数字为止eg0123...你输入的数字 3、批量创建用户 4、测试用户名与密码是否匹配 5、测试ip通不通 6、巡检内存使用率 7、数据库里查询学生成绩 q、退出
1、如何让shell实现可选择性执行的功能
新建一个shell文件【feature.sh】里面存放选择功能的代码
#!/bin/bash
# 功能选项的选择while [ 1 ]
do
cat EOF
**************************************************************
* 1、算出你输入的目录下一共有多少文件 eg:/data *
* 2、计算从0加到你输入的数字为止eg0123...你输入的数字 *
* 3、批量创建用户 *
* 4、测试用户名与密码是否匹配 *
* 5、测试ip通不通 *
* 6、巡检内存使用率 *
* 7、数据库里查询学生成绩 *
* q、退出 *
**************************************************************
EOF
echo 输入你想要的功能
read key
case $key in
1 )
clear
sh 1.sh
;;2 )
clear
sh 2.sh
;;3 )
clear
sh 3.sh
;;4 )
clear
sh 4.sh
;;5 )
clear
sh 5.sh
;;6 )
clear
sh 6.sh
;;7 )
clear
sh 7.sh
;;q )
clear
echo ----感谢使用---程序退出----
break
;;
esac
done 2、巡检内存使用率
新建【6.sh】文件代码如下
#!/bin/bash
# 内存使用率mem_totalfree -m | sed -n 2p | awk {print $2}
mem_usedfree -m | sed -n 2p | awk {print $3}
mem_freefree -m | sed -n 2p | awk {print $4}
Percent_mem_usedecho scale2;$mem_used / $mem_total * 100 | bc
Percent_mem_freeecho scale2;$mem_free / $mem_total * 100 | bcnow_timedate %Y-%m-%d %H:%M:%s 星期%w
echo -e \n
echo -e $now_time\n内存的使用率是$Percent_mem_used%
echo -e 内存还剩$Percent_mem_free%未使用# 检查负载是否有压力if [ $mem_used -gt 1 ]thenecho -e \033[31;5m告警:\033[0mecho -e \033[31;5m内存使用率已超过负载能力目前使用率达到$Percent_mem_used% \033[0m
elseecho 目前内存负载正常
fiecho -e \n 备注一般情况下报警系统需要达到内存使用率90%以上才可这里为了演示报警情况所以设置为使用率大于1报警 3、批量创建用户
应用场景公司想要做测试需要10000个用户
#!/bin/bash
# 批量创建用户read -p 请输入创建的用户名称 name
read -p 请输入创建用户的数量 numberfor ((i1;i$number;i))do# 需要查看系统是否存在用户cat /etc/passwd | grep ${name}$i 1/dev/nullexistecho $?if [ $exist -eq 1 ]then# 创建用户useradd ${name}$i 2/dev/null echo 创建用户${name}$i成功# 需要生成随机密码MD5MD5其实是一个算法可以用来加密密码passwordhead -2 /dev/urandom | md5sum | cut -c 1-8# 给新用户设置密码并把用户名和密码放在文本中echo $password | passwd --stdin ${name}$i 1/dev/null echo -e 用户名${name}$i\t 密码$password /root/LL/shell/newuser_password.txtelseecho ${name}$i已经存在了无需再创建echo -e \nfidone4、数据库里查询学生成绩
1数据库中建表
首先需要登录mysql数据库我这边数据库中【student】库下放了一个【user】表表内容如下所示 在【student】库中的建表语句如下
CREATE TABLE user(id INT UNSIGNED PRIMARY KEY,name VARCHAR(100) NOT NULL,age int,sex VARCHAR(100),Math_score int,Chinese_score int,English_score int
)ENGINEInnoDB DEFAULT CHARSETutf8;
数据插入情况如下
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (1,小东, 18,男,99,86,67);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (2,小红, 17,女,87,97,88);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (3,小西, 18,男,88,95,66);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (4,小南, 19,女,85,88,69);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (5,小北, 16,女,95,86,84);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (6,小黑, 17,男,94,89,78);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (7,小绿, 18,男,90,85,91);
INSERT INTO user (id,name,age,sex,Math_score,Chinese_score,English_score) VALUES (8,老王, 20,男,89,94,99);
2新建shell脚本
新建【7.sh】文件用于数据库中查询学生成绩我这里是使用docker部署的mysql因此登录方式略有差别
#!/bin/bash
# 数据库查询成绩read -p 请输入你要查询的学生姓名 sname
read -s -p 请输入数据库用户 userecho -e \n
sqlselect * from student.user where name${sname};
docker exec -it YYL-mysql mysql -u${user} -p -e ${sql}
exit注意常用的数据库命令如下
登录数据库docker exec -it YYL-mysql env LANGC.UTF-8 /bin/bash 登录上去后可以输入中文
操作命令登录数据库docker exec -it YYL-mysql mysql -uroot -p 登录上去后无法输入中文docker exec -it YYL-mysql env LANGC.UTF-8 /bin/bash 登录上去后可以输入中文查看所有库show databases;选择库use 库名; 如 use student;查看所有表show tables;查询表语句select * from 库名.表名 ;
5、实现高效率登录别的机器
一般情况下其他机器ip地址会以以下形式放置在一个文件中这里以【ip.txt】举例 新建shell脚本【login.sh】执行时带入ip地址域名
#!/bin/bash
# 登录脚本RegionIpcat /root/LL/shell/ip.txt | grep $1 | awk -F | {print $2}
ssh ${RegionIp}