Shell脚本编程实战宝典:100个案例带你从小白到老司机(系统管理员必备)

前言:为什么说Shell是程序员的瑞士军刀?(真香警告!)

各位脚本爱好者注意了!!今天咱们要聊的可是Linux系统里的"万金油"技能——Shell脚本编程。说个真实案例:去年我们公司服务器被挖矿病毒入侵,全靠一段15行的Shell脚本快速定位异常进程,直接挽回百万损失!(后怕.jpg)这玩意学好了,绝对能让你的运维效率翻倍!

一、文件操作篇(新手村必备)

案例1:批量修改文件后缀名(拯救强迫症患者)

#!/bin/bash
# 把当前目录所有.txt改成.md
for file in *.txt; do
    mv "$file" "${file%.txt}.md"
done

重点解析${变量%模式}语法是字符串裁剪神器!!(必看!!)想批量改日期后缀?把.txt换成-$(date +%Y%m%d)就行~

案例2:自动清理30天前的日志文件(系统管理员救命稻草)

find /var/log -name "*.log" -type f -mtime +30 -exec rm {} \;

避坑指南:测试时一定先换成-ls代替rm!!(血泪教训)-mtime +30表示30天前的文件,-type f确保只删文件不删目录

二、系统监控篇(运维工程师直呼内行)

案例3:CPU使用率监控脚本(比任务管理器更直观)

#!/bin/bash
threshold=80
while true; do
    usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
    if (( $(echo "$usage > $threshold" | bc -l) )); then
        echo "[警报!!] CPU使用率突破${threshold}%:当前值 ${usage}%" | mail -s "CPU告警" admin@example.com
    fi
    sleep 60
done

黑科技top -bn1是无界面模式,awk提取关键数据,bc处理浮点数比较(这个组合拳打得太漂亮了!)

案例4:磁盘空间巡检脚本(再也不怕半夜告警)

#!/bin/bash
df -h | awk 'NR>1 {if ($5 > "90%") print "分区",$1,"使用率",$5}'

扩展玩法:加上>> /var/log/disk_check.log就能生成巡检日志,搭配crontab实现定时巡检

三、数据处理篇(文本处理天花板)

案例5:日志关键词统计(快速定位系统异常)

grep -oE 'ERROR|WARN' /var/log/app.log | sort | uniq -c

效果演示

   23 ERROR
   45 WARN

高阶技巧:配合watch -n 5命令可以实现实时监控,排查偶发问题神器!

案例6:CSV文件格式转换(Excel党看过来)

awk -F',' '{print $1 "\t" $3 "\t" $NF}' data.csv > formatted.tsv

参数解析-F','指定分隔符,$NF表示最后一列,想做数据清洗?这个命令能省你半小时!

四、网络操作篇(爬虫工程师都点赞)

案例7:网站可用性监控(比付费工具还好用)

#!/bin/bash
url="https://example.com"
if curl --output /dev/null --silent --head --fail "$url"; then
    echo "$url 存活!"
else
    echo "[紧急] $url 无法访问!" | telegram-send --stdin
fi

升级方案:加上-m 5限制超时时间,再搭配企业微信机器人API,秒变专业监控系统

案例8:批量下载图片资源(新媒体运营狂喜)

wget -i url_list.txt -P ./images -nc

参数详解-i指定URL列表文件,-P设置保存目录,-nc防止重复下载(这个组合我给满分!)

五、自动化篇(解放双手神器)

案例9:SSH自动登录(告别每次输密码)

#!/bin/bash
/usr/bin/expect << EOF
spawn ssh user@host
expect "password:"
send "your_password\r"
interact
EOF

安全警告:建议使用ssh-key免密登录更安全!!(重点加粗)这个方案适合临时测试环境

案例10:自动提交Git代码(懒人专属)

#!/bin/bash
git add .
git commit -m "自动提交:$(date +'%Y-%m-%d %H:%M:%S')"
git push origin master

实用技巧:放到post-commit钩子中,实现提交后自动推送(适合个人项目)

避坑指南:Shell脚本五大常见翻车现场(含救命方案)

  1. 变量未引用的空格灾难mv $file $file.bak → 遇到带空格文件名直接扑街!必须加双引号:mv "$file" "$file.bak"

  2. 权限不足的玄学问题:记住chmod +x script.sh!!(新人必踩的坑)

  3. 换行符引发的血案:Windows编辑的脚本在Linux运行报错?赶紧dos2unix处理!

  4. 环境变量找不到:在crontab中运行时,PATH变量可能不全,脚本开头明确定义PATH更保险

  5. 管道命令的静默失败:记得加set -eo pipefail让脚本遇到错误立即退出

终极武器:Shell调试大法(老司机秘籍)

  • bash -x script.sh 开启执行追踪模式
  • trap 'echo "出错在行 $LINENO"' ERR 自动捕获错误位置
  • echo "调试信息" >&2 把调试信息输出到标准错误
  • 在VSCode里装ShellCheck插件,实时语法检查(真香!)

结语:从脚本小子到系统大师

看完这10个典型案例是不是觉得Shell脚本也没那么难?(其实还有90个案例在我的GitHub仓库)记住:最好的学习方法就是动手实践!遇到问题别慌,多用man命令查文档,你也能写出像这样的骚操作:

# 一行命令统计最常使用的10个命令
history | awk '{CMD[$2]++;count++;} END {for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10

(这个神级命令建议保存到备忘录!)下期预告:《Shell脚本性能优化:让你的脚本快10倍的秘诀》,关注不迷路~

shell脚本编程实战手册》中包含了100个拿来就用的《shell脚本案例》[1]。这些实战案例涵盖了各种常见的Shell脚本编程场景,可以帮助读者更好地学习和理解Shell脚本编程。每个案例都有详细的代码示和解释,让读者能够迅速上手并应用到实际项目中。无论是初学者还是有一定经验的开发者,都能从这些实战案例中获得实用的技巧和经验。除了100实战案例,手册中还包含了Shell脚本编程的基础知识、流程控制、函数、数组、字符串处理等内容,全面而详实。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [100个超实用的Shell拿来就用脚本](https://blog.youkuaiyun.com/Dou_Hua_Hua/article/details/121356771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [shell编程100](https://blog.youkuaiyun.com/admans/article/details/125617465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值