Linux命令行和sheell脚本编程宝典
分類: 图书,计算机与互联网,操作系统,Linux,Linux 编程开发,
品牌: Richard Blum
基本信息·出版社:人民邮电出版社
·页码:494 页
·出版日期:2009年
·ISBN:7115197776/9787115197771
·条形码:9787115197771
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
产品信息有问题吗?请帮我们更新产品信息。
内容简介在Linux系统中,命令和shell脚本是非常重要的内容,它们的功能非常强大,使用它们可以完成各种操作。《Linux命令行和sheell脚本编程宝典》分为5部分。第1部分介绍Linux shell的基础知识;第2部分介绍shell脚本;第3部分介绍shell脚本编程的高级内容;第4部分介绍如何使用Linux环境中的各种shell编写shell脚本;第5部分演示如何在实际情况中使用shell脚本。《Linux命令行和sheell脚本编程宝典》非常全面地介绍了Linux命令行和shell命令,并且提供了很多实践教程和实例应用程序信息,为学习的内容提供了相关环境,是Linux的爱好者以及Linux系统管理员的首选。
作者简介Richard Blum,作为一名系统和网络管理员,已经在IT界经历了19年的风风雨雨。在此期间,他管理过Unix、Linux、Novell和Microsoft服务器,曾帮助设计和维护使用Cisco交换机和路由器的大型网络,共涉及3 500多名用户。他使用Linux服务器和shell脚本执行自动网络监控,并可以在所有Unix shell环境中编写shell脚本。
Rich拥有普渡大学电子工程学学士学位,并拥有管理信息系统方面的理学硕士学位。他编写过好几本Linux图书,包括《Sendmail for Linux》、《Running qmail》、《Postfix》、《Open Source E.Mail Security》、《Network Performance Open Source Toolkit》和Professional Assembly Language Programming》。他还是《Professional Linux Programming》和《Linux For Dummies》第8版的合著者。
编辑推荐《Linux命令行和sheell脚本编程宝典》的基础部分需要学习的内容很多,本宝典不仅简明扼要地介绍了开源Linux软件的结构,并且展示了如何摒弃笨重的Linux图形用户界面,而使用一种更加快速而有效的方式——命令行和自动化脚本。您将学习如何在不使用GUI的情况下管理文件系统的文件;启动和终止程序;使用数据库,甚至执行Web编程,《Linux命令行和sheell脚本编程宝典》将教会您一切。
目录
第1部分 Linux命令行
第1章 Linux shell入门 3
1.1 什么是Linux 3
1.1.1 深入研究Linux内核 4
1.1.2 GNU实用程序 9
1.1.3 Linux桌面环境 10
1.2 Linux发行版 13
1.2.1 核心Linux发行版 13
1.2.2 特定Linux发行版 14
1.2.3 Linux LiveCD 14
1.3 小结 15
第2章 了解shell 17
2.1 终端模拟 17
2.1.1 图形功能 18
2.1.2 键盘 20
2.2 terminfo数据库 21
2.3 Linux控制台 23
2.4 xterm终端 24
2.4.1 命令行参数 24
2.4.2 xterm主菜单 25
2.4.3 VT选项菜单 26
2.4.4 VT字体菜单 28
2.5 Konsole终端 29
2.5.1 命令行参数 29
2.5.2 会话 30
2.5.3 菜单栏 31
2.6 GNOME终端 34
2.6.1 命令行参数 34
2.6.2 选项卡 35
2.6.3 菜单栏 35
2.7 小结 37
第3章 基本的bash shell命令 38
3.1 启动shell 38
3.2 shell提示符 39
3.3 bash手册 40
3.4 文件系统导航 41
3.4.1 Linux文件系统 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章 更多bash shell命令 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.1 Linux安全性 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.1 vim编辑器 111
7.1.1 vim基本用法 111
7.1.2 编辑数据 113
7.1.3 复制和粘贴 113
7.1.4 搜索和替换 114
7.2 emacs编辑器 114
7.2.1 在控制台中使用emacs 114
7.2.2 在X Windows中使用emacs 118
7.3 KDE系列编辑器 119
7.3.1 KWrite编辑器 119
7.3.2 Kate编辑器 121
7.4 GNOME编辑器 124
7.4.1 启动gedit 124
7.4.2 基本gedit特性 125
7.4.3 设置首选项 125
7.5 小结 128
第2部分 shell脚本的基础知识
第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.1 expr命令 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.2 if-then-else语句 150
9.3 嵌套if语句 150
9.4 test命令 151
9.4.1 数值比较 151
9.4.2 字符串比较 152
9.4.3 文件比较 155
9.5 复合条件检查 161
9.6 if-then的高级特征 161
9.6.1 使用双圆括号 162
9.6.2 使用双方括号 162
9.7 case命令 163
9.8 小结 164
第10章 更多结构化命令 165
10.1 for命令 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.2 C式的for命令 171
10.2.1 C语言中的for命令 171
10.2.2 使用多个变量 172
10.3 while命令 173
10.3.1 while的基本格式 173
10.3.2 使用多条测试命令 174
10.4 until命令 175
10.5 嵌套循环 176
10.6 文件数据的循环 178
10.7 控制循环 178
10.7.1 break命令 179
10.7.2 continue命令 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.1 Linux信号回顾 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.1 nice命令 226
13.5.2 renice命令 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脚本编程
第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.1 ANSI转义码 254
15.2.2 显示ANSI转义码 255
15.2.3 在脚本中使用颜色 256
15.3 制作窗口 257
15.3.1 dialog软件包 257
15.3.2 dialog选项 261
15.3.3 在脚本中使用dialog命令 263
15.4 获取图形 265
15.4.1 KDE环境 265
15.4.2 GNOME环境 267
15.5 小结 270
第16章 sed和gawk介绍 271
16.1 文本处理 271
16.1.1 sed编辑器 271
16.1.2 gawk程序 273
16.2 sed编辑器基础知识 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.1 next命令 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.1 if语句 333
19.4.2 while语句 334
19.4.3 do-while语句 335
19.4.4 for语句 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部分 可选的Linux shell
第20章 ash shell 345
20.1 什么是ash shell 345
20.2 原始ash shell 346
20.2.1 原始ash命令行参数 346
20.2.2 原始ash内置命令 347
20.2.3 ash shell文件 349
20.3 dash shell 349
20.3.1 dash命令行参数 349
20.3.2 dash环境变量 350
20.3.3 dash内置命令 352
20.4 在dash中编写脚本 355
20.4.1 创建ash和dash脚本 355
20.4.2 失效的特性 355
20.5 小结 359
第21章 tcsh shell 360
21.1 什么是tcsh shell 360
21.2 tcash shell的组成部分 360
21.2.1 tcsh命令行参数 361
21.2.2 tcsh文件 361
21.2.3 tcsh登录文件 362
21.2.4 shell启动文件 362
21.2.5 退出文件 363
21.2.6 tcsh环境变量 364
21.2.7 shell变量 364
21.2.8 环境变量 367
21.2.9 在tcsh中设置变量 369
21.2.10 使用set命令 369
21.2.11 使用setenv命令 369
21.2.12 tcsh内置命令 370
21.3 在tcsh中编写脚本 372
21.3.1 处理变量 372
21.3.2 数组变量 372
21.3.3 处理数学运算 372
21.3.4 结构化命令 373
21.3.5 if语句 373
21.3.6 foreach语句 375
21.3.7 while语句 375
21.3.8 switch命令 375
21.4 小结 376
第22章 Korn shell 378
22.1 Korn shell的历史 378
22.2 ksh93 shell的组成部分 378
22.2.1 命令行参数 379
22.2.2 默认文件 380
22.2.3 环境变量 380
22.2.4 内置命令 385
22.3 在ksh93 shell中编写脚本 387
22.3.1 数学运算 387
22.3.2 结构化命令 389
22.3.3 命令重定向 391
22.3.4 规程函数 391
22.4 小结 392
第23章 zsh shell 393
23.1 zsh shell的历史 393
23.2 zsh shell的组成部分 393
23.2.1 shell选项 394
23.2.2 zsh shell文件 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部分 高级主题
第24章 使用数据库 411
24.1 MySQL数据库 411
24.1.1 安装MySQL 411
24.1.2 完成MySQL配置 413
24.1.3 MySQL客户端接口 414
24.1.4 创建MySQL数据库对象 417
24.2 PostgreSQL数据库 419
24.2.1 安装PostgreSQL 419
24.2.2 PostgreSQL命令接口 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.1 Lynx程序 433
25.1.1 安装Lynx 434
25.1.2 Lynx命令行 434
25.1.3 Lynx配置文件 438
25.1.4 Lynx环境变量 439
25.1.5 从Lynx捕获数据 439
25.2 cURL程序 441
25.2.1 安装cURL 441
25.2.2 cURL命令行 442
25.2.3 研究curl 444
25.3 使用zsh连接网络 445
25.3.1 TCP模块 445
25.3.2 客户端/服务器模型 446
25.3.3 使用zsh进行客户端/服务器编程 446
25.4 小结 449
第26章 使用电子邮件 450
26.1 Linux电子邮件基础知识 450
26.1.1 Linux中的电子邮件 450
26.1.2 邮件传输代理 451
26.1.3 邮件分发代理 452
26.1.4 邮件用户代理 452
26.2 设置服务器 454
26.2.1 sendmail 455
26.2.2 Postfix 456
26.3 使用Mailx发送消息 459
26.4 Mutt程序 461
26.4.1 安装Mutt 461
26.4.2 Mutt命令行 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.2 bash命令 480
A.3 环境变量 481
附录B sed和gawk快速指南 484
B.1 sed编辑器 484
B.1.1 启动sed编辑器 484
B.1.2 sed命令 484
B.2 gawk程序 487
B.2.1 gawk命令格式 487
B.2.2 使用gawk 487
B.2.3 gawk变量 488
B.2.4 gawk程序功能 489
附录C shell版本比较 491
C.1 变量 491
C.1.1 环境变量 491
C.1.2 用户定义的变量 491
C.1.3 数组变量 492
C.2 结构化命令 492
C.2.1 if-then、while和until语句 492
C.2.2 for语句 493
C.3 数学计算 493
……[看更多目录]
序言欢迎阅读本书。像所有的宝典系列丛书一样,本书将提供实践教程和实例应用程序信息,还将提供参考资料和背景信息,为学习的内容提供相关环境。本书非常全面地介绍了Linux命令行和shell命令。学习完本书之后,您将能够编写自己的shell脚本,自动执行Linux系统上的任何任务。
如果您是Linux环境的系统管理员,那么了解如何编写shell脚本将使您受益颇多。本书并没有详细介绍安装Linux系统的过程,而是介绍运行Linux之后,如何自动化执行一些例行的管理任务。这就是shell脚本的用途,也正是本书的目的所在。本书将说明如何使用shell脚本自动化地管理任务,从监控系统数据和数据文件到为上级生成报告。
如果您是家用Linux环境的爱好者,您也能从本书中受益。如今,很容易在预构建widget的图形世界中迷失。大部分桌面Linux发行版都尽量向典型用户隐藏系统内核。但是,很多时候需要了解内部究竟发生了什么。本书将展示如何访问Linux命令行提示符,介绍进入提示符之后应该做些什么。通过命令行执行一些简单的任务(如文件管理)往往比用图形界面更快。在命令行中可以使用很多命令,本书将展示如何使用它们。
文摘插图:
第16章 介绍了gawk程序并演示了它的基本使用方法,即从原数据文件创建格式化的报告。本章将深入研究如何自定义gawk以生成报告。gawk程序是一种成熟的编程语言,它提供了编写高级程序进行数据处理所需要的功能。在本章中,我们将了解如何使用gawk编程语言编写程序,以处理可能遇到的任何数据格式化任务。
任何编程语言的一项重要功能就是使用变量保存并重新调用值。gawk编程语言支持两种不同类型的变量:
内置变量;
用户定义的变量。
在gawk中有许多内置变量可用。内置变量包含在处理数据文件中的数据字段和记录中使用的信息。还可以在gawk程序中创建自己的变量。下面几节将介绍如何在gawk程序中使用变量。
19.1.1内置变量
gawk程序使用内置变量引用程序数据内的特定功能。本节将描述在gawk程序中可以使用的内置变量以及这些内置变量的用法。
1.字段和记录分隔符变量
第16章 描述了gawk中的一种内置变量,数据字段变量。数据字段变量允许使用美元符号和数据字段在记录中的数字位置引用数据记录中的单个数据字段。因此,要引用记录中的第一个数据字段,则可以使用$1变量。要引用第二个数据字段,则使用$2变量,依次类推。
数据字段由字段分隔符号描述。默认情况下,字段分隔符号是一个空白符号,如空格或制表符。