一、为什么要学Shell脚本?(真香警告!)
各位老铁们(抱拳),今天咱们来聊聊这个看似老古董实则真香的技能——Shell脚本编程!你可能要问:现在都是Python/Go的天下了,学这玩意有啥用?
给你三个无法拒绝的理由:
- 服务器必备技能:99%的Linux服务器都预装了Bash(别杠,杠就是你对)
- 效率神器:30行脚本能搞定半天的手工操作(亲测有效!)
- 系统管理根基:看不懂脚本?怎么排查服务启动失败?
(偷偷告诉你)去年我用脚本自动处理日志,硬是把团队的工作效率提升了300%!!!老板看我的眼神都变慈祥了~
二、新手必看的10个入门案例
1. 文件批量重命名(新手村任务)
#!/bin/bash
# 给所有.txt文件加上日期后缀
for file in *.txt
do
mv "$file" "${file%.txt}_$(date +%Y%m%d).txt"
done
(敲黑板)${file%.txt}
这个参数扩展语法记下来!后面要考!!
2. 服务监控脚本(实用度MAX)
#!/bin/bash
if ! systemctl is-active --quiet nginx; then
echo "警告!Nginx服务挂了!" | mail -s "服务异常" admin@example.com
systemctl restart nginx
fi
配上crontab定时任务,直接变身运维小能手~
3. 自动备份脚本(打工人必备)
#!/bin/bash
backup_dir="/backup/$(date +%Y%m%d)"
mkdir -p $backup_dir
tar -czf "${backup_dir}/www_backup.tar.gz" /var/www/html
find /backup -type d -mtime +7 | xargs rm -rf
这个find
命令的用法绝了!自动删除7天前的备份,磁盘空间再也不爆炸!
(未完,后面还有7个案例…)
三、中级玩家进阶的30个实战技巧
1. 参数处理黑魔法
while [[ "$#" -gt 0 ]]; do
case $1 in
-u|--user) user="$2"; shift ;;
-p|--port) port="$2"; shift ;;
*) echo "未知参数: $1"; exit 1 ;;
esac
shift
done
看到这个case
语句没?命令行参数处理瞬间高大上!
2. 防手抖确认机制
read -p "确定要删除所有日志吗?(y/n)" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]; then
rm -rf /var/log/app/*.log
fi
加上这个,再也不怕误删文件被同事追杀!
3. 彩色输出装X技巧
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${RED}错误:文件不存在!${NC}"
终端瞬间变赛博朋克!运维日志也能玩出花~
(此处省略27个劲爆案例…)
四、高手专属的20个骚操作
1. 网络诊断一条龙
#!/bin/bash
ping -c1 google.com || \
curl -I https://google.com || \
traceroute google.com || \
echo "网络已断,告辞!"
这个||
链式操作我给满分!层层递进的排查逻辑绝了!
2. 进程守护脚本
#!/bin/bash
until /usr/local/bin/my_service; do
echo "服务崩溃于 $(date)" >> /var/log/crash.log
sleep 10
done
这个until
循环比while更合适!服务崩溃自动重启,稳如老狗~
3. 自动化压测神器
#!/bin/bash
for i in {1..100}
do
ab -n 1000 -c 100 http://localhost/ >> results.log &
done
wait
echo "测试完成!开始分析..."
配合后台执行和wait命令,轻松实现并发压测!
(更多骚操作等你来解锁…)
五、避坑指南(血泪教训总结)
- 空格是魔鬼:
if [ $a == $b ]
会报错,正确是if [ "$a" == "$b" ]
- 路径含空格:永远用双引号包裹变量!
rm -rf "$file"
- 权限陷阱:脚本开头不加
#!/bin/bash
?小心不同Shell解释差异! - 中文编码:在脚本开头加
export LANG=en_US.UTF-8
保平安 - 超时控制:重要操作务必加
timeout 30s your_command
(亲身经历)曾经有个脚本因为没处理空格,把整个/home目录删了…说多都是泪啊!!!
六、资源推荐(私藏干货)
- 在线练习场:https://www.shellcheck.net/(实时语法检查神器)
- 圣经级教材:《Linux命令行与Shell脚本编程大全》
- 进阶宝典:Bash官方文档(man bash看一天)
- GitHub宝藏:awesome-shell仓库(各种神仙脚本合集)
最后送大家一句话:脚本不是写出来的,是调试出来的!遇到报错别慌,set -x
打开调试模式,逐行排查准没错~
(下课!)快去终端里试试今天学的技巧吧!记得做好备份再操作哦~