Linux Shell脚本编程:从入门到实战

——用自动化脚本解放你的双手


为什么学习Shell脚本?

Shell脚本是Linux系统的强大工具,能够将复杂的任务简化为几行代码。无论是日常文件管理、系统监控,还是批量数据处理,Shell脚本都能帮你高效完成。

  • 简单易学:基于Bash语法,适合初学者快速上手。
  • 高效灵活:直接调用系统命令,无需额外环境。
  • 广泛应用:适用于服务器管理、数据处理、任务调度等场景。

一、Shell脚本基础

1. 创建并运行脚本

  1. 创建一个脚本文件:

    nano my_script.sh
  2. 添加脚本内容:

    #!/bin/bash
    echo "Hello, World!"
  3. 赋予执行权限:

    chmod +x my_script.sh
  4. 运行脚本:

    ./my_script.sh

2. 变量与输入

  • 定义变量:

    name="Linux"
    echo "Welcome to $name!"
  • 读取用户输入:

    echo "Enter your name:"
    read name
    echo "Hello, $name!"

二、条件判断与循环

1. 条件判断

使用if语句进行条件判断:

if [ "$1" == "admin" ]; then
    echo "Welcome, Admin!"
else
    echo "Access Denied."
fi

2. 循环结构

  • for循环

    for i in {1..5}; do
        echo "Number: $i"
    done
  • while循环

    count=1
    while [ $count -le 5 ]; do
        echo "Count: $count"
        count=$((count + 1))
    done

三、实战案例:自动化任务

1. 批量重命名文件

将目录下所有.txt文件改为.bak后缀:

for file in *.txt; do
    mv "$file" "${file%.txt}.bak"
done

2. 自动备份目录

每天凌晨备份指定目录到远程服务器:

#!/bin/bash
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backup"
REMOTE_USER="user"
REMOTE_HOST="remote.server.com"

# 打包并压缩
tar -czf backup_$(date +%F).tar.gz $SOURCE_DIR

# 上传到远程服务器
scp backup_$(date +%F).tar.gz $REMOTE_USER@$REMOTE_HOST:$BACKUP_DIR

# 删除本地备份
rm backup_$(date +%F).tar.gz

3. 监控系统资源

当CPU使用率超过90%时发送警告邮件:

#!/bin/bash
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)

if (( $(echo "$CPU_USAGE > 90" | bc -l) )); then
    echo "High CPU usage detected: $CPU_USAGE%" | mail -s "CPU Alert" admin@example.com
fi

四、调试与优化

1. 调试脚本

  • 使用set -x启用调试模式:

    #!/bin/bash
    set -x
    echo "Debugging mode is on."
  • 使用bash -n检查语法错误:

    bash -n my_script.sh

2. 优化脚本性能

  • 避免频繁调用外部命令(如grepawk),尽量使用内置功能。
  • 使用&将耗时任务放到后台运行:

    long_running_task &

五、延伸学习资源

  1. 书籍推荐

    • 《Linux命令行与Shell脚本编程大全》
    • 《Bash Cookbook》
  2. 在线教程


结语

Shell脚本是Linux用户的必备技能,掌握它能让你的工作效率提升数倍。从简单的文件操作到复杂的系统管理,Shell脚本无处不在。

🔗 延伸阅读

  • [Linux命令行高级技巧]()
  • [如何用Cron定时任务自动化工作]()

如果你有更多Shell脚本问题或实战案例,欢迎在评论区分享! 🚀


最后修改:2025 年 03 月 03 日
如果觉得我的文章对你有用,请随意赞赏