SHELL编程指南

Bash新手指南

Machtelt Garrels


目录

介绍
1. 本指南由来 2. 谁应该阅读此书? 3. 新版本和取得方法 4. 历史修订 5. 贡献 6. 反馈 7. 版权信息 8. 你需要什么? 9. 本文档约定 10. 本文档组织结构
1. Bash和Bash脚本
1.1. 常用的shell程序
1.1.1. shell的普遍作用 1.1.2. Shell类型
1.2. Bourne Again SHell的优势
1.2.1. Bash是GNU shell 1.2.2. Bash独有的特性
1.3. 执行命令
1.3.1. 概要 1.3.2. Shell内建命令 1.3.3. 从脚本执行程序
1.4. 建立块
1.4.1. Shell建立块
1.5. 开发优良脚本
1.5.1. 优良脚本的要素 1.5.2. 结构 1.5.3. 术语 1.5.4. 关于顺序和逻辑 1.5.5. 一个Bash脚本的例子:mysystem.sh 1.5.6. init脚本例子
1.6. 总结 1.7. 练习
2. 编写和调试脚本
2.1. 建立并且运行一个脚本
2.1.1. 编写与命名 2.1.2. script1.sh 2.1.3. 执行脚本
2.2. 脚本基础
2.2.1. 哪个Shell来执行脚本? 2.2.2. 加入注释
2.3. 调试Bash脚本
2.3.1. 调试整个脚本 2.3.2. 调试部分脚本
2.4. 总结 2.5. 练习
3. Bash环境
3.1. Shell初始化文件
3.1.1. 跨系统配置文件 3.1.2. 单独用户配置文件 3.1.3. 改变shell配置文件
3.2. 变量
3.2.1. 变量的类型 3.2.2. 建立变量 3.2.3. 导出变量Exporting variables 3.2.4. 保留变量 3.2.5. 特殊参数 3.2.6. 脚本借助变量的循环使用
3.3. 引用字符
3.3.1. Why? 3.3.2. 转义字符 3.3.3. 单引号 3.3.4. 双引号 3.3.5. ANSI-C引用 3.3.6. 场合
3.4. Shell扩展
3.4.1. 概要 3.4.2. 括号扩展 3.4.3. ~扩展 3.4.4. Shell参数和变量扩展 3.4.5. 命令替换 3.4.6. 算术扩展 3.4.7. 过程替换Process substitution 3.4.8. 字分割 3.4.9. 文件名扩展
3.5. 别名
3.5.1. 什么是别名? 3.5.2. 建立和移除别名
3.6. 更多 Bash 选项
3.6.1. 显示选项 3.6.2. 改变选项
3.7. 总结 3.8. 练习
4. 正则表达式
4.1. 正则表达式
4.1.1. 什么是正则表达式? 4.1.2. 正则表达式特殊字符 4.1.3. 基本和扩展正则表达式
4.2. 使用grep的例子
4.2.1. 什么是grep? 4.2.2. Grep与正则表达式
4.3. Pattern匹配使用Bash特性
4.3.1. 字符范围 4.3.2. 字符族
4.4. 总结 4.5. 练习
5. GNU SED流编辑器
5.1. 介绍
5.1.1. 什么是sed? 5.1.2. sed命令
5.2. 交互编辑
5.2.1. 打印包含pattern的行 5.2.2. 删除包含pattern的输入行 5.2.3. 行的范围 5.2.4. 用sed来查找替换
5.3. 非交互编辑
5.3.1. 从文件读取sed命令 5.3.2. 写输出文件
5.4. 总结 5.5. 练习
6. GNU AWK编程语言
6.1. gawk上路
6.1.1. 什么是gawk? 6.1.2. Gawk命令
6.2. 打印程序
6.2.1. 打印选择的域 6.2.2. 格式化域 6.2.3. print命令和正则表达式 6.2.4. 特殊的patterns 6.2.5. Gawk脚本
6.3. Gawk变量
6.3.1. 输入域的分隔符 6.3.2. 输出分隔符 6.3.3. 记录的数量 6.3.4. 用户定义的变量 6.3.5. 更多例子 6.3.6. printf程序
6.4. 总结 6.5. 练习
7. 条件语句
7.1. 介绍if
7.1.1. 概要 7.1.2. if的简单应用
7.2. 更多if的高级使用方法
7.2.1. if/then/else结构 7.2.2. if/then/elif/else结构 7.2.3. if嵌套语句 7.2.4. 布尔操作 7.2.5. 使用exit语句和if
7.3. 使用case语句
7.3.1. 简单的条件 7.3.2. 初始脚本例子
7.4. 总结 7.5. 练习
8. 编写交互脚本
8.1. 显示用户消息
8.1.1. 交互与否? 8.1.2. 使用内建命令echo
8.2. 捕捉用户输入
8.2.1. 使用内建命令read 8.2.2. 提示用户输入 8.2.3. 重定向和文件描述符 8.2.4. 文件输入和输出
8.3. 总结 8.4. 练习
9. 重复性任务
9.1. for循环
9.1.1. 如何工作? 9.1.2. 例子
9.2. while循环
9.2.1. 什么是while循环? 9.2.2. 例子
9.3. until循环
9.3.1. 什么是until循环? 9.3.2. 例子
9.4. I/0 重定向和循环
9.4.1. 输入重定向 9.4.2. 输出重定向
9.5. Break 和 continue
9.5.1. break 内建命令 9.5.2. continue 内建命令 9.5.3. 例子
9.6. 使用select内建命令来制作菜单
9.6.1. 概要 9.6.2. 子菜单
9.7. shift内建命令
9.7.1. What does it do? 9.7.2. 例子
9.8. 总结 9.9. 练习
10. 变量进阶
10.1. 变量的类型
10.1.1. 普通的变量赋值 10.1.2. 使用 declare 内建命令built-in 10.1.3. 常量
10.2. 数组变量
10.2.1. 建立数组 10.2.2. 对数组的变量解引用 10.2.3. 删除数组变量 10.2.4. 数组的例子
10.3. 变量的操作
10.3.1. 变量算术运算 10.3.2. 变量的长度 10.3.3. 变量的转化
10.4. 总结 10.5. 练习
11. 函数
11.1. 介绍
11.1.1. 什么是函数? 11.1.2. 函数语法 11.1.3. 函数中的位置参数 11.1.4. 显示函数
11.2. 函数在脚本中的例子
11.2.1. 循环利用 11.2.2. 设置路径 11.2.3. 远程备份
11.3. 总结 11.4. 练习
12. 捕捉信号
12.1. 信号
12.1.1. 介绍 12.1.2. kill信号的使用
12.2. 陷阱
12.2.1. 概要 12.2.2. Bash怎样解释陷阱 12.2.3. 更多例子
12.3. 总结 12.4. 练习
A. Shell特性
A.1. 普通特性 A.2. 不同的特性
B. GNU Free Documentation License
B.1. Preamble B.2. Applicability and definitions B.3. Verbatim copying B.4. Copying in quantity B.5. Modifications B.6. Combining documents B.7. Collections of documents B.8. Aggregation with independent works B.9. Translation B.10. Termination B.11. Future revisions of this license B.12. How to use this License for your documents
术语表 Index
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值