《Linux命令行与shell脚本编程大全(第4版)》封面

内容简介

这是一本关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分 :Linux命令行、shell脚本编程基础、高级shell脚本编程,以及创建和管理实用的脚本。本书这一版针对Linux系统的最新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你能轻松写出自己的shell脚本。

作者简介

【作者简介】

理查德·布卢姆(RichardBlum),从事系统管理和网络管理工作近40年,在Unix、Linux、Novell、WindowsServer等领域身经百战,著有多部Linux畅销书。此外,他的Linux在线课程被世界多所大学和学院采用。

克里斯蒂娜·布雷斯纳汉(ChristineBresnahan),拥有近40年的系统管理经验,Udemy讲师,讲授两门Linux在线课程,持有CompTIALinux+、LPIC-1、LinuxEssentials认证。

【译者简介】

门佳,GNU/Linux深度用户,喜欢溯本求源,挖掘技术背后的来龙去脉,对程序语言设计理论、编译技术、操作系统设计与实现、Web开发等领域均有涉猎,译著包括《LinuxShell脚本攻略》《shell脚本实战(第2版)》《bashshell脚本编程经典实例(第2版)》以及本书第2版和第3版等。

目录

第一部分Linux命令行
第1章初识Linuxshell2
1.1Linux初探2
1.1.1深入探究Linux内核3
1.1.2GNU实用工具7
1.1.3Linux桌面环境9
1.2Linux发行版13
1.2.1核心Linux发行版14
1.2.2特定用途的Linux发行版14
1.3小结15
第2章走进shell16
2.1进入命令行16
2.1.1控制台终端16
2.1.2图形化终端17
2.2通过Linux控制台终端访问CLI18
2.3通过图形化终端仿真器访问CLI20
2.4使用GNOMETerminal终端仿真器21
2.4.1访问GNOMETerminal21
2.4.2菜单栏25
2.5使用Konsole终端仿真器27
2.5.1访问Konsole终端仿真器27
2.5.2菜单栏29
2.6使用xterm终端仿真器32
2.6.1访问xterm33
2.6.2命令行选项33
2.7小结34
第3章bashshell基础命令36
3.1启动shell36
3.2使用shell提示符37
3.3与bash手册交互37
3.4浏览文件系统41
3.4.1Linux文件系统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章更多的bashshell命令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章理解shell88
5.1shell的类型88
5.2shell的父子关系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登录shell119
6.6.2交互式shell进程123
6.6.3非交互式shell124
6.6.4环境变量持久化124
6.7数组变量125
6.8小结126
第7章理解Linux文件权限127
7.1Linux的安全性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.1Linux文件系统的演进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.1LVM布局159
8.3.2Linux中的LVM159
8.3.3使用LinuxLVM162
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.5apt仓库171
9.3基于RedHat的系统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.6RPM仓库176
9.4使用容器管理软件177
9.4.1使用snap容器177
9.4.2使用flatpak容器179
9.5从源代码安装180
9.6小结183
第10章文本编辑器185
10.1vim编辑器185
10.1.1检查vim软件包185
10.1.2vim基础187
10.1.3编辑数据189
10.1.4复制和粘贴189
10.1.5查找和替换190
10.2nano编辑器191
10.3Emacs编辑器193
10.3.1检查Emacs软件包193
10.3.2在控制台中使用Emacs194
10.3.3在GUI中使用Emacs199
10.4KDE系编辑器200
10.4.1KWrite编辑器200
10.4.2Kate编辑器204
10.5GNOME编辑器208
10.5.1启动gedit208
10.5.2gedit的基本功能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.1expr命令228
11.7.2使用方括号230
11.7.3浮点数解决方案231
11.8退出脚本234
11.8.1查看退出状态码234
11.8.2exit命令235
11.9实战演练237
11.10小结238
第12章结构化命令239
12.1使用if-then语句239
12.2if-then-else语句242
12.3嵌套if语句243
12.4test命令246
12.4.1数值比较248
12.4.2字符串比较249
12.4.3文件比较253
12.5复合条件测试262
12.6if-then的高级特性263
12.6.1使用单括号264
12.6.2使用双括号265
12.6.3使用双方括号266
12.7case命令267
12.8实战演练268
12.9小结273
第13章更多的结构化命令274
13.1for命令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.2C语言风格的for命令282
13.2.1C语言中的for命令282
13.2.2使用多个变量283
13.3while命令284
13.3.1while的基本格式284
13.3.2使用多个测试命令285
13.4until命令286
13.5嵌套循环287
13.6循环处理文件数据290
13.7循环控制291
13.7.1break命令291
13.7.2continue命令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.1nice命令363
16.5.2renice命令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.3shtool库函数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.1dialog软件包408
18.2.2dialog选项413
18.2.3在脚本中使用dialog命令415
18.3图形化窗口部件417
18.3.1KDE环境417
18.3.2GNOME环境420
18.4实战演练424
18.5小结427
第19章初识sed和gawk428
19.1文本处理428
19.1.1sed编辑器428
19.1.2gawk编辑器431
19.2sed编辑器基础命令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.1next命令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在脚本中使用sed492
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.1if语句519
22.4.2while语句521
22.4.3do-while语句522
22.4.4for语句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章使用其他shell534
23.1什么是dashshell534
23.2dashshell的特性535
23.2.1dash命令行选项535
23.2.2dash环境变量536
23.2.3dash内建命令538
23.3dash脚本编程539
23.3.1创建dash脚本539
23.3.2不能使用的特性539
23.4zshshell541
23.5zshshell的组成542
23.5.1shell选项542
23.5.2内建命令543
23.6zsh脚本编程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作为VCS591
25.2设置Git环境591
25.3使用Git提交文件595
25.4小结601
附录Abash命令快速指南602
附录Bsed和gawk快速指南612
······

最后修改:2024 年 06 月 27 日