Shell
Shell 编程是通过脚本在命令行解释器中执行自动化任务的技术,是用户与操作系统内核之间的桥梁。
核心价值
- 自动化:批量处理重复任务
- 系统管理:运维操作
- 胶水语言:串联不同程序
执行流程
读取命令 → 解析词元 → 判断内置命令 → 直接执行或创建子进程
关键机制
1
2
3
4
5
6
7
8
9
10
| # 变量作用域
export VAR=value # 环境变量
local var # 局部变量
# 进程管理
gzip large.log & # 后台运行
wait # 等待完成
# 重定向
command > output.log 2>&1 # 合并输出
|
典型应用
1
2
3
4
5
6
7
8
9
| # 日志备份
find /var/log -name "*.log" -mtime +7 | xargs tar czf backup.tgz
# Git 钩子
npm test && eslint src/
exit $?
# 数据处理
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
|
最佳实践
1
2
3
4
5
6
7
8
9
| set -euo pipefail # 严格模式
# 性能优化
$((a + b)) # 替代 expr
while read -r file # 替代 for in $(ls)
# 调试
bash -x script.sh
trap 'rm -rf /tmp/*' SIGINT
|
发展历程
| 年份 | 里程碑 |
|---|
| 1971 | V6 Shell(首个 Shell) |
| 1977 | Bourne Shell(sh) |
| 1978 | C Shell(csh) |
| 1989 | Bash |
| 2020+ | Zsh、Fish 现代化扩展 |
Comments