失效链接处理 |
Linux命令行与shell脚本编程大全(第4版) PDF 下载
下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
https://product.dangdang.com/11651059196.html
相关截图: 资料简介: 这是*本关于Linux命令行与shell脚本编程的*面性教程,主要*括四大*分 :Linux命令行、shell脚本编程基础、*级shell脚本编程,以及*建和管理实用的脚本。本书这*版针对Linux系统的新*性进行了*面更新,**涵盖了详尽的动手教程和现实*中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你能轻松写出自己的shell脚本。 本书适合Linux系统管理员及相关开发人员阅读 资料目录: 第一部分 Linux 命令行
第 1 章 初识 Linux shell ................................ 2
1.1 Linux 初探 ................................................ 2
1.1.1 深入探究 Linux 内核 ..................... 3
1.1.2 GNU 实用工具 .............................. 7
1.1.3 Linux 桌面环境 ............................. 9
1.2 Linux 发行版............................................ 13
1.2.1 核心 Linux 发行版 ....................... 14
1.2.2 特定用途的 Linux 发行版 ............ 14
1.3 小结 ......................................................... 15
第 2 章 走进 shell .......................................... 16
2.1 进入命令行 .............................................. 16
2.1.1
控制台终端 .................................. 16
2.1.2
图形化终端 .................................. 17
2.2
通过 Linux 控制台终端访问 CLI ............ 18
2.3
通过图形化终端仿真器访问 CLI ............ 20
2.4 使用 GNOME Terminal 终端仿真器 ....... 21
2.4.1 访问 GNOME Terminal................ 21
2.4.2 菜单栏 .......................................... 25
2.5 使用 Konsole 终端仿真器 ........................ 27
2.5.1 访问 Konsole 终端仿真器 ............ 27
2.5.2 菜单栏 .......................................... 29
2.6 使用 xterm 终端仿真器 ........................... 32
2.6.1 访问 xterm .................................... 33
2.6.2 命令行选项 .................................. 33
2.7 小结 ......................................................... 34
第 3 章 bash shell 基础命令 ....................... 36
3.1 启动 shell ................................................. 36
3.2 使用 shell 提示符 ..................................... 37
3.3 与 bash 手册交互 ..................................... 37
3.4 浏览文件系统 .......................................... 41
3.4.1 Linux 文件系统 ............................ 41
3.4.2 遍历目录 ...................................... 44
3.5 列出文件和目录 ...................................... 46
3.5.1 显示基本列表 .............................. 46
3.5.2 显示长列表 .................................. 48
3.5.3 过滤输出列表 .............................. 49
3.6 处理文件 .................................................. 51
3.6.1
创建文件 ...................................... 51
3.6.2
复制文件 ...................................... 51
3.6.3
使用命令行补全 ........................... 53
3.6.4
链接文件 ...................................... 54
3.6.5 文件重命名 .................................. 55
3.6.6 删除文件 ...................................... 57
3.7 管理目录 .................................................. 57
3.7.1 创建目录 ...................................... 57
3.7.2 删除目录 ...................................... 58
3.8 查看文件内容 .......................................... 60
3.8.1 查看文件类型 .............................. 60
3.8.2 查看整个文件 .............................. 61
3.8.3 查看部分文件 .............................. 63
3.9 小结 ......................................................... 64
第 4 章 更多的 bash shell 命令 .................. 66
4.1 监测程序 ................................................. 66
4.1.1 探查进程 ...................................... 66
4.1.2 实时监测进程 .............................. 72
4.1.3 结束进程 ...................................... 74
4.2 监测磁盘空间 .......................................... 75
4.2.1 挂载存储设备 .............................. 75
4.2.2 使用 df 命令 ................................ 78
4.2.3
使用 du 命令 ................................ 79
4.3
处理数据文件 .......................................... 80
4.3.1
数据排序 ...................................... 80
4.3.2
数据搜索 ...................................... 83
4.3.3
数据压缩 ...................................... 85
4.3.4
数据归档 ...................................... 86
4.4
小结 ......................................................... 87
第 5 章 理解 shell .......................................... 88
5.1 shell 的类型 ............................................. 88
5.2 shell 的父子关系 ..................................... 91
5.2.1 查看进程列表 .............................. 95
5.2.2 别出心裁的子 shell 用法.............. 96
5.3 理解外部命令和内建命令 ....................... 99
5.3.1 外部命令 .................................... 100
5.3.2 内建命令 .................................... 101
5.4 小结 ....................................................... 106
第 6 章 Linux 环境变量 .............................. 107
6.1 什么是环境变量 .................................... 107
6.1.1 全局环境变量 ............................ 108
6.1.2 局部环境变量 ............................ 109
6.2 设置用户自定义变量 ............................ 110
6.2.1 设置局部用户自定义变量 ......... 110
6.2.2 设置全局环境变量 ..................... 111
6.3 删除环境变量 ........................................ 113
6.4 默认的 shell 环境变量 ........................... 113
6.5 设置 PATH 环境变量 ............................. 117
6.6 定位系统环境变量 ................................ 118
6.6.1 登录 shell ................................... 119
6.6.2 交互式 shell 进程 ....................... 123
6.6.3 非交互式 shell ........................... 124
6.6.4 环境变量持久化 ........................ 124
6.7 数组变量 ............................................... 125
6.8 小结 ....................................................... 126
第 7 章 理解 Linux 文件权限 ..................... 127
7.1
Linux 的安全性 ..................................... 127
7.1.1
/etc/passwd 文件 ........................ 127
7.1.2
/etc/shadow 文件 ........................ 129
7.1.3
添加新用户 ................................ 129
7.1.4
删除用户 .................................... 132
7.1.5
修改用户 .................................... 132
7.2
使用 Linux 组 ........................................ 135
7.2.1 /etc/group 文件 ........................... 135
7.2.2 创建新组 .................................... 136
7.2.3 修改组 ........................................ 137
7.3 理解文件权限 ........................................ 137
7.3.1 使用文件权限符号 .................... 137
7.3.2 默认文件权限 ............................ 139
7.4 更改安全设置 ........................................ 140
7.4.1 修改权限 .................................... 140
7.4.2 改变所属关系 ............................ 141
7.5 共享文件 ............................................... 142
7.6 访问控制列表 ........................................ 144
7.7 小结 ....................................................... 145
第 8 章 管理文件系统 ................................. 147
8.1 探索 Linux 文件系统 ............................. 147
8.1.1 Linux 文件系统的演进 .............. 147
8.1.2 日志文件系统 ............................ 148
8.1.3 卷管理文件系统 ........................ 150
8.2 使用文件系统 ........................................ 151
8.2.1 创建分区 .................................... 151
8.2.2 创建文件系统 ............................. 155
8.2.3 文件系统的检查与修复 ............. 157
8.3 逻辑卷管理 ............................................ 158
8.3.1 LVM 布局 ................................... 159
8.3.2 Linux 中的 LVM ........................ 159
8.3.3 使用 Linux LVM ........................ 162
8.4 小结 ....................................................... 163
第 9 章 安装软件 .......................................... 164
9.1
软件包管理基础 .................................... 164
9.2
基于 Debian 的系统 ............................... 165
9.2.1
使用 apt 管理软件包 ................ 165
9.2.2
使用 apt 安装软件包 ................ 167
9.2.3 使用 apt 升级软件 .................... 169
9.2.4 使用 apt 卸载软件包 ................ 170
9.2.5 apt 仓库 .................................... 171
9.3 基于 Red Hat 的系统 ............................. 173
9.3.1 列出已安装的软件包 ................. 173
9.3.2 使用 dnf 安装软件 .................... 174
9.3.3 使用 dnf 升级软件 .................... 175
9.3.4 使用 dnf 卸载软件 .................... 176
9.3.5 处理损坏的依赖关系 ................. 176
9.3.6
RPM 仓库 ................................... 176
9.4
使用容器管理软件 ................................ 177
9.4.1
使用 snap 容器 ........................... 177
9.4.2 使用 flatpak 容器 ........................ 179
9.5
从源代码安装 ........................................ 180
9.6 小结 ....................................................... 183
第 10 章 文本编辑器 ................................... 185
10.1 vim 编辑器 ........................................... 185
10.1.1 检查 vim 软件包 .................... 185
10.1.2 vim 基础 ................................. 187
10.1.3 编辑数据 ................................ 189
10.1.4 复制和粘贴 ............................ 189
10.1.5 查找和替换 ............................ 190
10.2 nano 编辑器 ......................................... 191
10.3 Emacs 编辑器 ...................................... 193
10.3.1 检查 Emacs 软件包 ................ 193
10.3.2 在控制台中使用 Emacs ......... 194
10.3.3 在 GUI 中使用 Emacs ............ 199
10.4 KDE 系编辑器 ..................................... 200
10.4.1 KWrite 编辑器 ....................... 200
10.4.2 Kate 编辑器............................ 204
10.5 GNOME 编辑器 ................................... 208
10.5.1
启动 gedit ............................... 208
10.5.2
gedit 的基本功能 ................... 209
10.5.3
管理插件 ................................ 211
10.6 小结 ..................................................... 213
第二部分 shell 脚本编程基础
第 11 章 构建基础脚本 ............................... 216
11.1 使用多个命令 ...................................... 216
11.2 创建 shell 脚本文件 ............................. 217
11.3 显示消息 .............................................. 218
11.4 使用变量 .............................................. 220
11.4.1 环境变量 ................................ 220
11.4.2 用户自定义变量 .................... 221
11.4.3
命令替换 ................................ 222
11.5
重定向输入和输出 .............................. 224
11.5.1
输出重定向 ............................ 224
11.5.2
输入重定向 ............................ 225
11.6
管道 ..................................................... 226
11.7
执行数学运算 ...................................... 228
11.7.1 expr 命令 .............................. 228
11.7.2 使用方括号 ............................ 230
11.7.3 浮点数解决方案 .................... 231
11.8 退出脚本 .............................................. 234
11.8.1 查看退出状态码 .................... 234
11.8.2 exit 命令 .............................. 235
11.9 实战演练 .............................................. 237
11.10 小结 ................................................... 238
12 章 结构化命令 ................................... 239
12.1 使用 if-then 语句 ............................. 239
12.2 if-then-else 语句 ........................... 242
12.3 嵌套 if 语句 ....................................... 243
12.4 test 命令 ............................................ 246
12.4.1 数值比较 ................................ 248
12.4.2 字符串比较 ............................ 249
12.4.3
文件比较 ................................ 253
12.5
复合条件测试 ...................................... 262
12.6
if-then 的高级特性 .......................... 263
12.6.1
使用单括号 ............................ 264
12.6.2 使用双括号 ............................ 265
12.6.3 使用双方括号 ........................ 266
12.7 case 命令 ............................................ 267
12.8 实战演练 .............................................. 268
12.9 小结 ..................................................... 273
第 13 章 更多的结构化命令 ...................... 274
13.1 for 命令 .............................................. 274
13.1.1 读取列表中的值 .................... 275
13.1.2 读取列表中的复杂值 ............. 276
13.1.3 从变量中读取值列表 ............. 277
13.1.4 从命令中读取值列表 ............. 278
13.1.5 更改字段分隔符 .................... 279
13.1.6 使用通配符读取目录 ............. 280
13.2 C 语言风格的 for 命令 ...................... 282
13.2.1
C 语言中的 for 命令 ............ 282
13.2.2
使用多个变量 ........................ 283
13.3 while 命令 .......................................... 284
13.3.1 while 的基本格式 ................ 284
13.3.2 使用多个测试命令 ................ 285
13.4 until 命令 .......................................... 286
13.5 嵌套循环 .............................................. 287
13.6 循环处理文件数据 .............................. 290
13.7 循环控制 .............................................. 291
13.7.1 break 命令 ............................ 291
13.7.2 continue 命令 ..................... 294
13.8 处理循环的输出 .................................. 296
13.9 实战演练 ............................................. 297
13.9.1 查找可执行文件 .................... 297
13.9.2 创建多个用户账户 ................ 299
13.10 小结 ................................................... 300
第 14 章 处理用户输入 ............................... 301
14.1 传递参数 ............................................. 301
14.1.1
读取参数 ................................ 301
14.1.2
读取脚本名 ............................ 303
14.1.3
参数测试 ................................ 305
14.2 特殊参数变量 ...................................... 305
14.2.1 参数统计 ................................ 305
14.2.2 获取所有的数据 .................... 307
14.3 移动参数 ............................................. 309
14.4 处理选项 ............................................. 310
14.4.1 查找选项 ................................ 311
14.4.2 使用 getopt 命令 ................. 314
14.4.3 使用 getopts 命令 ............... 317
14.5 选项标准化.......................................... 319
14.6 获取用户输入 ...................................... 320
14.6.1 基本的读取 ............................ 320
14.6.2 超时 ....................................... 322
14.6.3
无显示读取 ............................ 323
14.6.4
从文件中读取 ........................ 323
14.7 实战演练 ............................................. 324
14.8 小结 ..................................................... 328
第 15 章 呈现数据 ....................................... 329
15.1 理解输入和输出 .................................. 329
15.1.1 标准文件描述符 .................... 329
15.1.2 重定向错误 ............................ 332
15.2 在脚本中重定向输出 .......................... 333
15.2.1 临时重定向 ............................ 333
15.2.2 永久重定向 ............................ 334
15.3 在脚本中重定向输入 .......................... 335
15.4 创建自己的重定向 ............................... 336
15.4.1 创建输出文件描述符 ............. 336
15.4.2 重定向文件描述符 ................. 337
15.4.3 创建输入文件描述符 ............. 337
15.4.4 创建读/写文件描述符 ............ 338
15.4.5 关闭文件描述符 ..................... 339
15.5
列出打开的文件描述符 ....................... 340
15.6
抑制命令输出 ...................................... 341
15.7 使用临时文件 ...................................... 342
15.7.1 创建本地临时文件 ................. 342
15.7.2
在/tmp 目录中创建临时
文件 ........................................ 344
15.7.3 创建临时目录 ........................ 344
15.8
记录消息 .............................................. 345
15.9
实战演练 .............................................. 346
15.10 小结.................................................... 348
第 16 章 脚本控制 ........................................ 349
16.1 处理信号 .............................................. 349
16.1.1 重温 Linux 信号 ..................... 349
16.1.2 产生信号 ................................ 350
16.1.3 捕获信号 ................................ 352
16.1.4 捕获脚本退出 ........................ 353
16.1.5 修改或移除信号捕获 ............. 354
16.2 以后台模式运行脚本 ........................... 356
16.2.1 后台运行脚本 ........................ 356
16.2.2 运行多个后台作业 ................. 358
16.3 在非控制台下运行脚本 ....................... 359
16.4 作业控制 .............................................. 360
16.4.1
查看作业 ................................ 360
16.4.2
重启已停止的作业 ................. 362
16.5 调整谦让度 .......................................... 363
16.5.1 nice 命令 .............................. 363
16.5.2 renice 命令 .......................... 364
16.6 定时运行作业 ...................................... 364
16.6.1 使用 at 命令调度作业 ........... 364
16.6.2 调度需要定期运行的脚本 ..... 368
16.7 使用新 shell 启动脚本 ......................... 371
16.8 实战演练 .............................................. 372
16.9 小结 ..................................................... 378
第三部分 高级 shell 脚本编程
第 17 章 创建函数 ....................................... 380
17.1 脚本函数基础 ...................................... 380
17.1.1
创建函数 ................................ 381
17.1.2
使用函数 ................................ 381
17.2 函数返回值 .......................................... 383
17.2.1 默认的退出状态码 ................. 383
17.2.2
使用 return 命令 ................. 384
17.2.3
使用函数输出 ........................ 385
17.3 在函数中使用变量 .............................. 386
17.3.1
向函数传递参数 .................... 386
17.3.2
在函数中处理变量 ................. 388
17.4 数组变量和函数 .................................. 390
17.4.1 向函数传递数组 .................... 390
17.4.2 从函数返回数组 .................... 392
17.5 函数递归 .............................................. 392
17.6 创建库 ................................................. 393
17.7 在命令行中使用函数........................... 395
17.7.1 在命令行中创建函数 ............. 395
17.7.2 在.bashrc 文件中定义函数 ..... 396
17.8 实战演练 .............................................. 398
17.8.1 下载及安装 ............................ 398
17.8.2 构建库 .................................... 398
17.8.3 shtool 库函数 ......................... 399
17.8.4 使用库 .................................... 400
17.9 小结 ..................................................... 401
第 18 章 图形化桌面环境中的脚本
编程 ................................................ 402
18.1 创建文本菜单 ...................................... 402
18.1.1 创建菜单布局 ........................ 403
18.1.2 创建菜单函数 ........................ 404
18.1.3 添加菜单逻辑 ........................ 404
18.1.4 整合 shell 脚本菜单 ............... 405
18.1.5 使用 select 命令 ................. 406
18.2 创建文本窗口部件 .............................. 407
18.2.1 dialog 软件包 ......................... 408
18.2.2 dialog 选项 .......................... 413
18.2.3 在脚本中使用 dialog
命令 ........................................ 415
18.3 图形化窗口部件 .................................. 417
18.3.1 KDE 环境 ............................... 417
18.3.2 GNOME 环境 ......................... 420
18.4 实战演练 .............................................. 424
18.5 小结 ..................................................... 427
第 19 章 初识 sed 和 gawk ........................ 428
19.1 文本处理 .............................................. 428
19.1.1 sed 编辑器 .............................. 428
19.1.2 gawk 编辑器 .......................... 431
19.2 sed 编辑器基础命令 ............................ 437
19.2.1 更多的替换选项 .................... 437
19.2.2 使用地址 ................................ 438
19.2.3 删除行 .................................... 441
19.2.4 插入和附加文本 .................... 443
19.2.5 修改行 .................................... 445
19.2.6 转换命令 ................................ 446
19.2.7 再探打印 ................................ 447
19.2.8 使用 sed 处理文件 ................. 449
19.3
实战演练 .............................................. 451
19.4
小结 ..................................................... 456
第 20 章 正则表达式 ................................... 457
20.1 正则表达式基础 .................................. 457
20.1.1 定义 ....................................... 457
20.1.2 正则表达式的类型 ................ 458
20.2 定义 BRE 模式 .................................... 459
20.2.1 普通文本 ................................ 459
20.2.2 特殊字符 ................................ 460
20.2.3 锚点字符 ................................ 461
20.2.4 点号字符 ................................ 463
20.2.5 字符组 ................................... 464
20.2.6 排除型字符组 ........................ 466
20.2.7 区间 ....................................... 466
20.2.8 特殊的字符组 ........................ 467
20.2.9 星号 ....................................... 468
20.3 扩展正则表达式 .................................. 469
20.3.1 问号 ....................................... 469
20.3.2 加号 ....................................... 470
20.3.3 花括号 ................................... 470
20.3.4 竖线符号 ................................ 472
20.3.5 表达式分组 ............................ 472
20.4 实战演练 ............................................. 473
20.4.1 目录文件计数 ........................ 473
20.4.2 验证电话号码 ........................ 474
20.4.3 解析 email 地址 ..................... 476
20.5 小结 ..................................................... 477
第 21 章 sed 进阶 ........................................ 478
21.1 多行命令 ............................................. 478
21.1.1 next 命令 .............................. 479
21.1.2 多行删除命令 ........................ 482
21.1.3 多行打印命令 ........................ 482
21.2 保留空间 ............................................. 483
21.3 排除命令 ............................................. 485
21.4 改变执行流程 ...................................... 487
21.4.1
分支 ....................................... 487
21.4.2
测试 ....................................... 489
21.5 模式替换 ............................................. 490
21.5.1 &符号 ..................................... 491
21.5.2 替换单独的单词 .................... 491
21.6 在脚本中使用 sed ................................ 492
21.6.1 使用包装器 ............................ 492
21.6.2 重定向 sed 的输出 ................. 493
21.7 创建 sed 实用工具 ............................... 494
21.7.1 加倍行间距 ............................ 494
21.7.2 对可能含有空行的文件
加倍行间距 ............................ 495
21.7.3 给文件中的行编号 ................. 495
21.7.4
打印末尾行 ............................ 496
21.7.5
删除行 .................................... 498
21.7.6
删除 HTML 标签 ................... 500
21.8 实战演练 .............................................. 502
21.9 小结 ..................................................... 506
第 22 章 gawk 进阶 ..................................... 508
22.1 使用变量 .............................................. 508
22.1.1 内建变量 ................................ 508
22.1.2 自定义变量 ............................ 514
22.2 处理数组 .............................................. 515
22.2.1 定义数组变量 ........................ 515
22.2.2 遍历数组变量 ........................ 516
22.2.3 删除数组变量 ........................ 517
22.3 使用模式 .............................................. 517
22.3.1 正则表达式 ............................ 517
22.3.2 匹配操作符 ............................ 518
22.3.3 数学表达式 ............................ 519
22.4 结构化命令 .......................................... 519
22.4.1 if 语句 .................................. 519
22.4.2 while 语句 ............................ 521
22.4.3 do-while 语句 ...................... 522
22.4.4 for 语句 ................................ 523
22.5 格式化打印 .......................................... 523
22.6 内建函数 .............................................. 526
22.6.1 数学函数 ................................ 526
22.6.2 字符串函数 ............................ 527
22.6.3 时间函数 ................................ 529
22.7 自定义函数 .......................................... 529
22.7.1 定义函数 ................................ 529
22.7.2 使用自定义函数 ..................... 530
22.7.3 创建函数库 ............................ 530
22.8 实战演练 .............................................. 531
22.9 小结 ..................................................... 532
第 23 章 使用其他 shell ............................. 534
23.1 什么是 dash shell ................................. 534
23.2 dash shell 的特性 ................................. 535
23.2.1
dash 命令行选项 .................... 535
23.2.2
dash 环境变量 ........................ 536
23.2.3
dash 内建命令 ........................ 538
23.3 dash 脚本编程 ...................................... 539
23.3.1 创建 dash 脚本 ....................... 539
23.3.2 不能使用的特性 .................... 539
23.4 zsh shell ............................................... 541
23.5 zsh shell 的组成 ................................... 542
23.5.1 shell 选项 ............................... 542
23.5.2 内建命令 ................................ 543
23.6 zsh 脚本编程 ........................................ 546
23.6.1 数学运算 ................................ 547
23.6.2 结构化命令 ............................ 548
23.6.3 函数 ....................................... 549
23.7 实战演练 .............................................. 549
23.8 小结 ..................................................... 550
第四部分 创建和管理实用的脚本
第 24 章 编写简单的脚本实用工具 .......... 552
24.1 备份 ..................................................... 552
24.1.1 日常备份 ................................ 552
24.1.2 创建按小时归档的脚本 ......... 559
24.2 删除账户 .............................................. 562
24.2.1 功能需求 ................................ 562
24.2.2 创建脚本 ................................ 570
24.2.3 运行脚本 ................................ 575
24.3 系统监控 .............................................. 577
24.3.1 获得默认的 shell 审计功能 .... 577
24.3.2 权限审计功能 ........................ 581
24.3.3 创建脚本 ................................ 582
24.3.4 运行脚本 ................................ 585
24.4 小结 ..................................................... 586
第 25 章 井井有条 ....................................... 588
25.1 理解版本控制 ...................................... 588
25.1.1 工作目录 ................................ 589
25.1.2 暂存区 .................................... 590
25.1.3 本地仓库 ................................ 590
25.1.4 远程仓库 ................................ 590
25.1.5 分支 ....................................... 590
25.1.6 克隆 ....................................... 591
25.1.7 使用 Git 作为 VCS ................ 591
25.2 设置 Git 环境 ....................................... 591
25.3
使用 Git 提交文件 ............................... 595
25.4
小结 ..................................................... 601
|