第1章 Linux shell和基本指令 1
1.1 Linux和shell 2
1.2 Linux环境 8
1.2.1 Linux诞生 8
1.2.2 Linux的特征 9
1.2.3 vi(m)编辑器 11
1.2.4 Linux中的文件和文件系统 12
1.3 shell脚本编程基础知识 14
1.3.1简介 14
1.3.2帮助页面 19
1.3.3 Linux默认指令格式 22
1.3.4 shell的编辑模式 22
1.3.5指定变量和消息输出(printf、echo) 24
1.3.6使用多重指令(;、&&、||) 25
1.3.7历史命令(history、?、?、!) 26
1.4 Linux目录操作 28
1.4.1 pwd:显示当前工作目录位置 29
1.4.2 Is:显示当前文件和目录内容 30
1.4.3 cd:切换工作目录 37
1.4.4 less、 more、 cat:浏览文本文件 39
1.4.5 file:显示文件类型 41
1.4.6 Linux的默认目录结构 43
1.4.7文件和目录操作 44
1.5 I/O重定向和管道 55
1.5.1标准输出 55
1.5.2标准输入 58
1.5.3管道 60
1.5.4过滤器 61
1.6文件访问权限 62
1.6.1文件/目录许可 63
1.6.2 chmod 64
1.6.3 chown、 chgrp 69
1.6.4 lsattr、 chattr 69
1.7作业控制 71
1.7.1bg 72
1.7.2.jobs、 ps、 kill 73
1.8系统管理员指令总结 78
1.8.1用户和组 78
1.8.2终端 85
1.8.3信息与统计 88
1.8.4系统日志 96
1.8.5作业控制 98
1.8.6进程管理和启动 103
1.8.7网络 106
1.8.8文件系统 109
1.8.9备份 121
1.8.10系统资源 121
1.8.11模块 124
1.8.12其他指令 125
第2章 shell脚本示例解析 130
2.1 Linux启动过程和登录shell 131
2.1.1 Linux启动、终止与重启 131
2.1.2 shell初始化文件 133
2.2命令行解析 140
2.3指令类型 140
2.4进程与shell 142
2.4.1运行中的进程类型 142
2.4.2系统调用 143
2.4.3进程创建和系统调用 145
2.5变量(Boume shell) 150
2.5.1变量类型 150
2.5.2生成变量 158
2.5.3局部变量转为环境变量 159
2.5.4预定义变量 160
2.5.5特殊参数变量 163
2.6 Boume shell 165
2.6.1 shbang行 165
2.6.2注释 165
2.6.3通配符 165
2.6.4显示器显示 166
2.6.5局部变量 166
2.6.6全局变量 166
2.6.7从变量读取值 167
2.6.8读取用户输入信息 167
2.6.9参数 168
2.6.10数组 168
2.6.11替换命令 168
2.6.12算术运算 169
2.6.13运算符 169
2.6.14条件语句 169
2.6.15 循环语句 171
2.6.16文件测试 172
2.6.17函数 176
2.7 Bash shell语法和结构 176
2.7.1 Bash shell介绍 176
2.7.2 Bash shell环境及初始化文件 178
2.7.3 Bash shell选项设置命令set、shopt 184
2.7.4 shell提示符 188
2.7.5搜索路径 190
2.7.6 hash命令 191
2.7.7 source或dot(.)命令 192
2.8命令行 192
2.8.1命令处理顺序 192
2.8.2内置命令和help命令 193
2.8.3改变命令行处理顺序 199
2.8.4终止状态 201
2.8.5命令行中的多个指令 202
2.8.6命令整合 203
2.8.7执行命令条件 203
2.8.8通过后台执行命令 204
2.9作业控制 204
2.10命令行快捷方式 207
2.10.1完成命令和文件名 207
2.10.2历史 207
2.10.3访问历史文件的命令 208
2.10.4命令行的编辑 214
2.11别名 217
2.11.1别名目录 217
2.11.2创建别名 217
2.11.3删除别名 218
2.12操作目录栈 219
2.12.1 dirs命令 219
2.12.2 pushd和popd命令 219
2.13元字符集 220
2.14替换文件名 221
2.14.1星号() 221
2.14.2问号(?) 222
2.14.3方括号([]) 222
2.14.4花括号扩展(﹛﹜) 223
2.14.5转义元字符(\) 223
2.14.6波浪线(~)和连字符(-)扩展 224
2.14.7通配符管理 224
2.14.8扩展文件名通配 225
2.15 变量(Bash shell) 226
2.15.1变量类型 226
2.15.2变量名 227
2.15.3 declare命令 227
2.15.4局部变量和使用范围 227
2.15.5环境变量 229
2.15.6清除变量设置 235
2.15.7显示变量值 236
2.15.8变量扩展修饰符 237
2.15.9截取字符串的变量扩展名 239
2.15.10位置参数 240
2.15.11其他特殊变量 242
2.16引用符号 242
2.16.1反斜杠(\) 243
2.16.2单引号(‘’) 244
2.16.3双引号(“”) 244
2.17替换命令 245
2.18算数扩展 247
2.19 shell扩展顺序 247
2.20数组 248
2.21函数 249
2.21.1函数定义 249
2.21.2清除函数目录和设置 251
2.22标准I/O和重定向 251
2.23管道 257
2.24 shell调用选项 260
第3章 正则表达式和模式检索 263
3.1正则表达式 264
3.2正则表达式的元字符集 264
第4章 grep模式检索 272
4.1 grep 273
4.2 egrep 281
4.3 fgrep 282
第5章 sed实用工具 284
5.1 sed 285
5.2 sed版本和帮助页面 285
5.3 sed工作原理 286
5.4正则表达式的使用 287
第6章 awk编程 289
6.1 awk 290
6.2 awk编程格式 291
6.2.1从文件输入 292
6.2.2从指令输入 292
6.2.3 awk工作原理 293
6.2.4 print函数 295
6.2.5 OFMT变量 296
6.2.6 printf函数 296
6.2.7 awk -f选项 298
6.2.8记录和字段 299
6.2.9模式和动作 301
6.3 awk和正则表达式 303
6.4脚本文件中的awk 305
6.5比较表达式 306
6.5.1条件表达式 307
6.5.2算术运算符 308
6.5.3逻辑运算符和混合模式 308
6.6 awk变量 309
6.6.1数值与字符串常数 309
6.6.2用户自定义变量 310
6.6.3 BEGIN模式 314
6.6.4 END模式 314
6.7 awk重定向 315
6.7.1输出重定向 315
6.7.2输入重定向 315
6.8 awk管道 317
6.9条件语句 319
6.9.1 if条件语句 320
6.9.2 if/else条件语句 320
6.9.3 if/else if/else条件语句 320
6.10 loop循环语句 321
6.10.1 while循环语句 322
6.10.2 for循环语句 322
6.10.3管理循环语句 322
6.11程序管理语句 323
6.11.1 next语句 323
6.11.2 exit函数 323
6.12数组 324
6.12.1针对关联数组的子脚本 324
6.12.2命令处理参数 329
6.13 awk内置函数(1) 331
6.14 awk内置数学函数 334
6.14.1整数型函数 335
6.14.2生成随机数 335
6.15 用户自定义函数 336
6.16其他 338
6.16.1固定宽度字段 338
6.16.2多行记录 340
6.17 awk内置函数(2) 341
6.17.1字符串函数 341
6.17.2时间函数 343
6.17.3命令行参数 345
6.17.4读取输入值 345
6.17.5控制函数 346
6.17.6用户自定义函数 347
6.17.7 awk命令行选项 347
第7章 Bash shell编程 350
7.1简介 351
7.2读取用户输入 353
7.2.1变量 353
7.2.2 read命令 354
7.3算数运算 355
7.3.1整数算数运算 355
7.3.2实数型算数运算 359
7.4位置参数和命令行参数 360
7.4.1位置参数 360
7.4.2 set命令和位置参数 361
7.5条件语句和分支语句 363
7.5.1终止状态 363
7.5.2 test命令和let命令 364
7.5.3 if/then/else命令 372
7.5.4 if/then/elif/then/else命令 373
7.5.5文件测试 375
7.5.6null命令 378
7.5.7 case命令 381
7.6循环语句命令 384
7.6.1 for循环语句命令 384
7.6.2 $*和$@ 387
7.6.3 while循环语句命令 388
7.6.4 until循环语句命令 390
7.6.5 select命令和菜单 392
7.6.6循环语句管理命令 394
7.6.7 I/O重定向和子shell 399
7.6.8在后台使用循环语句 401
7.6.9 IFS和循环语句 401
7.7函数 402
7.7.1解除函数设置 403
7.7.2导出函数 404
7.7.3函数参数和返回值 404
7.7.4函数和source命令 406
7.8捕获信号 408
7.8.1信号重置 410
7.8.2忽略信号 410
7.8.3 trap目录 410
7.8.4 trap和函数 411
7.9调试Bash脚本 413
7.10命令行 414
7.10.1使用getops的命令行处理 414
7.10.2特殊的getopts变量 416
7.10.3 eval命令和命令行解析 417
7.11 Bash选项 418
7.11.1 shell调用选项 418
7.11.2 set命令和选项 419
7.12 shell内置命令 420
7.13 shell对照表 421
7.14 Linux启动脚本分析 421
7.15 利用Bash脚本创建Text GUI 428
7.15.1安装dialog实用工具 428
7.15.2 dialog用法 432
7.15.3消息框(MsgBox) 434
7.15.4 yes/no消息框 434
7.15.5输入框 435
7.15.6单选列表 436
7.15.7编写dialog示例 437
第8章 vi(m)编辑器和有用的实用工具 442
8.1 vi(m)编辑器:vi improved 443
8.1.1vi(m) 443
8.1.2 vi(m)启动 444
8.1.3常用编辑命令 447
8.1.4高级编辑命令 454
8.1.5使用多个编辑窗口 465
8.2 vi(m)教程 467
8.3有用的实用工具 481
8.3.1 cut 481
8.3.2 paste 482
8.3.3 join 483
8.3.4 tr 483
8.3.5 uniq 484
8.3.6 split 485
8.3.7 col 486
8.3.8 xarg 487
8.3.9 find 488
8.3.10 tee 492
索引 494