Shell 编程基础
学习 Shell 脚本编程,实现系统自动化和任务批处理
什么是 Shell?
Shell 是用户与 Linux 系统内核之间的接口程序。它既是命令解释器,也是一种编程语言。 通过 Shell 脚本,我们可以将多个命令组合起来,实现复杂的自动化任务。
#!/bin/bash
# 这是一个简单的 Shell 脚本
echo "Hello, Linux Cloud Lab!"
常见的 Shell 类型
Bash (Bourne Again Shell)
最常用的 Shell,Linux 系统默认 Shell
/bin/bash
Zsh (Z Shell)
功能强大,支持插件和主题
/bin/zsh
Fish (Friendly Interactive Shell)
用户友好,智能补全
/usr/bin/fish
Dash
轻量级,启动速度快
/bin/dash
创建第一个 Shell 脚本
步骤 1:创建脚本文件
$ nano hello.sh
步骤 2:编写脚本内容
# 指定解释器
#!/bin/bash
# 输出欢迎信息
echo "欢迎使用 Linux Cloud Lab!"
echo "当前时间: $(date)"
echo "当前用户: $(whoami)"
步骤 3:添加执行权限
$ chmod +x hello.sh
步骤 4:运行脚本
$ ./hello.sh
欢迎使用 Linux Cloud Lab!
当前时间: Sun Dec 15 14:30:25 CST 2025
当前用户: user
Shell 脚本基本语法
注释
# 这是单行注释
echo "Hello World" # 行末注释
变量定义
name="Linux Cloud Lab"
count=100
echo "欢迎来到 $name"
echo "学员数量: $count"
命令替换
current_date=$(date)
file_count=`ls | wc -l`
echo "今天是: $current_date"
echo "文件数量: $file_count"
输入输出
echo "请输入您的姓名:"
read username
echo "您好, $username!"
实用脚本示例
系统信息脚本
#!/bin/bash
echo "=== 系统信息 ==="
echo "主机名: $(hostname)"
echo "操作系统: $(uname -s)"
echo "内核版本: $(uname -r)"
echo "CPU 信息: $(lscpu | grep 'Model name' | cut -d: -f2)"
echo "内存使用: $(free -h | grep Mem | awk 'print $3 "/" $2')"
文件备份脚本
#!/bin/bash
source_dir="/home/user/documents"
backup_dir="/backup"
timestamp=$(date +%Y%m%d_%H%M%S)
backup_file="backup_$timestamp.tar.gz"
tar -czf "$backup_dir/$backup_file" "$source_dir"
echo "备份完成: $backup_file"
最佳实践
推荐做法
- 总是在脚本开头指定解释器
- 使用有意义的变量名
- 添加适当的注释
- 检查命令执行结果
避免的做法
- 不检查文件是否存在就操作
- 硬编码路径和配置
- 忽略错误处理
- 不验证用户输入