第1部分 Linux命令行 3
第1章 Linuxshell入门 3
1.1什么是Linux 3
1.1.1深入研究Linux内核 4
1.1.2GNU实用程序 9
1.1.3Linux桌面环境 10
1.2Linux发行版 13
1.2.1核心Linux发行版 13
1.2.2特定Linux发行版 14
1.2.3LinuxLiveCD 14
1.3小结 15
第2章 了解shell 17
2.1终端模拟 17
2.1.1图形功能 18
2.1.2键盘 20
2.2terminfo数据库 21
2.3Linux控制台 23
2.4xterm终端 24
2.4.1命令行参数 24
2.4.2xterm主菜单 25
2.4.3VT选项菜单 26
2.4.4VT字体菜单 28
2.5Konsole终端 29
2.5.1命令行参数 29
2.5.2会话 30
2.5.3菜单栏 31
2.6GNOME终端 34
2.6.1命令行参数 34
2.6.2选项卡 35
2.6.3菜单栏 35
2.7小结 37
第3章 基本的bashshell命令 38
3.1启动shell 38
3.2shell提示符 39
3.3bash手册 40
3.4文件系统导航 41
3.4.1Linux文件系统 41
3.4.2浏览目录 43
3.5文件和目录列表 44
3.5.1基本列表 44
3.5.2修改显示的信息 45
3.5.3完整的参数列表 46
3.5.4过滤列表输出 48
3.6文件处理 48
3.6.1创建文件 48
3.6.2复制文件 49
3.6.3链接文件 50
3.6.4重命名文件 51
3.6.5删除文件 52
3.7目录处理 53
3.7.1创建目录 53
3.7.2删除目录 53
3.8查看文件内容 54
3.8.1查看文件统计数据 54
3.8.2查看文件类型 54
3.8.3查看整个文件 55
3.8.4查看部分文件 57
3.9小结 58
第4章 更多bashshell命令 59
4.1监控程序 59
4.1.1进程查看 59
4.1.2实时进程监控 64
4.1.3停止进程 66
4.2监控磁盘空间 67
4.2.1挂载介质 68
4.2.2使用df命令 70
4.2.3使用du命令 71
4.3操作数据文件 71
4.3.1数据排序 72
4.3.2搜索数据 74
4.3.3压缩数据 75
4.3.4归档数据 78
4.4小结 79
第5章 使用Linux环境变量 80
5.1什么是环境变量 80
5.1.1全局环境变量 80
5.1.2本地环境变量 81
5.2设置环境变量 83
5.2.1设置本地环境变量 83
5.2.2设置全局环境变量 84
5.3移除环境变量 84
5.4默认的shell环境变量 85
5.5设置PATH环境变量 87
5.6定位系统环境变量 88
5.6.1登录shell 88
5.6.2交互式shell 90
5.6.3非交互式shell 92
5.7变量数组 92
5.8使用命令别名 93
5.9小结 94
第6章 理解Linux文件权限 96
6.1Linux安全性 96
6.1.1/etc/passwd文件 96
6.1.2/etc/shadow文件 98
6.1.3添加新用户 98
6.1.4删除用户 100
6.1.5修改用户 100
6.2使用Linux用户组 102
6.2.1/etc/group文件 103
6.2.2创建新用户组 103
6.2.3修改用户组 104
6.3解码文件权限 104
6.3.1使用文件权限符号 105
6.3.2默认文件权限 105
6.4修改安全设置 107
6.4.1修改权限 107
6.4.2修改所有者 108
6.5共享文件 108
6.6小结 109
第7章 使用编辑器 111
7.1vim编辑器 111
7.1.1vim基本用法 111
7.1.2编辑数据 113
7.1.3复制和粘贴 113
7.1.4搜索和替换 114
7.2emacs编辑器 114
7.2.1在控制台中使用emacs 114
7.2.2在XWindows中使用emacs 118
7.3KDE系列编辑器 119
7.3.1KWrite编辑器 119
7.3.2Kate编辑器 121
7.4GNOME编辑器 124
7.4.1启动gedit 124
7.4.2基本gedit特性 125
7.4.3设置首选项 125
7.5小结 128
第2部分 shell脚本的基础知识 131
第8章 基本脚本编译 131
8.1使用多条命令 131
8.2创建脚本文件 131
8.3显示消息 133
8.4使用变量 134
8.4.1环境变量 134
8.4.2用户变量 135
8.4.3反引号 136
8.5重定向输入输出 137
8.5.1输出重定向 137
8.5.2输入重定向 137
8.6管道 138
8.7数学计算 140
8.7.1expr命令 140
8.7.2使用括号 141
8.7.3浮点解决方案 142
8.8退出脚本 145
8.8.1核对退出状态 145
8.8.2退出命令 146
8.9小结 147
第9章 使用结构化命令 148
9.1使用if-then语句 148
9.2if-then-else语句 150
9.3嵌套if语句 150
9.4test命令 151
9.4.1数值比较 151
9.4.2字符串比较 152
9.4.3文件比较 155
9.5复合条件检查 161
9.6if-then的高级特征 161
9.6.1使用双圆括号 162
9.6.2使用双方括号 162
9.7case命令 163
9.8小结 164
第10章 更多结构化命令 165
10.1for命令 165
10.1.1读取列表中的值 165
10.1.2读取列表中的复杂值 166
10.1.3从变量读取列表 168
10.1.4读取命令中的值 168
10.1.5改变字段分隔符 169
10.1.6使用通配符读取目录 170
10.2C式的for命令 171
10.2.1C语言中的for命令 171
10.2.2使用多个变量 172
10.3while命令 173
10.3.1while的基本格式 173
10.3.2使用多条测试命令 174
10.4until命令 175
10.5嵌套循环 176
10.6文件数据的循环 178
10.7控制循环 178
10.7.1break命令 179
10.7.2continue命令 181
10.8处理循环的输出 183
10.9小结 184
第11章 处理用户输入 185
11.1命令行参数 185
11.1.1读取参数 185
11.1.2读取程序名称 187
11.1.3测试参数 188
11.2特殊的参数变量 188
11.2.1参数计数 188
11.2.2获取所有数据 190
11.3移位 190
11.4处理选项 191
11.4.1找出选项 191
11.4.2使用getopt命令 194
11.4.3更高级的getopts命令 196
11.5标准化选项 197
11.6获取用户输入 198
11.6.1基本读取 198
11.6.2计时 199
11.6.3默读 200
11.6.4读取文件 200
11.7小结 201
第12章 显示数据 202
12.1了解输入和输出 202
12.1.1标准文件描述符 202
12.1.2重定向错误 204
12.2在脚本中重定向输出 205
12.2.1临时重定向 205
12.2.2永久重定向 206
12.3在脚本中重定向输入 207
12.4创建自己的重定向 207
12.4.1创建输出文件描述符 207
12.4.2重定向文件描述符 208
12.4.3创建输入文件描述符 208
12.4.4创建读取/写入文件描述符 209
12.4.5关闭文件描述符 210
12.5列出开放文件描述符 210
12.6禁止命令输出 212
12.7使用临时文件 212
12.7.1创建本地临时文件 213
12.7.2在/temp中创建临时文件 213
12.7.3创建临时目录 214
12.8记录消息 215
12.9小结 216
第13章 脚本控制 217
13.1处理信号 217
13.1.1Linux信号回顾 217
13.1.2生成信号 218
13.1.3捕获信号 219
13.1.4捕获脚本退出 220
13.1.5移除捕获 220
13.2以后台模式运行脚本 221
13.2.1以后台模式运行 221
13.2.2运行多个后台作业 222
13.2.3退出终端 222
13.3在不使用控制台的情况下运行脚本 222
13.4作业控制 223
13.4.1查看作业 223
13.4.2重新启动停止的作业 225
13.5变得更好 225
13.5.1nice命令 226
13.5.2renice命令 226
13.6准确无误地运行 227
13.6.1使用at命令调度作业 227
13.6.2使用batch命令 229
13.6.3调度定期脚本 229
13.7从头开始 230
13.7.1在启动时启动脚本 231
13.7.2随新shell一起启动 232
13.8小结 232
第3部分 高级shell脚本编程 235
第14章 创建函数 235
14.1基本脚本函数 235
14.1.1创建函数 235
14.1.2使用函数 236
14.2返回值 237
14.2.1默认退出状态 237
14.2.2使用return命令 238
14.2.3使用函数输出 239
14.3在函数中使用变量 239
14.3.1向函数传递参数 240
14.3.2在函数中处理变量 241
14.4数组变量与函数 243
14.4.1向函数传递数组 243
14.4.2从函数返回数组 244
14.5函数递归 245
14.6创建库 246
14.7在命令行中使用函数 247
14.7.1在命令行创建函数 247
14.7.2在.bashrc文件中定义函数 248
14.8小结 249
第15章 在脚本中添加颜色 250
15.1创建文本菜单 250
15.1.1创建菜单布局 250
15.1.2创建菜单函数 251
15.1.3添加菜单逻辑 252
15.1.4将其全部组合在一起 252
15.1.5使用select命令 253
15.2添加颜色 254
15.2.1ANSI转义码 254
15.2.2显示ANSI转义码 255
15.2.3在脚本中使用颜色 256
15.3制作窗口 257
15.3.1dialog软件包 257
15.3.2dialog选项 261
15.3.3在脚本中使用dialog命令 263
15.4获取图形 265
15.4.1KDE环境 265
15.4.2GNOME环境 267
15.5小结 270
第16章 sed和gawk介绍 271
16.1文本处理 271
16.1.1sed编辑器 271
16.1.2gawk程序 273
16.2sed编辑器基础知识 278
16.2.1更多替换选项 278
16.2.2使用地址 279
16.2.3删除行 281
16.2.4插入和附加文本 282
16.2.5更改行 283
16.2.6变换命令 284
16.2.7打印命令温习 284
16.2.8将文件用于sed 286
16.3小结 288
第17章 正则表达式 289
17.1正则表达式是什么 289
17.1.1正则表达式的定义 289
17.1.2正则表达式的类型 290
17.2定义BRE模式 290
17.2.1纯文本 290
17.2.2特殊字符 291
17.2.3定位符 292
17.2.4点字符 293
17.2.5字符类 294
17.2.6否定字符类 295
17.2.7使用范围 296
17.2.8特殊字符类 296
17.2.9星号 297
17.3扩展的正则表达式 298
17.3.1问号 298
17.3.2加号 299
17.3.3使用大括号 299
17.3.4管道符号 300
17.3.5将表达式分组 300
17.4正则表达式实战 301
17.4.1计算目录文件 301
17.4.2验证电话号码 302
17.4.3解析电子邮件地址 303
17.5小结 304
第18章 高级sed编程 306
18.1多行命令 306
18.1.1next命令 306
18.1.2多行删除命令 309
18.1.3多行打印命令 310
18.2保留空间 310
18.3否定命令 311
18.4更改命令流 313
18.4.1分支 313
18.4.2测试 314
18.5模式替换 315
18.5.1与号 315
18.5.2替换个别单词 315
18.6在脚本中使用sed 316
18.6.1使用包装器 316
18.6.2重定向sed输出 317
18.7创建sed工具 317
18.7.1双倍行距 318
18.7.2对可能有空行的文件使用双倍行距 318
18.7.3对文件中的行记数 319
18.7.4打印最后几行 319
18.7.5删除行 320
18.7.6删除HTML标记 322
18.8小结 323
第19章 高级gawk编程 324
19.1使用变量 324
19.1.1内置变量 324
19.1.2用户定义的变量 328
19.2使用数组 329
19.2.1定义数组变量 329
19.2.2在数组变量中递归 330
19.2.3删除数组变量 330
19.3使用模式 331
19.3.1正则表达式 331
19.3.2匹配操作符 331
19.3.3数学表达式 332
19.4结构化命令 332
19.4.1if语句 333
19.4.2while语句 334
19.4.3do-while语句 335
19.4.4for语句 335
19.5格式化打印 335
19.6内置函数 337
19.6.1数学函数 337
19.6.2字符串函数 338
19.6.3时间函数 339
19.7用户定义的函数 340
19.7.1定义函数 340
19.7.2使用自己的函数 340
19.7.3创建函数库 341
19.8小结 341
第4部分 可选的Linuxshell 345
第20章 ashshell 345
20.1什么是ashshell 345
20.2原始ashshell 346
20.2.1原始ash命令行参数 346
20.2.2原始ash内置命令 347
20.2.3ashshell文件 349
20.3dashshell 349
20.3.1dash命令行参数 349
20.3.2dash环境变量 350
20.3.3dash内置命令 352
20.4在dash中编写脚本 355
20.4.1创建ash和dash脚本 355
20.4.2失效的特性 355
20.5小结 359
第21章 tcshshell 360
21.1什么是tcshshell 360
21.2tcashshell的组成部分 360
21.2.1tcsh命令行参数 361
21.2.2tcsh文件 361
21.2.3tcsh登录文件 362
21.2.4shell启动文件 362
21.2.5退出文件 363
21.2.6tcsh环境变量 364
21.2.7shell变量 364
21.2.8环境变量 367
21.2.9在tcsh中设置变量 369
21.2.10使用set命令 369
21.2.11使用setenv命令 369
21.2.12tcsh内置命令 370
21.3在tcsh中编写脚本 372
21.3.1处理变量 372
21.3.2数组变量 372
21.3.3处理数学运算 372
21.3.4结构化命令 373
21.3.5if语句 373
21.3.6foreach语句 375
21.3.7while语句 375
21.3.8switch命令 375
21.4小结 376
第22章 Kornshell 378
22.1Kornshell的历史 378
22.2ksh93shell的组成部分 378
22.2.1命令行参数 379
22.2.2默认文件 380
22.2.3环境变量 380
22.2.4内置命令 385
22.3在ksh93shell中编写脚本 387
22.3.1数学运算 387
22.3.2结构化命令 389
22.3.3命令重定向 391
22.3.4规程函数 391
22.4小结 392
第23章 zshshell 393
23.1zshshell的历史 393
23.2zshshell的组成部分 393
23.2.1shell选项 394
23.2.2zshshell文件 396
23.2.3环境变量 398
23.2.4内置命令 401
23.3使用zsh编写脚本 405
23.3.1数学运算 405
23.3.2结构化命令 406
23.3.3函数 406
23.4小结 408
第5部分 高级主题 411
第24章 使用数据库 411
24.1MySQL数据库 411
24.1.1安装MySQL 411
24.1.2完成MySQL配置 413
24.1.3MySQL客户端接口 414
24.1.4创建MySQL数据库对象 417
24.2PostgreSQL数据库 419
24.2.1安装PostgreSQL 419
24.2.2PostgreSQL命令接口 421
24.2.3创建PostgreSQL数据库对象 422
24.3处理表 424
24.3.1创建表 424
24.3.2插入和删除数据 425
24.3.3查询数据 426
24.4在脚本中使用数据库 427
24.4.1连接到数据库 427
24.4.2向服务器发送命令 428
24.4.3格式化数据 431
24.5小结 432
第25章 使用Web 433
25.1Lynx程序 433
25.1.1安装Lynx 434
25.1.2Lynx命令行 434
25.1.3Lynx配置文件 438
25.1.4Lynx环境变量 439
25.1.5从Lynx捕获数据 439
25.2cURL程序 441
25.2.1安装cURL 441
25.2.2cURL命令行 442
25.2.3研究curl 444
25.3使用zsh连接网络 445
25.3.1TCP模块 445
25.3.2客户端/服务器模型 446
25.3.3使用zsh进行客户端/服务器编程 446
25.4小结 449
第26章 使用电子邮件 450
26.1Linux电子邮件基础知识 450
26.1.1Linux中的电子邮件 450
26.1.2邮件传输代理 451
26.1.3邮件分发代理 452
26.1.4邮件用户代理 452
26.2设置服务器 454
26.2.1sendmail 455
26.2.2Postfix 456
26.3使用Mailx发送消息 459
26.4Mutt程序 461
26.4.1安装Mutt 461
26.4.2Mutt命令行 462
26.4.3使用Mutt 462
26.5小结 463
第27章 管理员使用的shell脚本 465
27.1监视系统统计信息 465
27.1.1监视磁盘空闲空间 465
27.1.2谁在霸占磁盘资源 467
27.1.3监视CPU和内存使用情况 469
27.2执行备份 474
27.2.1归档数据文件 474
27.2.2脱机存储备份文件 477
27.3小结 478
附录A bash命令快速指南 479
A.1内置命令 479
A.2bash命令 480
A.3环境变量 481
附录B sed和gawk快速指南 484
B.1sed编辑器 484
B.1.1启动sed编辑器 484
B.1.2sed命令 484
B.2gawk程序 487
B.2.1gawk命令格式 487
B.2.2使用gawk 487
B.2.3gawk变量 488
B.2.4gawk程序功能 489
附录C shell版本比较 491
C.1变量 491
C.1.1环境变量 491
C.1.2用户定义的变量 491
C.1.3数组变量 492
C.2结构化命令 492
C.2.1if-then、while和until语句 492
C.2.2for语句 493
C.3数学计算 493