有趣的Shell脚本学习
有趣的Shell脚本学习
倒计时脚本
#!/bin/bash
echo 20秒倒计时开始:
tput sc
# 循环40秒
for count in `seq 0 20`
do
tput rc
tput ed
echo -n `expr 20 - $count`
sleep 1
done
echo " 20秒倒计时结束!"
解释
tput 的作用
tput是一个用于操作终端的Linux/Unix shell内置命令,用于设置终端的颜色、大小、位置等属性,
以及让用户更加方便地操作终端。如移动光标、清屏、设置颜色等。
tput sc:tput sc是控制台控制终端的一个命令,用于保存当前控制台的光标位置。
tput rc:tput rc是控制台控制终端的一个命令,用于恢复之前保存的控制台光标位置。
tput ed:tput ed是控制台控制终端的一个命令,用于清除从当前光标位置到屏幕末尾的所有文本。
来源:https://blog.csdn.net/MyySophia/article/details/128896067
生成随机数(密码)
head -n 32 /dev/urandom | tr -dc "a-zA-Z0-9@#$%^&*" | head -c 32 && echo
# 注意可以添加不同的特殊字符来进行选用.
判断是否存在内容在执行操作
log=/usr/nginx/log/error.log
N=30 #设定阈值
while :do
#查看访问日志的最新300条,并统计502的次数
err=`tail -n 300 $log |grep -c '502" '`
if [ $err -ge $N ]
then
/usr/nginx/nginx -s reload
#设定60s延迟防止脚本bug导致无限重启php-fpm服务
sleep 60
fi
sleep 10
done
判断文件是否存在, 然后创建新文件.
while true
do
if [ -f "/zhaobshresult/result1.ok" ] && [ -f "/zhaobshresult/result2.ok" ] ; then
echo "文件存在"
touch /zhaobshresult/result.ok
exit 2
else
echo "文件没有全部存在, 等待一秒继续检查"
fi
sleep 1
done
按照文件大小进行拆分. 分为两个目录.
du -ahd 1 |grep sql$ |sort -k1h |awk '{print $2}' >list
num=0
mkdir -p a
mkdir -p b
for i in `cat list` ; do
let num=num+1
if (($num % 2 == 1)) ; then
mv $i a
else
mv $i b
fi ;
done
判断文件是否存在然后切分文件名
while true ;
do
if [ -f "data.ok" ] ; then
du -ahd 1 |grep txt$ |sort -k1h |awk '{print $2}' |cut -c 3- >list
echo "" >AE1.ok1
echo "" >AE2.ok1
num=0
for i in `cat list` ; do
let num=num+1
if (($num % 2 == 1)) ; then
echo $i >> AE1.ok1
else
echo $i >> AE2.ok1
fi ;
done
mv -f AE1.ok1 AE1.ok
mv -f AE2.ok1 AE2.ok
echo "AE1.ok和AE2.ok. 均已经准确生成."
exit 2
fi
echo "未监测到 data.ok. 继续进行循环"
sleep 1
done
有趣的Shell脚本学习的更多相关文章
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
- Shell 脚本学习资料搜集
Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- 转 shell脚本学习指南
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...
- Shell脚本学习 - 运算符
继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...
- shell脚本学习总结02--数组
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- shell脚本学习之6小时搞定(1)
shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...
- shell脚本学习笔记(符号)
shell脚本的学习: 1.Shell的作用是解释运行用户的命令,用户输入一条命令,Shell就解释运行一条,这样的方式称为交互式(Interactive),Shell还有 一种运行命令的方式称为批处 ...
- shell脚本学习心得
近来主要捣鼓ubuntu,大多数项目中都用到了sh脚本作为启动脚本等,以前只是大概明白如何使用,今天需要自己修改并运行脚本就碰到了很多问题,所以决定静下心来学习一下shell脚本,学习了几个小时,现将 ...
随机推荐
- Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!
Mysql性能优化这5点你知道吗?简单却容易被初学者忽略! 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加 ...
- JavaFx之触发激发鼠标事件(二十三)
JavaFx之触发激发鼠标事件(二十三) 有时候,我们不能直接触发/激发某个按钮的点击事件,因为发起方可能是子线程.使用屏幕点击又不优雅,javafx已经提供了事件的激发,即使在子线程中也能激发某个按 ...
- 关于Triple DES(3DES)对称加密算法
一.引言 在网络安全领域,对称加密算法作为一种常见的加密手段,被广泛应用于保障数据传输的保密性和完整性.其中,DES(Data Encryption Standard)算法作为一种经典的对称加密算法, ...
- 初识GaussDB(for Cassandra)
摘要:GaussDB(for Cassandra)是一款基于华为自主研发的计算存储分离架构的分布式云数据库服务. "local quorum查询某个分区键的条数,每次查询,条数都不一样.&q ...
- PPT 提升素材搜索能力
https://cn.bing.com/images 高清透明 https://unsplash.com/ 更新快 https://pixabay.com/zh/ 免费高清图片 https://www ...
- MappedByteBuffer 写文件
MappedByteBuffer中"put"和"force"的区别是什么 put()将数据存储在缓冲区中,force()通知操作系统将缓冲区刷新到磁盘. put ...
- 深入了解 ReadDirectoryChangesW 并应用其监控文件目录
简介 监视指定目录的更改,并将有关更改的信息打印到控制台,该功能的实现不仅可以在内核层,在应用层同样可以.程序中使用 ReadDirectoryChangesW 函数来监视目录中的更改,并使用 FIL ...
- 【白话科普】聊聊 DNS 的那些小知识
你是否在上网时,遇到过这样的情况:QQ 能正常发送消息,但是网页却打不开,查看网络连接又正常显示.面对这种情况很多小伙伴都感到有些无措.那究竟要怎么处理,这究竟是怎么回事呢? 上网查询得知,一般情况下 ...
- 字符串匹配算法:Horspool算法
Horspool 字符串匹配算法对Boyer-Moore算法的简化算法. Horspool 算法是一种基于后缀匹配的方法,是一种"跳跃式"匹配算法,具有sub-linear亚线性时 ...
- i 的二次幂求和
学习 自为风月马前卒 大佬的数学笔记 \(i^2\) 求和 查阅资料我们很容易就发现 \(\sum_{i = 1}^ni^2 = \frac{n(n + 1)(2n + 1)}{6}\) 但具体怎么求 ...