第1章 小试牛刀 1
1.1简介 1
1.2在终端中显示输出 2
1.2.1预备知识 2
1.2.2实战演练 4
1.2.3工作原理 6
1.2.4补充内容 6
1.3使用变量与环境变量 7
1.3.1预备知识 7
1.3.2实战演练 8
1.3.3补充内容 9
1.4使用函数添加环境变量 11
1.4.1实战演练 11
1.4.2工作原理 12
1.5使用shell进行数学运算 12
1.6玩转文件描述符与重定向 14
1.6.1预备知识 14
1.6.2实战演练 15
1.6.3工作原理 17
1.6.4补充内容 17
1.7数组与关联数组 19
1.7.1预备知识 19
1.7.2实战演练 20
1.7.3补充内容 20
1.8别名 21
1.8.1实战演练 21
1.8.2补充内容 22
1.9采集终端信息 23
1.9.1预备知识 23
1.9.2实战演练 23
1.10获取并设置日期及延时 24
1.10.1预备知识 24
1.10.2实战演练 25
1.10.3工作原理 26
1.10.4补充内容 27
1.11调试脚本 27
1.11.1实战演练 28
1.11.2工作原理 29
1.11.3补充内容 29
1.12函数和参数 29
1.12.1实战演练 30
1.12.2补充内容 31
1.13将一个命令的输出发送给另一个命令 33
1.13.1预备知识 33
1.13.2实战演练 34
1.13.3补充内容 34
1.14在不按下回车键的情况下读入n个字符 35
1.15 持续运行命令直至执行成功 36
1.15.1实战演练 36
1.15.2工作原理 37
1.15.3补充内容 37
1.16字段分隔符与迭代器 37
1.16.1预备知识 38
1.16.2实战演练 38
1.17比较与测试 40
1.18使用配置文件定制bash 43
第2章 命令之乐 46
2.1简介 46
2.2用cat进行拼接 46
2.2.1实战演练 46
2.2.2补充内容 47
2.3录制并回放终端会话 49
2.3.1预备知识 49
2.3.2实战演练 49
2.3.3工作原理 50
2.4查找并列出文件 50
2.4.1预备知识 50
2.4.2实战演练 50
2.4.3补充内容 51
2.5玩转xargs 58
2.5.1预备知识 59
2.5.2实战演练 59
2.5.3工作原理 60
2.5.4补充内容 60
2.6用tr进行转换 63
2.6.1预备知识 63
2.6.2实战演练 64
2.6.3工作原理 64
2.6.4补充内容 65
2.7校验和与核实 67
2.7.1预备知识 68
2.7.2实战演练 68
2.7.3工作原理 68
2.7.4补充内容 69
2.8加密工具与散列 71
2.9行排序 72
2.9.1预备知识 72
2.9.2实战演练 72
2.9.3工作原理 73
2.9.4补充内容 73
2.10临时文件命名与随机数 76
2.10.1实战演练 77
2.10.2工作原理 77
2.11分割文件与数据 77
2.11.1工作原理 78
2.11.2补充内容 78
2.12根据扩展名切分文件名 80
2.12.1实战演练 80
2.12.2工作原理 80
2.13多个文件的重命名与移动 82
2.13.1预备知识 82
2.13.2实战演练 82
2.13.3工作原理 83
2.14拼写检查与词典操作 84
2.14.1实战演练 84
2.14.2工作原理 84
2.15 交互输入自动化 85
2.15.1预备知识 86
2.15.2实战演练 86
2.15.3工作原理 86
2.15.4补充内容 87
2.16利用并行进程加速命令执行 88
2.16.1实战演练 88
2.16.2工作原理 89
2.16.3补充内容 89
2.17检查目录以及其中的文件与子目录 89
2.17.1预备知识 90
2.17.2实战演练 90
第3章 以文件之名 92
3.1简介 92
3.2生成任意大小的文件 92
3.3文本文件的交集与差集 94
3.3.1预备知识 94
3.3.2实战演练 94
3.3.3工作原理 96
3.4查找并删除重复文件 97
3.4.1预备知识 97
3.4.2实战演练 97
3.4.3工作原理 98
3.5文件权限、所有权与粘滞位 99
3.5.1实战演练 101
3.5.2补充内容 102
3.6将文件设置为不可修改 104
3.6.1预备知识 104
3.6.2实战演练 104
3.7批量生成空白文件 105
3.7.1预备知识 105
3.7.2实战演练 105
3.8查找符号链接及其指向目标 106
3.8.1实战演练 106
3.8.2工作原理 107
3.9枚举文件类型统计信息 107
3.9.1预备知识 107
3.9.2实战演练 107
3.9.3工作原理 108
3.10使用环回文件 109
3.10.1实战演练 110
3.10.2工作原理 111
3.10.3补充内容 111
3.11生成ISO及混合型ISO文件 113
3.11.1预备知识 113
3.11.2实战演练 113
3.11.3补充内容 114
3.12查找并修补文件差异 115
3.12.1实战演练 115
3.12.2补充内容 117
3.13使用head与tail打印文件的前10行和后10行 117
3.14只列出目录的各种方法 120
3.14.1预备知识 120
3.14.2实战演练 120
3.14.3工作原理 120
3.15在命令行中使用pushd和popd实现快速定位 121
3.15.1预备知识 121
3.15.2实战演练 121
3.15.3补充内容 122
3.16统计文件的行数、单词数和字符数 122
3.17打印目录树 123
3.17.1预备知识 123
3.17.2实战演练 123
3.17.3补充内容 124
3.18处理视频与图像文件 125
3.18.1预备知识 125
3.18.2实战演练 126
第4章 让文本飞 128
4.1简介 128
4.2使用正则表达式 128
4.2.1实战演练 129
4.2.2工作原理 131
4.2.3补充内容 131
4.3使用grep在文件中搜索文本 132
4.3.1实战演练 132
4.3.2补充内容 134
4.4使用cut按列切分文件 138
4.4.1实战演练 138
4.4.2补充内容 139
4.5使用sed替换文本 140
4.5.1实战演练 140
4.5.2补充内容 141
4.6使用awk进行高级文本处理 144
4.6.1预备知识 144
4.6.2实战演练 144
4.6.3工作原理 144
4.6.4补充内容 146
4.7统计特定文件中的词频 149
4.7.1预备知识 149
4.7.2实战演练 150
4.7.3工作原理 150
4.7.4参考 151
4.8压缩或解压缩JavaScript 151
4.8.1预备知识 151
4.8.2实战演练 152
4.8.3工作原理 152
4.8.4参考 153
4.9按列合并多个文件 153
4.9.1实战演练 154
4.9.2参考 154
4.10打印文件或行中的第n个单词或列 154
4.10.1实战演练 154
4.10.2参考 155
4.11打印指定行或模式之间的文本 155
4.11.1预备知识 155
4.11.2实战演练 155
4.11.3参考 156
4.12以逆序形式打印行 156
4.12.1预备知识 156
4.12.2实战演练 156
4.12.3工作原理 157
4.13解析文本中的电子邮件地址和URL 157
4.13.1实战演练 157
4.13.2工作原理 158
4.13.3参考 158
4.14删除文件中包含特定单词的句子 158
4.14.1预备知识 158
4.14.2实战演练 159
4.14.3工作原理 159
4.14.4参考 159
4.15 对目录中的所有文件进行文本替换 159
4.15.1实战演练 160
4.15.2工作原理 160
4.15.3补充内容 160
4.16文本切片与参数操作 160
4.16.1实战演练 160
4.16.2参考 161
第5章 一团乱麻?没这回事! 162
5.1简介 162
5.2 Web页面下载 162
5.2.1预备知识 162
5.2.2实战演练 163
5.2.3工作原理 163
5.2.4补充内容 164
5.3以纯文本形式下载页面 165
5.3.1预备知识 165
5.3.2实战演练 165
5.4 cURL入门 166
5.4.1预备知识 166
5.4.2实战演练 166
5.4.3工作原理 167
5.4.4补充内容 167
5.4.5参考 169
5.5从命令行访问未读的Gmail邮件 170
5.5.1实战演练 170
5.5.2工作原理 170
5.5.3参考 171
5.6解析网站数据 171
5.6.1实战演练 171
5.6.2工作原理 172
5.6.3参考 172
5.7图片爬取器及下载工具 172
5.7.1实战演练 172
5.7.2工作原理 173
5.7.3参考 174
5.8网页相册生成器 174
5.8.1预备知识 175
5.8.2实战演练 175
5.8.3工作原理 176
5.8.4参考 176
5.9 Twitter命令行客户端 176
5.9.1预备知识 177
5.9.2实战演练 177
5.9.3工作原理 178
5.9.4参考 179
5.10通过Web服务器查询单词含义 179
5.10.1预备知识 179
5.10.2实战演练 180
5.10.3工作原理 180
5.10.4参考 180
5.11查找网站中的无效链接 181
5.11.1预备知识 181
5.11.2实战演练 181
5.11.3工作原理 182
5.11.4参考 182
5.12跟踪网站变动 182
5.12.1预备知识 182
5.12.2实战演练 182
5.12.3工作原理 184
5.12.4参考 184
5.13发送Web页面并读取响应 184
5.13.1预备知识 184
5.13.2实战演练 185
5.13.3参考 186
5.14从Internet下载视频 186
5.14.1预备知识 186
5.14.2实战演练 186
5.14.3工作原理 186
5.15 使用OTS汇总文本 187
5.15.1预备知识 187
5.15.2实战演练 187
5.15.3工作原理 187
5.16在命令行中翻译文本 187
5.16.1预备知识 188
5.16.2实战演练 188
5.16.3工作原理 188
第6章 仓储管理 189
6.1简介 189
6.2创建新的git仓库 190
6.2.1预备知识 190
6.2.2实战演练 190
6.2.3工作原理 190
6.3克隆远程git仓库 191
6.4使用git添加与提交变更 191
6.5使用git创建与合并分支 192
6.5.1预备知识 193
6.5.2实战演练 193
6.5.3工作原理 193
6.5.4补充内容 193
6.6分享工作成果 194
6.7推送分支 196
6.8检查git仓库状态 197
6.8.1实战演练 197
6.8.2工作原理 198
6.9查看git历史记录 198
6.10查找bug 198
6.10.1实战演练 199
6.10.2补充内容 199
6.11快照标签 200
6.12提交信息规范 201
6.13使用fossil 202
6.13.1预备知识 202
6.13.2实战演练 202
6.14创建新的fossil仓库 202
6.14.1实战演练 203
6.14.2工作原理 203
6.14.3补充内容 203
6.15 克隆远程fossil仓库 204
6.15.1实战演练 204
6.15.2工作原理 204
6.16打开fossil项目 204
6.16.1实战演练 204
6.16.2工作原理 205
6.16.3补充内容 205
6.17使用fossil添加与提交变更 205
6.17.1实战演练 205
6.17.2补充内容 206
6.18使用fossil分支与fork 206
6.18.1实战演练 207
6.18.2工作原理 207
6.18.3补充内容 208
6.19使用fossil分享工作成果 208
6.19.1实战演练 208
6.19.2工作原理 209
6.20更新本地fossil仓库 209
6.21检查fossil仓库状态 209
6.22查看fossil历史记录 210
第7章 B计划 215
7.1简介 215
7.2使用tar归档 215
7.2.1预备知识 215
7.2.2实战演练 216
7.2.3工作原理 216
7.2.4补充内容 216
7.2.5参考 220
7.3使用cpio归档 221
7.3.1实战演练 221
7.3.2工作原理 221
7.4使用gzip压缩数据 222
7.4.1实战演练 222
7.4.2补充内容 223
7.4.3参考 225
7.5使用zip归档及压缩 225
7.5.1实战演练 225
7.5.2工作原理 226
7.6更快的归档工具pbzip2 226
7.6.1预备知识 226
7.6.2实战演练 226
7.6.3工作原理 227
7.6.4补充内容 227
7.7创建压缩文件系统 228
7.7.1预备知识 228
7.7.2实战演练 228
7.7.3补充内容 229
7.8使用rsync备份系统快照 229
7.8.1实战演练 229
7.8.2工作原理 230
7.8.3补充内容 231
7.9差异化归档 232
7.9.1实战演练 232
7.9.2工作原理 232
7.10使用fsarchiver创建全盘镜像 233
7.10.1预备知识 233
7.10.2实战演练 233
7.10.3工作原理 234
第8章 无网不利 235
8.1简介 235
8.2网络设置 236
8.2.1预备知识 236
8.2.2实战演练 236
8.2.3补充内容 237
8.2.4参考 241
8.3 ping! 241
8.3.1实战演练 241
8.3.2补充内容 242
8.4跟踪IP路由 244
8.5列出网络中所有的活动主机 245
8.5.1预备知识 245
8.5.2实战演练 245
8.5.3工作原理 245
8.5.4补充内容 246
8.5.5参考 247
8.6使用SSH在远程主机上执行命令 247
8.6.1预备知识 247
8.6.2实战演练 248
8.6.3补充内容 249
8.7在远程主机上执行图形化命令 250
8.7.1实战演练 250
8.7.2参考 251
8.8通过网络传输文件 251
8.8.1预备知识 251
8.8.2实战演练 251
8.8.3补充内容 252
8.8.4参考 254
8.9连接无线网络 254
8.9.1预备知识 254
8.9.2实战演练 254
8.9.3工作原理 255
8.9.4参考 256
8.10实现SSH的无密码自动登录 256
8.10.1预备知识 256
8.10.2实战演练 256
8.11使用SSH实现端口转发 257
8.11.1实战演练 257
8.11.2补充内容 258
8.12在本地挂载点上挂载远程驱动器 259
8.12.1预备知识 259
8.12.2实战演练 259
8.12.3参考 259
8.13分析网络流量与端口 259
8.13.1预备知识 259
8.13.2实战演练 260
8.13.3工作原理 260
8.13.4补充内容 261
8.14测量网络带宽 261
8.15创建套接字 262
8.15.1预备知识 262
8.15.2实战演练 262
8.15.3补充内容 263
8.15.4工作原理 263
8.16搭建网桥 264
8.16.1预备知识 264
8.16.2实战演练 264
8.17 Internet连接共享 265
8.17.1预备知识 265
8.17.2实战演练 265
8.17.3工作原理 266
8.18使用iptables架设简易防火墙 266
8.18.1实战演练 267
8.18.2工作原理 267
8.18.3补充内容 268
8.19创建虚拟私有网络 268
8.19.1预备知识 268
8.19.2实战演练 269
第9章 明察秋毫 274
9.1简介 274
9.2监视磁盘使用情况 274
9.2.1预备知识 275
9.2.2实战演练 275
9.2.3补充内容 275
9.3计算命令执行时间 279
9.3.1实战演练 279
9.3.2工作原理 281
9.4收集登录用户、启动日志及启动故障的相关信息 281
9.4.1预备知识 282
9.4.2实战演练 282
9.5列出1小时内占用CPU最多的10个进程 284
9.5.1预备知识 284
9.5.2实战演练 284
9.5.3工作原理 285
9.5.4参考 286
9.6使用watch监视命令输出 286
9.6.1实战演练 286
9.6.2补充内容 286
9.7记录文件及目录访问情况 287
9.7.1预备知识 287
9.7.2实战演练 287
9.7.3工作原理 287
9.8使用syslog记录日志 288
9.8.1预备知识 288
9.8.2实战演练 289
9.8.3参考 289
9.9使用logrotate管理日志文件 290
9.9.1预备知识 290
9.9.2实战演练 290
9.9.3工作原理 290
9.10通过监视用户登录找出入侵者 291
9.10.1预备知识 291
9.10.2实战演练 291
9.10.3工作原理 293
9.11监视远程磁盘的健康情况 293
9.11.1预备知识 293
9.11.2实战演练 294
9.11.3工作原理 295
9.11.4参考 295
9.12确定系统中用户的活跃时段 295
9.12.1预备知识 296
9.12.2实战演练 296
9.12.3工作原理 297
9.13电源使用情况的测量与优化 297
9.13.1预备知识 298
9.13.2实战演练 298
9.14监视磁盘活动 298
9.14.1预备知识 298
9.14.2实战演练 299
9.15检查磁盘及文件系统错误 299
9.15.1预备知识 299
9.15.2实战演练 299
9.15.3工作原理 300
9.16检查磁盘健康情况 300
9.16.1预备知识 301
9.16.2实战演练 301
9.16.3工作原理 303
9.17获取磁盘统计数据 303
9.17.1预备知识 303
9.17.2实战演练 303
9.17.3工作原理 304
9.17.4补充内容 304
第10章 管理重任 305
10.1简介 305
10.2收集进程信息 305
10.2.1预备知识 305
10.2.2实战演练 306
10.2.3工作原理 307
10.2.4补充内容 307
10.2.5参考 312
10.3 which、whereis、whatis与file 312
10.4杀死进程以及发送和响应信号 313
10.4.1预备知识 313
10.4.2实战演练 313
10.4.3补充内容 314
10.5向用户终端发送消息 316
10.5.1预备知识 316
10.5.2实战演练 317
10.6 /proc文件系统 318
10.7收集系统信息 319
10.8使用cron进行调度 321
10.8.1预备知识 321
10.8.2实战演练 321
10.8.3工作原理 322
10.8.4补充内容 323
10.9数据库的形式及用法 324
10.9.1预备知识 324
10.9.2实战演练 325
10.9.3补充内容 325
10.10读写SQLite数据库 326
10.10.1预备知识 326
10.10.2实战演练 327
10.10.3工作原理 327
10.10.4补充内容 327
10.11读写MySQL数据库 328
10.11.1预备知识 329
10.11.2实战演练 329
10.11.3工作原理 332
10.12用户管理脚本 333
10.12.1实战演练 333
10.12.2工作原理 335
10.13图像文件的批量缩放及格式转换 336
10.13.1预备知识 336
10.13.2实战演练 336
10.13.3工作原理 338
10.13.4参考 339
10.14终端截图 339
10.14.1预备知识 339
10.14.2实战演练 340
10.15 集中管理多个终端 340
10.15.1预备知识 340
10.15.2实战演练 341
第11章 觅迹寻踪 342
11.1简介 342
11.2使用tcpdump跟踪分组 342
11.2.1预备知识 342
11.2.2实战演练 343
11.2.3工作原理 345
11.3使用ngrep查找分组 346
11.3.1预备知识 346
11.3.2实战演练 346
11.3.3工作原理 347
11.3.4补充内容 347
11.4使用ip跟踪网络路由 347
11.4.1预备知识 347
11.4.2实战演练 348
11.4.3工作原理 349
11.5使用strace跟踪系统调用 349
11.5.1预备知识 350
11.5.2实战演练 350
11.5.3工作原理 351
11.6使用ltrace跟踪动态库函数 352
11.6.1预备知识 352
11.6.2实战演练 352
11.6.3工作原理 353
11.6.4 补充内容 353
第12章 系统调优 355
12.1简介 355
12.2识别服务 356
12.2.1预备知识 356
12.2.2实战演练 357
12.2.3补充内容 359
12.3使用ss收集套接字数据 360
12.3.1预备知识 360
12.3.2实战演练 360
12.3.3工作原理 361
12.4使用dstat收集系统I/O使用情况 362
12.4.1预备知识 362
12.4.2实战演练 362
12.4.3工作原理 363
12.4.4补充内容 363
12.5使用pidstat找出资源占用大户 364
12.5.1预备知识 364
12.5.2实战演练 364
12.5.3工作原理 364
12.6使用sysctl调优Linux内核 365
12.6.1预备知识 365
12.6.2实战演练 365
12.6.3工作原理 366
12.6.4补充内容 366
12.7使用配置文件调优Linux系统 366
12.7.1预备知识 367
12.7.2实战演练 367
12.7.3工作原理 367
12.8使用nice命令更改调度器优先级 367
12.8.1实战演练 367
12.8.2工作原理 368
12.8.3补充内容 368
第13章 在云端 369
13.1简介 369
13.2使用Linux容器 370
13.2.1预备知识 370
13.2.2实战演练 371
13.2.3工作原理 377
13.3使用Docker 377
13.3.1预备知识 377
13.3.2实战演练 378
13.3.3工作原理 381
13.4在Linux中使用虚拟机 381
13.4.1预备知识 381
13.4.2实战演练 382
13.5云端的Linux 382
13.5.1预备知识 382
13.5.2实战演练 384
13.5.3补充内容 384