第1章 初识Linux she
1.1 什么是Linux2
1.1.1深入探究Linux 内核3
1.1.2GNU 工具6
1.1.3Linux 桌面环境8
1.2 Linux 发行版12
1.2.1核心Linux 发行版13
1.2.2特定用途的Linux 发行版13
1.2.3Linux LiveCD14
1.3 小结15
第2章 走进shell
2.1 进入命令行16
2.1.1控制台终端17
2.1.2图形化终端17
2.2 通过Linux 控制台终端访问CLI18
2.3 通过图形化终端仿真访问CLI20
2.4 使用GNOME Terminal 仿真器21
2.4.1访问GNOME Terminal21
2.4.2菜单栏22
2.5 使用Konsole Terminal 仿真器25
2.5.1访问Konsole Terminal25
2.5.2菜单栏26
2.6 使用xterm 终端仿真器29
2.6.1访问xterm30
2.6.2命令行参数30
2.7 小结32
第3章 基本的bash shell 命令
3.1 启动shell33
3.2 shell 提示符34
3.3 bash 手册34
3.4 浏览文件系统37
3.4.1Linux 文件系统37
3.4.2遍历目录40
3.5 文件和目录列表42
3.5.1基本列表功能42
3.5.2显示长列表44
3.5.3过滤输出列表45
3.6 处理文件46
3.6.1创建文件47
3.6.2复制文件47
3.6.3制表键自动补全50
3.6.4链接文件50
3.6.5重命名文件52
3.6.6删除文件54
3.7 处理目录55
3.7.1创建目录55
3.7.2删除目录55
3.8 查看文件内容58
3.8.1查看文件类型58
3.8.2查看整个文件59
3.8.3查看部分文件61
3.9 小结63
第4章 更多的bash shell 命令
4.1 监测程序64
4.1.1探查进程64
4.1.2实时监测进程70
4.1.3结束进程72
4.2 监测磁盘空间73
4.2.1挂载存储媒体73
4.2.2使用df 命令76
4.2.3使用du 命令77
4.3 处理数据文件78
4.3.1排序数据78
4.3.2搜索数据81
4.3.3压缩数据83
4.3.4归档数据84
4.4 小结85
第5章 理解shell
5.1 shell 的类型86
5.2 shell 的父子关系88
5.2.1进程列表91
5.2.2别出心裁的子shell 用法93
5.3 理解shell 的内建命令96
5.3.1外部命令96
5.3.2内建命令97
5.4 小结101
第6章 使用Linux 环境变量
6.1 什么是环境变量103
6.1.1全局环境变量104
6.1.2局部环境变量105
6.2 设置用户定义变量106
6.2.1设置局部用户定义变量106
6.2.2设置全局环境变量107
6.3 删除环境变量109
6.4 默认的shell 环境变量110
6.5 设置PATH 环境变量113
6.6 定位系统环境变量114
6.6.1登录shell115
6.6.2交互式shell 进程119
6.6.3非交互式shell120
6.6.4环境变量持久化121
6.7 数组变量121
6.8 小结122
第7章 理解Linux 文件权限
7.1 Linux 的安全性124
7.1.1/etc/passwd 文件124
7.1.2/etc/shadow 文件126
7.1.3添加新用户127
7.1.4删除用户129
7.1.5修改用户130
7.2 使用Linux 组132
7.2.1/etc/group 文件133
7.2.2创建新组133
7.2.3修改组134
7.3 理解文件权限135
7.3.1使用文件权限符135
7.3.2默认文件权限136
7.4 改变安全性设置138
7.4.1改变权限138
7.4.2改变所属关系139
7.5 共享文件140
7.6 小结142
第8章 管理文件系统
8.1 探索Linux 文件系统143
8.1.1基本的Linux 文件系统143
8.1.2日志文件系统145
8.1.3写时复制文件系统147
8.2 操作文件系统147
8.2.1创建分区147
8.2.2创建文件系统151
8.2.3文件系统的检查与修复153
8.3 逻辑卷管理154
8.3.1逻辑卷管理布局154
8.3.2Linux 中的LVM155
8.3.3使用Linux LVM156
8.4 小结162
第9章 安装软件程序
9.1 包管理基础163
9.2 基于Debian 的系统164
9.2.1用aptitude 管理软件包164
9.2.2用aptitude 安装软件包166
9.2.3用aptitude 更新软件168
9.2.4用aptitude 卸载软件169
9.2.5aptitude 仓库169
9.3 基于Red Hat 的系统171
9.3.1列出已安装包171
9.3.2用yum 安装软件173
9.3.3用yum 更新软件174
9.3.4用yum 卸载软件174
9.3.5处理损坏的包依赖关系175
9.3.6yum 软件仓库176
9.4 从源码安装177
9.5 小结180
10.1.1检查vim 软件包181
10.1.2vim 基础183
10.1.4复制和粘贴185
10.1.5查找和替换186
10.3.1检查emacs 软件包189
10.3.2在控制台中使用emacs190
10.3.3在GUI 环境中使用emacs195
10.5.1启动gedit203
10.5.2基本的gedit 功能203
10.5.3设定偏好设置204
10.6 小结206
第二部分shell 脚本编程基础
第11章 构建基本脚本
11.1 使用多个命令210
11.2 创建shell 脚本文件211
11.3 显示消息212
11.4 使用变量214
11.4.1环境变量214
11.4.2用户变量215
11.4.3命令替换216
11.5 重定向输入和输出218
11.5.1输出重定向218
11.5.2输入重定向219
11.6 管道220
11.7 执行数学运算222
11.7.1expr 命令223
11.7.2使用方括号224
11.7.3浮点解决方案225
11.8 退出脚本228
11.8.1查看退出状态码228
11.8.2exit 命令229
11.9 小结231
第12章 使用结构化命令
12.1 使用if-then 语句232
12.2 if-then-else 语句235
12.3 嵌套if235
12.4 test 命令238
12.4.1数值比较240
12.4.2字符串比较242
12.4.3文件比较246
12.5 复合条件测试254
12.6 if-then 的高级特性255
12.6.1使用双括号255
12.6.2使用双方括号256
12.7 case 命令257
12.8 小结258
第13章 更多的结构化命令
13.1 for 命令260
13.1.1读取列表中的值261
13.1.2读取列表中的复杂值262
13.1.3从变量读取列表263
13.1.4从命令读取值264
13.1.5更改字段分隔符265
13.1.6用通配符读取目录266
13.2 C 语言风格的for 命令268
13.2.1C 语言的for 命令268
13.2.2使用多个变量269
13.3 while 命令270
13.3.1while 的基本格式270
13.3.2使用多个测试命令271
13.4 until 命令272
13.5 嵌套循环274
13.6 循环处理文件数据276
13.7 控制循环277
13.7.1break 命令277
13.7.2continue 命令280
13.8 处理循环的输出282
13.9 实例283
13.9.1查找可执行文件284
13.9.2创建多个用户账户285
13.10 小结286
第14章 处理用户输入
14.1 命令行参数287
14.1.1读取参数287
14.1.2读取脚本名289
14.1.3测试参数291
14.2 特殊参数变量292
14.2.1参数统计292
14.2.2抓取所有的数据294
14.3 移动变量295
14.4 处理选项296
14.4.1查找选项297
14.4.2使用getopt 命令300
14.4.3使用更高级的getopts302
14.5 将选项标准化305
14.6 获得用户输入306
14.6.1基本的读取306
14.6.2超时307
14.6.3隐藏方式读取308
14.6.4从文件中读取309
14.7 小结309
第15章 呈现数据
15.1 理解输入和输出311
15.1.1标准文件描述符311
15.1.2重定向错误313
15.2 在脚本中重定向输出315
15.2.1临时重定向315
15.2.2永久重定向316
15.3 在脚本中重定向输入317
15.4 创建自己的重定向317
15.4.1创建输出文件描述符318
15.4.2重定向文件描述符318
15.4.3创建输入文件描述符319
15.4.4创建读写文件描述符320
15.4.5关闭文件描述符321
15.5 列出打开的文件描述符322
15.6 阻止命令输出323
15.7 创建临时文件324
15.7.1创建本地临时文件324
15.7.2在/tmp 目录创建临时文件325
15.7.3创建临时目录326
15.8 记录消息327
15.9 实例328
15.10 小结330
第16章 控制脚本
16.1 处理信号331
16.1.1重温Linux 信号331
16.1.2生成信号332
16.1.3捕获信号334
16.1.4捕获脚本退出335
16.1.5修改或移除捕获335
16.2 以后台模式运行脚本338
16.2.1后台运行脚本338
16.2.2运行多个后台作业340
16.3 在非控制台下运行脚本341
16.4 作业控制342
16.4.1查看作业342
16.4.2重启停止的作业344
16.5 调整谦让度345
16.5.1nice 命令345
16.5.2renice 命令346
16.6 定时运行作业346
16.6.1用at 命令来计划执行作业347
16.6.2安排需要定期执行的脚本349
16.6.3使用新shell 启动脚本352
16.7 小结353
第三部分高级shell 脚本编程
第17章 创建函数
17.1 基本的脚本函数356
17.1.1创建函数357
17.1.2使用函数357
17.2 返回值359
17.2.1默认退出状态码359
17.2.2使用return 命令360
17.2.3使用函数输出361
17.3 在函数中使用变量362
17.3.1向函数传递参数362
17.3.2在函数中处理变量364
17.4 数组变量和函数366
17.4.1向函数传数组参数366
17.4.2从函数返回数组368
17.5 函数递归369
17.6 创建库370
17.7 在命令行上使用函数371
17.7.1在命令行上创建函数372
17.7.2在.bashrc 文件中定义函数372
17.8 实例374
17.8.1下载及安装374
17.8.2构建库374
17.8.3shtool 库函数376
17.8.4使用库376
17.9 小结377
第18章 图形化桌面环境中的脚本编程
18.1 创建文本菜单378
18.1.1创建菜单布局379
18.1.2创建菜单函数380
18.1.3添加菜单逻辑380
18.1.4整合shell 脚本菜单381
18.1.5使用select 命令382
18.2 制作窗口384
18.2.1dialog 包384
18.2.2dialog 选项389
18.2.3在脚本中使用dialog 命令391
18.3 使用图形393
18.3.1KDE 环境393
18.3.2GNOME 环境396
18.4 小结400
第19章 初识sed 和gawk
19.1 文本处理401
19.1.2gawk 程序404
19.2.1更多的替换选项410
19.2.2使用地址411
19.2.3删除行414
19.2.4插入和附加文本415
19.2.5修改行417
19.2.6转换命令418
19.2.7回顾打印419
19.2.8使用sed 处理文件421
19.3 小结423
第20章 正则表达式
20.1 什么是正则表达式424
20.1.1定义424
20.1.2正则表达式的类型425
20.2 定义BRE 模式426
20.2.1纯文本426
20.2.2特殊字符427
20.2.3锚字符428
20.2.4点号字符430
20.2.5字符组430
20.2.6排除型字符组432
20.2.7区间433
20.2.8特殊的字符组434
20.2.9星号434
20.3 扩展正则表达式436
20.3.1问号436
20.3.2加号437
20.3.3使用花括号437
20.3.4管道符号438
20.3.5表达式分组439
20.4 正则表达式实战439
20.4.1目录文件计数440
20.4.2验证电话号码441
20.4.3解析邮件地址443
20.5 小结444
第21章 sed 进阶
21.1 多行命令445
21.1.1next 命令446
21.1.2多行删除命令449
21.1.3多行打印命令449
21.2 保持空间450
21.3 排除命令451
21.4 改变流454
21.4.1分支454
21.4.2测试455
21.5 模式替代456
21.5.1&符号457
21.5.2替代单独的单词457
21.6 在脚本中使用sed458
21.6.1使用包装脚本458
21.6.2重定向sed 的输出459
21.7 创建sed 实用工具460
21.7.1加倍行间距460
21.7.2对可能含有空白行的文件加倍行间距460
21.7.3给文件中的行编号461
21.7.4打印末尾行462
21.7.5删除行463
21.7.6删除HTML 标签466
21.8 小结467
第22章 gawk 进阶
22.1 使用变量469
22.1.1内建变量469
22.1.2自定义变量474
22.2 处理数组476
22.2.1定义数组变量476
22.2.2遍历数组变量477
22.2.3删除数组变量478
22.3 使用模式478
22.3.1正则表达式478
22.3.2匹配操作符479
22.3.3数学表达式480
22.4 结构化命令480
22.4.1if 语句480
22.4.2while 语句482
22.4.3do-while 语句483
22.4.4for 语句484
22.5 格式化打印484
22.6 内建函数487
22.6.1数学函数487
22.6.2字符串函数488
22.6.3时间函数490
22.7 自定义函数490
22.7.1定义函数490
22.7.2使用自定义函数491
22.7.3创建函数库491
22.8 实例492
22.9 小结493
第23章 使用其他shell
23.1 什么是dash shell495
23.2 dash shell 的特性496
23.2.1dash 命令行参数496
23.2.2dash 环境变量497
23.2.3dash 内建命令499
23.3 dash 脚本编程500
23.3.1创建dash 脚本500
23.3.2不能使用的功能500
23.4 zsh shell502
23.5 zsh shell 的组成503
23.5.1shell 选项503
23.5.2内建命令504
23.6 zsh 脚本编程508
23.6.1数学运算508
23.6.2结构化命令509
23.6.3函数510
23.7 小结510
第四部分创建实用的脚本
第24章 编写简单的脚本实用工具
24.1 归档514
24.2 管理用户账户523
24.2.1需要的功能523
24.2.2创建脚本530
24.2.3运行脚本535
24.3 监测磁盘空间537
24.3.1需要的功能537
24.3.2创建脚本540
24.3.3运行脚本541
24.4 小结542
第25章 创建与数据库、Web及电子邮件相关的脚本
25.1 MySQL 数据库543
25.1.1使用MySQL543
25.1.2在脚本中使用数据库552
25.2 使用Web555
25.2.1安装Lynx556
25.2.2lynx 命令行557
25.2.3Lynx 配置文件558
25.2.4从Lynx 中获取数据559
25.3 使用电子邮件561
25.4 小结564
第26章 一些小有意思的脚本
26.1 发送消息565
26.1.1功能分析565
26.1.2创建脚本568
26.2 获取格言573
26.2.1功能分析574
26.2.2创建脚本577
26.3 编造借口583
26.3.1功能分析583
26.3.2创建脚本586
26.4 小结587
附录Abash 命令快速指南589
附录Bsed 和gawk 快速指南597