首页 资源下载运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!

运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

在大多数的Linux和Unix系统、及其他类Unix系统中,Shell是用户与操作系统内核交互的主要方式。无论你是运维还是开发,掌握Shell命令都是必不可少的技能。

今天给大家分享《shell脚本149个案例》共68页,目录清晰,一键搜索定位,代码清晰可复制,电子版更有利于大家随时翻阅,提升实践能力,想要学习、提升的朋友们一定要收藏下来(文末一键领取)。

由于脚本案例太多,仅拿出一部分作为展示

【领取方式见文末】

149个超实用的Shell脚本

1、查找 Linux 系统中的僵尸进程

#!/bin/bash  
# 查找 Linux 系统中的僵尸进程  
# awk 判断 ps 命令输出的第 8 列为 Z 是,显示该进程的 PID 和进程命令  
ps aux | awk '{if($8 == "Z"){print $2,$11}}'  

2、删除某个目录下大小为 0 的文件

#!/bin/bash  
# 删除某个目录下大小为 0 的文件  
#/var/www/html 为测试目录,脚本会清空该目录下所有 0 字节的文件  
dir="/var/www/html"  
find $dir -type f -size 0 -exec rm -rf {} \;  

3、连续输入5个100以内的数字,统计和、最小和最大

#!/bin/bash
COUNT=1
SUM=0
MIN=0
MAX=100
while [ $COUNT -le 5 ]; do
    read -p "请输入1-10个整数:" INT
    if [[ ! $INT =~ ^[0-9]+$ ]]; then
        echo"输入必须是整数!"
        exit 1
    elif [[ $INT -gt 100 ]]; then
        echo"输入必须是100以内!"
        exit 1
    fi
    SUM=$(($SUM+$INT))
    [ $MIN -lt $INT ] && MIN=$INT
    [ $MAX -gt $INT ] && MAX=$INT
    let COUNT++
done
echo"SUM: $SUM"
echo"MIN: $MIN"
echo"MAX: $MAX"

4、打印各种格式的时间

#!/bin/bash  
# 打印各种时间格式   
echo"显示星期简称(如:Sun)"
date +%a  
echo"显示星期全称(如:Sunday)"
date +%A  
echo"显示月份简称(如:Jan)"
date +%b  
echo"显示月份全称(如:January)"
date +%B  
echo"显示数字月份(如:12)"
date +%m  
echo"显示数字日期(如:01 号)"
date +%d  
echo"显示数字年(如:01 号)"
date +%Y echo"显示年‐月‐日"
date +%F  
echo"显示小时(24 小时制)"
date +%H  
echo"显示分钟(00..59)"
date +%M  
echo"显示秒"
date +%S  
echo"显示纳秒"
date +%N  
echo"组合显示"
date +"%Y%m%d %H:%M:%S"  

5、判断文件或目录是否存在

#!/bin/bash  
# 判断文件或目录是否存在   
if [ $# -eq 0 ] ;then
echo"未输入任何参数,请输入参数"
echo"用法:$0 [文件名|目录名]"
fi
if [ -f $1 ];then
echo"该文件,存在"
  ls -l $1
else
echo"没有该文件"
fi
if [ -d  $1 ];then
     echo"该目录,存在"
     ls -ld  $2
else
     echo"没有该目录"
fi  

6、使⽤脚本对输⼊的三个整数进⾏排序

#!/bin/bash
# 依次提示⽤户输⼊ 3 个整数,脚本根据数字⼤⼩依次排序输出 3 个数字
read-p " 请输⼊⼀个整数:"num1
read-p " 请输⼊⼀个整数:"num2
read-p " 请输⼊⼀个整数: "num3
# 不管谁⼤谁⼩,最后都打印 echo "$num1,$num2,$num3"
# num1 中永远存最⼩的值,num2 中永远存中间值,num3 永远存最⼤值
# 如果输⼊的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调
tmp=0
# 如果 num1 ⼤于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最⼩值
if[ $num1-gt $num2]; then
tmp= $num1
num1= $num2
num2=tmp
fi
# 如果 num1 ⼤于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最⼩值
if[ $num1-gt $num3]; then
tmp= $num1
num1= $num3
num3= $tmp
fi
# 如果 num2 ⼤于 num3,就把 num2 和 num3 对调,确保 num2 变量中存的是最⼩值
if[ $num2-gt $num3]; then
tmp= $num2
num2= $num3
num3= $tmp
fi
echo"排序后数据(从⼩到⼤)为: $num1, $num2, $num3"

7、获取本机 MAC 地址

#!/bin/bash  
# 获取本机 MAC 地址  
ip a s | awk 'BEGIN{print  " 本 机 MAC 地 址 信 息 如 下 :"}/^[0‐9]/{print $2;getline;if($0~/link\/ether/){print $2}}' | grep -v lo:  
# awk 读取 ip 命令的输出,输出结果中如果有以数字开始的行,先显示该行的地 2 列(网卡名称),  
# 接着使用 getline 再读取它的下一行数据,判断是否包含 link/ether  
# 如果保护该关键词,就显示该行的第 2 列(MAC 地址)  
# lo 回环设备没有 MAC,因此将其屏蔽,不显示 

8、提示用户输入年份后判断该年是否为闰年

#!/bin/bash  
# 提示用户输入年份后判断该年是否为闰年  
# 能被4整除并且并不能被100整除的年份是闰年  
# 能被400整除的年份也是闰年  
read -p "请输入一个年份:" year  
if [ "$year" = "" ];then
    echo"没有输入年份"
    exit
fi
#使用正则测试变量 year 中是否包含大小写字母  
if [[ "$year" =~ [a‐Z] ]];then
    echo"你输入的不是数字"
    exit
fi
# 判断是否为闰年  
if [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then
    echo"$year年是闰年"    
elif [ $[year % 400] -eq 0 ];then
    echo"$year年是闰年"
else
    echo"$year年不是闰年"
fi 

部分内容展示

运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!插图
运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!插图1

运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!插图2
运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!插图3
运维开发必看!149 个高频 Shell 脚本让效率狂飙,附实战案例速领!插图4

备注【shell脚本实例149个】

https://edu.magedu.com/v1/s/2810d362

本文链接:https://www.yunweipai.com/47265.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部