Shell 实用技术速查手册
本文汇总了 Shell 编程中常见的基础命令、脚本技巧、常见陷阱以及实用工具,帮助开发者在日常工作中更高效地使用 Bash。
常用命令分类
- 面向新手的 20 个 Linux 命令
- 面向中级用户的 20 个 Linux 命令
- 面向高级用户的 20 个 Linux 命令
- 日常高频命令行使用技巧
速查表与参考手册
脚本编写最佳实践
- 为脚本提供
--help选项 - 运行前检查依赖命令是否存在
- 不依赖当前工作目录,使用绝对路径或相对引用
- 优先使用环境变量而非硬编码参数
- 记录关键操作日志,支持
--silent模式 - 显示进度动画(如旋转光标)
- 输出错误信息时使用颜色区分
- 遇到错误立即退出(
set -e) - 自动清理临时文件
- 退出时使用不同的错误码
- 输出内容末尾增加换行
避免常见陷阱
- Bash Pitfalls:记录了许多易错用法
- CRLF 问题:Windows 下创建的脚本文件可能包含回车符(
\r),导致变量异常。使用dos2unix或tr -d '\r'去除
逐行读取文件示例
方法一:使用管道
cat data.txt | while read line; do
echo "Line: $line"
done
方法二:命令替换(注意:会忽略空行)
for line in $(cat data.txt); do
echo "Line: $line"
done
方法三:输入重定向(推荐)
while read line; do
echo "Line: $line"
done < data.txt
正则表达式与通配符
- 命令行通配符教程
- Shell 正则表达式常用模式
临时文件管理
使用 mktemp 命令创建安全临时文件,避免冲突和权限问题。
tmpfile=$(mktemp /tmp/myapp.XXXXXX)
trap "rm -f $tmpfile" EXIT
Expect 脚本常见问题
错误信息 spawn id exp6 not open 多因 exp_continue 使用不当。以下模式容易导致问题:
expect {
"yes/no" { send "yes\n"; exp_continue }
"password" { send "$PASSWORD\n"; exp_continue }
"Password" { send "$PASSWORD\n" }
}
修复方案:移除冗余的 exp_continue,让期望匹配只执行一次。
学习资源推荐
开发规范参考
- Shell 风格指南
- 企业级 Shell 开发规范
思维导图
推荐绘制 Shell 基础知识思维导图,便于快速回顾命令分类、变量、循环、条件判断等核心概念。