台式机 Bash 脚本 入门教程

admin

台式机 Bash 脚本入门教程

一、Bash 脚本的核心价值 在 Windows 系统中运行 Linux 子系统(如 WSL2)或双系统环境下,Bash 脚本是实现自动化办公、系统维护和批量处理的利器。相比图形界面工具,脚本能更精准地控制执行流程,尤其在处理大量文件(如批量重命名照片)、定时任务(如夜间日志清理)和系统监控(如CPU温度预警)时效率提升显著。本教程将手把手教你从零开始掌握 Bash 脚本编写与执行技巧。

二、基础语法与执行环境

台式机 Bash 脚本 入门教程

  1. 脚本创建与执行权限 新建脚本文件后务必添加执行权限:
    
    # 创建脚本文件
    echo '#!/bin/bash' > backup.sh
    echo 'echo "备份开始"' >> backup.sh
    echo 'tar -czvf /backup/path/$(date +%Y%m%d).tar.gz /home/user' >> backup.sh

添加执行权限

chmod +x backup.sh

首次执行需验证路径:
```bash
./backup.sh
  1. 变量与参数传递

    • 变量赋值:NAME="张三"
    • 参数获取:echo "当前参数:$1 $2 $3"
    • 环境变量:export PATH=/new/path:$PATH
  2. 基础逻辑结构

    
    #!/bin/bash

初始化变量

start_time=$(date +%s) file_count=0

遍历指定目录

for file in /data/*.txt; do

文件处理逻辑

echo "处理文件:$file"
((file_count++))

done

计算耗时

end_time=$(date +%s) echo "处理完成,共 $file_count 个文件,耗时 $(($end_time - $start_time)) 秒"


三、核心功能实现技巧
1. 条件判断与流程控制
```bash
if [ -f "$1" ]; then
    echo "文件存在,正在处理..."
    process_file "$1"
else
    echo "错误:文件不存在!"
    exit 1
fi
  • 多条件判断:if [ "$OS" = "Ubuntu" ] && [ "$VER" -ge 20 ]; then ...
  • 循环嵌套:处理不同格式的文件时组合使用forwhile循环
  1. 文件操作进阶

    • 批量修改文件名:`find /path -type f -name "*.jpg" -exec ren {} {}_{:N} \;
    • 触发式备份:在/etc/cron.d中添加定时任务:
      0 2 * * * root /path/to/backup.sh
  2. 网络与系统交互

    
    # 发送HTTP请求
    curl -s "https://api.example.com/data?token=$API_TOKEN"

监控CPU使用率(需root权限)

while true; do usage=$(top -bn1 | grep "Cpu(s)" | cut -c 11-19 | awk '{print $1}' | sed 's/%//g') echo "当前CPU使用率:$usage%" sleep 5 done


四、典型应用场景实战
1. 自动化日志清理
```bash
#!/bin/bash
LOG_DIR="/var/log"
LOG_SIZE=100MB

# 遍历所有日志文件
for log in $LOG_DIR/*.log; do
    # 检查文件大小
    if [ -s "$log" -a $(du -sh "$log" | awk '{print $1}') -gt $LOG_SIZE ]; then
        # 保留最新5个版本
        ls -tr $log | head -5 | xargs rm -f
    fi
done

执行时:./clean_logs.sh

  1. 多环境部署脚本
    
    #!/bin/bash
    function deploy_app {
    case $1 in
        "dev")  deploy_to "/home/dev环境" ;;
        "prod") deploy_to "/home/生产环境" ;;
        *) echo "错误:无效的环境参数" >&2
    esac
    }

function deploy_to { echo "开始部署到 $1" rsync -avz --delete ./dist/* "$2" systemctl restart app服务 }

调用方式:`./deploy.sh dev`

五、常见问题与解决方案
1. 权限错误处理
```bash
if [ ! -x "$脚本路径" ]; then
    echo "错误:脚本没有执行权限!"
    exit 1
fi
  1. 错误捕获机制

    try {
    # 复杂操作
    } catch {
    # 记录错误日志
    error_log "$错误信息"
    exit 1
    }
  2. 性能优化技巧

    • 使用parallel命令处理大量任务
    • 避免在循环内执行耗时操作
    • 对敏感操作添加set -e(立即退出错误)

六、进阶开发指南

  1. 模块化设计 创建functions.sh包含通用函数,主脚本调用:

    #!/bin/bash
    include() {
    if [ -f "$1" ]; then
        source "$1"
    else
        echo "错误:函数文件不存在!"
        exit 1
    fi
    }
    include functions.sh
    backup_data
  2. GUI 集成方案

    • 使用gnome-terminal执行脚本
    • 开发C语言界面调用Bash脚本
    • 通过expect实现图形界面自动化
  3. 版本控制实践

    # 使用Git管理脚本
    git init
    git add backup.sh
    git commit -m "v1.0 基础备份功能"

七、安全与维护建议

  1. 敏感信息处理

    • 使用.env文件存储API密钥
    • 在脚本开头设置环境变量:
      export API_KEY="your_key_here"
  2. 脚本监控机制

    # 在脚本末尾添加监控
    watch -n 5 'echo "脚本运行状态:$(ps -ef | grep脚本名 | wc -l)"'
  3. 定期维护检查

    
    #!/bin/bash
    # 检查脚本执行记录
    tail -f /var/log/脚本执行日志.log | grep "ERROR"

验证脚本依赖项

command -v tar &> /dev/null || echo "警告:未安装tar工具!"



总结要点:
1. 熟练掌握`#!/bin/bash`语法规范
2. 掌握文件操作(`cp`, `mv`, `rm`)和压缩工具(`tar`, `zip`)
3. 条件判断与循环结构是核心逻辑
4. 实际应用需结合定时任务和日志记录
5. 建议使用`shebang`确保兼容性

实用建议:
1. 从5行脚本的自动化备份开始实践
2. 每次修改后使用`bash -x 脚本名`调试执行过程
3. 重要脚本创建备份机制(如自动存档到Git仓库)
4. 定期更新`apt`包(WSL环境下)保持工具最新

掌握Bash脚本后,可拓展学习Shell函数、正则表达式和Shell编程模式(如管道、重定向)。建议先掌握50个常用命令,再通过实践项目(如搭建自动化部署系统)深化理解,最终实现从手动操作到智能运维的跨越。
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码