服务器测评网
我们一直在努力

Linux shell编程实例有哪些实用技巧和避坑指南?

Linux Shell 编程实例

Linux Shell 编程是自动化任务、系统管理和开发流程的重要工具,通过编写 Shell 脚本,用户可以简化重复性操作、提高工作效率,并实现复杂的系统管理功能,本文将通过几个典型实例,介绍 Shell 编程的核心概念与实际应用。

Linux shell编程实例有哪些实用技巧和避坑指南?

基础脚本:文件批量重命名

在文件管理中,批量重命名是一项常见需求,以下脚本实现了将当前目录下所有 .txt 文件扩展名改为 .md

#!/bin/bash
for file in *.txt; do
    mv "$file" "${file%.txt}.md"
done
echo "重命名完成!"

解析

  • #!/bin/bash 指定解释器为 Bash。
  • for file in *.txt 遍历所有 .txt 文件。
  • ${file%.txt} 是参数替换语法,移除文件名中的 .txt 后缀。
  • mv 命令完成重命名操作。

运行脚本前需赋予执行权限:chmod +x rename.sh,然后通过 ./rename.sh 执行。

文本处理:日志分析

日志分析是系统运维的重要任务,以下脚本统计 Apache 访问日志中 IP 地址的访问次数:

#!/bin/bash
log_file="/var/log/apache2/access.log"
if [ ! -f "$log_file" ]; then
    echo "日志文件不存在!"
    exit 1
fi
echo "IP 访问统计:"
awk '{print $1}' "$log_file" | sort | uniq -c | sort -nr

解析

Linux shell编程实例有哪些实用技巧和避坑指南?

  • -f 检查文件是否存在。
  • awk '{print $1}' 提取每行的第一个字段(IP 地址)。
  • sort | uniq -c 统计重复次数,sort -nr 按数值降序排列。

系统监控:磁盘空间检查

系统管理员需要定期监控磁盘空间,以下脚本检查磁盘使用率并警告超过 80% 的分区:

#!/bin/bash
threshold=80
df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5, $6}' | while read output; do
    usage=$(echo $output | awk '{print $1}' | sed 's/%//')
    partition=$(echo $output | awk '{print $2}')
    if [ $usage -gt $threshold ]; then
        echo "警告:分区 $usage% 已满!"
    fi
done

解析

  • df -h 显示磁盘使用情况,grep 过滤系统文件。
  • sed 's/%//' 移除百分比符号,便于数值比较。
  • 通过 if 条件判断触发警告。

自动化备份:数据归档

定期备份是数据安全的关键,以下脚本将 /home/user/documents 目录压缩并备份到 /backup

#!/bin/bash
src_dir="/home/user/documents"
backup_dir="/backup"
timestamp=$(date +%Y%m%d_%H%M%S)
backup_file="documents_backup_$timestamp.tar.gz"
mkdir -p "$backup_dir"
tar -czf "$backup_dir/$backup_file" "$src_dir"
echo "备份完成:$backup_file"

解析

  • date 生成时间戳,确保备份文件名唯一。
  • mkdir -p 创建备份目录(若不存在)。
  • tar -czf 将目录压缩为 .tar.gz 文件。

交互式脚本:用户管理

通过交互式脚本,管理员可以简化用户创建流程:

Linux shell编程实例有哪些实用技巧和避坑指南?

#!/bin/bash
read -p "请输入用户名:" username
read -s -p "请输入密码:" password
echo
if id "$username" &>/dev/null; then
    echo "用户已存在!"
else
    useradd -m "$username" && echo "$password" | passwd "$username" --stdin
    echo "用户 $username 创建成功!"
fi

解析

  • read -p 提示用户输入,read -s 隐藏密码输入。
  • id 检查用户是否存在,useradd -m 创建用户并创建家目录。
  • passwd --stdin 非交互式设置密码。

Shell 编程通过结合命令、变量、循环和条件判断,实现了从文件管理到系统监控的广泛功能,上述实例涵盖了基础语法、文本处理、系统管理和自动化任务,是 Shell 实践的典型场景,掌握这些技能,不仅能提升工作效率,还能为更复杂的运维开发奠定基础。

赞(0)
未经允许不得转载:好主机测评网 » Linux shell编程实例有哪些实用技巧和避坑指南?