图书介绍

精通Unix Shell脚本编程 第2版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

精通Unix Shell脚本编程 第2版
  • (美)米歇尔著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302218951
  • 出版时间:2010
  • 标注页数:877页
  • 文件大小:43MB
  • 文件页数:894页
  • 主题词:UNIX操作系统-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

精通Unix Shell脚本编程 第2版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第Ⅰ部分 shell脚本基础3

第1章 脚本编程快速入门和概述3

1.1 区分大小写3

1.2 UNIX特殊字符3

1.3 shell4

1.4 shell脚本4

1.5 函数4

1.6 运行shell脚本5

1.7 shell脚本中的注释和风格6

1.8 控制结构7

1.9 使用break、continue、exit和return语句10

1.10 here文档10

1.11 shell脚本命令11

1.12 符号命令13

1.13 变量13

1.14 命令行参数14

1.15 shift命令14

1.16 特殊参数$*和$@15

1.17 双引号"、符号?和`16

1.18 在Solaris中使用awk16

1.19 正确使用echo命令17

1.20 shell脚本中的数学17

1.21 内置的数学函数18

1.22 文件权限、suid和sgid程序19

1.23 在远程主机上运行命令20

1.24 设置陷阱21

1.25 用户信息命令22

1.25.1 who命令22

1.25.2 w命令22

1.25.3 last命令23

1.26 ps命令23

1.27 与用户通信24

1.28 统一大写或小写文本以方便测试24

1.29 检测返回代码25

1.30 基于时间的脚本执行26

1.30.1 cron表26

1.30.2 at命令27

1.31 输出控制28

1.31.1 静默运行28

1.31.2 使用getopts解析命令行参数29

1.31.3 使用后台函数创建一个协作进程30

1.32 捕获延迟命令输出31

1.33 逐行处理文件的最快方式32

1.34 循环中使用命令输出35

1.35 邮件通知技术36

1.35.1 使用mail和mailx命令36

1.35.2 使用sendmail命令来发送外发邮件36

1.36 创建一个进度指示器37

1.36.1 一系列圆点37

1.36.2 一条旋转线38

1.36.3 运行时间39

1.37 使用记录文件39

1.38 创建伪随机数41

1.39 检查AlX中的失效磁盘分区42

1.40 自动主机ping42

1.41 高亮显示文件中的特定文本43

1.42 使打印机一直打印44

1.42.1 AIX的“传统”打印机子系统44

1.42.2 System V和CUPS打印44

1.43 自动进行FTP文件传输44

1.44 使用rsync复制数据44

1.45 捕获大于$MEG的文件列表46

1.46 捕获用户的按键操作46

1.47 使用bc实用工具来进行浮点数学运算47

1.48 数基转换48

1.48.1 使用typeset命令48

1.48.2 使用printf命令48

1.49 使用select命令创建菜单49

1.50 删除文件中的重复行51

1.51 删除文件中的空白行51

1.52 测试NULL变量51

1.53 直接访问上一个位置参数$#的值52

1.54 删除命令输出中的列标题52

1.55 数组53

1.56 测试字符串53

1.57 小结57

第2章 逐行处理文件的24种方法59

2.1 命令语句59

2.1.1 使用文件描述符60

2.1.2 创建一个在时间测试中使用的大文件60

2.2 逐行处理文件的24种方法65

2.2.1 方法1:cat_while_read_Line65

2.2.2 方法2:while_read_LINE_bottom66

2.2.3 方法3:cat_while_LINE_line67

2.2.4 方法4:while_LINE_line_bottom68

2.2.5 方法5:cat_while_LINE_line_cmdsub269

2.2.6 方法6:while_LINE_line_bottom_cmdsub269

2.2.7 方法7:for_LINE_cat_FILE70

2.2.8 方法8:for_LINE_cat_FILE_cmdsub270

2.2.9 方法9:while_line_outfile71

2.2.10 方法10:while_read_LINE_FD_IN72

2.2.11 方法11:cat_while_read_LINE_FD_OUT73

2.2.12 方法12:while_read_LINE_bottom_FD_OUT74

2.2.13 方法13:while_LINE_line_bottom_FD_OUT75

2.2.14 方法14:while_LINE_line_bottom_cmdsub2_FD_OUT76

2.2.15 方法15:for_LINE_cat_FILE_FD_OUT77

2.2.16 方法16:for_LINE_cat_FILE_cmdsub2_FD_OUT78

2.2.17 方法17:while_line_outfile_FD_IN78

2.2.18 方法18:while_line_outfile_FD_OUT79

2.2.19 方法19:while_line_outfile_FD_IN_AND_OUT80

2.2.20 方法20:while_LINE_line_FD_IN81

2.2.21 方法21:while_LINE_line_cmdsub2_FD_IN82

2.2.22 方法22:while_read_LINE_FD_IN_AND_OUT83

2.2.23 方法23:while_LINE_line_FD_IN_AND_OUT84

2.2.24 方法24:while_LINE_line_cmdsub2_FD_IN_AND_OUT86

2.3 计时测试各种方法87

2.3.1 计时脚本87

2.3.2 每个方法的计时数据105

2.3.3 计时命令替代方法113

2.4 使用命令输入和使用文件输入的区别115

2.5 小结115

2.6 作业116

第3章 自动事件通知117

3.1 自动事件通知的基础117

3.1.1 使用mail和mailx命令117

3.1.2 设置邮件别名119

3.2 外发邮件的问题120

3.2.1 使用.forward文件创建一个“Bounce”账户122

3.2.2 使用sendmail命令发送外发邮件123

3.3 拨号调制解调器软件124

3.4 SNMP陷阱124

3.5 小结125

3.6 作业125

第4章 进度指示器127

4.1 使用一系列圆点来指示进度127

4.2 使用一条旋转线来指示进度129

4.3 使用运行时间来指示进度131

4.4 联合反馈方法133

4.5 其他要考虑的选项136

4.6 小结136

4.7 作业136

第Ⅱ部分 程序员、测试员和分析员脚本第5章 使用记录文件139

5.1 记录的概念139

5.1.1 定长记录文件139

5.1.2 变长记录文件140

5.2 处理记录文件141

5.3 记录的任务和记录文件145

5.3.1 定长记录文件的任务146

5.3.2 变长记录文件的任务147

5.4 合并进程149

5.5 合并记录生成shell脚本152

5.6 其他需要考虑的问题162

5.7 小结162

5.8 作业163

第6章 自动FTP处理165

6.1 语法165

6.2 自动文件传输和远程目录列表168

6.2.1 使用FTP获得远程计算机上的目录列表168

6.2.2 从远程计算机上获得一个或多个文件169

6.2.3 将一个或多个文件传输到远程计算机173

6.2.4 用变量代替硬编码的密码176

6.2.5 将FTP脚本修改为使用密码179

6.3 加密怎么样185

6.3.1 创建加密密钥185

6.3.2 创建不需要密码的安全shell访问186

6.3.3 安全FTP和安全复制语法186

6.3.4 用autoexpect和expect脚本实现自动FTP188

6.4 其他要考虑的问题191

6.4.1 使用命令行开关项控制执行191

6.4.2 对活动进行记录192

6.4.3 对脚本增加调试模式192

6.4.4 把密码读入shell脚本192

6.5 小结192

6.6 作业193

第7章 使用rsync有效复制数据195

7.1 语法195

7.2 普通rsync shell脚本196

7.3 用rsync命令复制多目录文件197

7.4 用rsync复制多文件系统212

7.5 用rsync复制Oracle数据库224

7.6 用rsync复制shell脚本226

7.7 小结259

7.8 作业260

第8章 用Expect和autoexpect实现自动交互261

8.1 下载和安装Expect261

8.2 交互脚本或程序会话的基础263

8.3 用autoexpect自动创建Expect脚本266

8.4 使用变量272

8.5 条件测试274

8.5.1 Expect中的case语句274

8.5.2 Expect中的if...then...else循环280

8.5.3 Expect中的while循环281

8.5.4 Expect中的for循环282

8.5.5 Expect中的函数284

8.6 在Sun Blade Chassis和JumpStart中使用Expect脚本285

8.7 小结290

8.8 作业290

第9章 查找大文件和特定类型的文件291

9.1 语法291

9.2 记住文件和目录的许可权限292

9.3 别因文件的大小而吃惊292

9.4 创建脚本293

9.5 其他要考虑的问题298

9.6 小结298

9.7 作业298

第10章 进程监视与进程启动前、启动时和进程停止后事件301

10.1 语法301

10.2 监视进程的启动302

10.3 监视进程的结束303

10.4 当进程启动或停止时进行监视和记录308

10.5 进程监视的定时执行、显示每个进程的PID、为事件打上时间戳和定时功能312

10.6 其他要考虑的问题330

10.6.1 一般性用途330

10.6.2 要考虑的修改事项330

10.7 小结330

10.8 作业331

第11章 伪随机数和数据的生成333

11.1 随机数的产生333

11.2 方法334

11.2.1 方法1:利用PID和RANDOM shell变量产生一个伪随机数334

11.2.2 方法2:产生一个在0到32767之间的随机数335

11.2.3 方法3:产生1到用户定义的最大值之间的数字335

11.2.4 方法4:产生位于1和用户定义的最大数之间的固定长度的数336

11.2.5 方法5:使用/dev/random和/dev/urandom字符专用文件338

11.3 创建伪随机数的shell脚本341

11.4 创建唯一的文件名346

11.5 创建一个由随机字符组成的文件353

11.6 其他要考虑的问题359

11.7 小结360

11.8 作业360

第12章 创建伪随机密码361

12.1 随机性361

12.2 创建伪随机密码362

12.3 语法362

12.4 建立密码创建脚本363

12.4.1 出现顺序364

12.4.2 脚本主体的开始375

12.5 其他需要考虑的问题387

12.5.1 密码报表387

12.5.2 选用哪个密码387

12.5.3 其他用途387

12.6 小结388

12.7 作业388

第13章 浮点数学运算和bc工具程序389

13.1 语法389

13.2 使用bc创建shell脚本390

13.2.1 创建float_add.ksh shell脚本390

13.2.2 整数和浮点数的测试395

13.2.3 用bc命令创建一个数学运算语句397

13.2.4 使用here文档398

13.2.5 创建float_subtract.ksh shell脚本398

13.2.6 使用getopts解析命令行403

13.2.7 为bc工具创建数学运算语句405

13.2.8 here文档和提交结果406

13.2.9 创建float_multiply.ksh shell脚本407

13.2.10 解析命令行以获取有效数字412

13.2.11 创建float_divide.ksh shell脚本413

13.2.12 创建float_average.ksh shell脚本420

13.3 其他需要考虑的问题424

13.4 小结425

13.5 作业425

第14章 数制转换427

14.1 语法427

14.1.1 例1:将十进制转换为十六进制428

14.1.2 例2:将八进制转换为十六进制428

14.1.3 例3:十进制数转换为八进制429

14.1.4 例4:将十进制转换为十六进制429

14.2 利用脚本解决问题429

14.2.1 二进制转换为十六进制的shell脚本429

14.2.2 十进制转换为十六进制的脚本432

14.2.3 基于十六进制IP地址产生软件授权码的脚本436

14.2.4 在任何数制之间进行转换的脚本440

14.2.5 利用getopts分析命令行445

14.2.6 继续完善脚本446

14.2.7 主程序的开始448

14.3 转换数制的简单、可交互的脚本449

14.4 利用bc工具进行数制转换454

14.5 其他需要考虑的问题460

14.6 小结460

14.7 作业460

第15章 hgrep:高亮显示的grep脚本461

15.1 反白显示控制461

15.2 创建hgrep.Bash shell脚本463

15.3 其他需要考虑的问题469

15.4 小结470

15.5 作业470

第16章 监视进程和应用程序471

16.1 监视本地进程471

16.2 利用安全shell和远程shell进行远程监控473

16.2.1 检查活动的Oracle数据库479

16.2.2 使用autoexpect产生一个expect脚本482

16.2.3 检查HTTP服务器/应用程序是否运行487

16.3 等待进程执行完毕488

16.4 其他需要考虑的问题489

16.4.1 echo的正确用法489

16.4.2 应用程序API和SNMP陷阱490

16.5 小结490

16.6 作业491

第Ⅲ部分 系统管理员脚本第17章 文件系统的监视495

17.1 语法495

17.2 为监视添加异常功能500

17.3 剩余空间方法506

17.4 使用带异常功能的MB剩余空间方法509

17.5 已用百分比——MB剩余空间和大型文件系统513

17.6 在AIX、Linux、HP-UX、OpenBSD和Solaris上运行文件系统脚本522

17.6.1 不同操作系统命令语法和输出之间的差异523

17.6.2 编写中性shell(shell-neutral)脚本528

17.7 其他应考虑的问题537

17.7.1 事件通知537

17.7.2 自动执行538

17.7.3 修改egrep语句538

17.8 小结538

17.9 作业539

第18章 监视页面调度和交换空间541

18.1 语法542

18.1.1 AIX的lsps命令542

18.1.2 HP-UX下的swapinfo命令543

18.1.3 Linux下的free命令543

18.1.4 OpenBSD下的swapctl命令544

18.1.5 Solaris下的swap命令544

18.2 编写shell脚本544

18.2.1 AIX分页监视器544

18.2.2 HP-UX交换空间监视器549

18.2.3 Linux交换空间监视器554

18.2.4 OpenBSD交换空间监视器557

18.2.5 Solaris交换空间监视器560

18.2.6 5合1分页和交换空间监视器564

18.3 其他需要考虑的问题572

18.3.1 事件通知572

18.3.2 日志文件572

18.3.3 预约监视572

18.4 小结572

18.5 作业573

第19章 系统负荷监视575

19.1 在Linux上安装系统统计程序576

19.2 语法577

19.2.1 uptime命令的语法578

19.2.2 iostat语法579

19.2.3 sar的命令语法582

19.2.4 vmstat命令的语法584

19.3 利用脚本解决问题587

19.3.1 使用uptime命令测量系统负荷587

19.3.2 使用sar命令测量系统负荷591

19.3.3 使用iostat命令测量系统负荷596

19.3.4 使用vmstat测量系统负荷601

19.4 其他需要考虑的问题604

19.4.1 尝试为用户检测任何可能的问题605

19.4.2 向用户显示CPU占用程序列表605

19.4.3 收集用于描绘曲线的大量数据605

19.5 小结605

19.6 作业606

第20章 对陈旧磁盘分区的监视(AIX特有)607

20.1 AIX逻辑卷标管理器607

20.2 命令和方法608

20.2.1 磁盘子系统命令608

20.2.2 方法1:在LV级监视陈旧PP608

20.2.3 方法2:在PV级监视陈旧分区613

20.2.4 方法3:带重新同步功能的VG、LV和PV监视616

20.3 其他需要考虑的问题622

20.3.1 SSA磁盘622

20.3.2 日志文件623

20.3.3 自动执行623

20.3.4 事件通知623

20.4 小结623

20.5 作业624

第21章 打开/关闭SSA磁盘识别指示灯625

21.1 语法625

21.1.1 hdisk转换为pdisk626

21.1.2 标识一个SSA磁盘626

21.2 脚本编写过程626

21.2.1 用法函数和用户反馈函数627

21.2.2 控制函数630

21.2.3 完整的shell脚本635

21.3 其他需要考虑的问题646

21.3.1 错误日志646

21.3.2 交叉引用646

21.3.3 Root访问和sudo646

21.4 小结647

21.5 作业647

第22章 带失败通知的自动主机ping测试649

22.1 语法649

22.2 编写shell脚本650

22.2.1 定义变量651

22.2.2 创建陷阱653

22.2.3 完整的shell脚本653

22.3 其他需要考虑的问题660

22.3.1 $PINGLIST的变量长度限制问题660

22.3.2 对文件/etc/hosts而不是程序列表文件进行ping测试661

22.3.3 日志661

22.3.4 “Unknown Host”通知662

22.3.5 通知方法662

22.3.6 利用cron表项自动执行shell脚本662

22.4 小结663

22.5 作业663

第23章 制作系统配置镜像665

23.1 语法665

23.2 编写shell脚本668

23.3 其他需要考虑的问题695

23.4 小结695

23.5 作业695

第24章 sudo的编译、安装、配置和使用697

24.1 对sudo的需求697

24.2 在Solaris上配置sudo698

24.3 下载和编译sudo698

24.4 编译sudo698

24.5 配置sudo710

24.6 使用sudo716

24.7 在shell脚本中使用sudo717

24.8 使用sudo记录日志文件syslog720

24.9 sudo日志文件724

24.10 小结724

24.11 作业725

第25章 脱离打印队列地狱:保持打印机持续工作727

25.1 系统V与BSD、CUPS打印系统727

25.1.1 AIX打印控制命令728

25.1.2 CUPS——通用UNIX打印系统736

25.1.3 HP-UX打印控制命令739

25.1.4 Linux打印控制命令741

25.1.5 Solaris打印控制命令748

25.2 整合所有脚本片段753

25.3 其他需要考虑的问题762

25.3.1 日志记录762

25.3.2 异常处理功能763

25.3.3 维护763

25.3.4 调度763

25.4 小结763

25.5 作业764

第26章 那些讨厌的SOX审计765

26.1 期待的东西765

26.2 如何与审计师一起工作766

26.3 审计师想看的东西766

26.4 一些好用的命令767

26.4.1 使用id命令767

26.4.2 使用find命令768

26.4.3 使用awk和cut命令769

26.4.4 使用sed命令774

26.4.5 使用dirname和basename命令775

26.5 其他需要考虑的问题776

26.6 小结776

26.7 作业777

第27章 使用Dirvish和rsync创建快照类型的备份779

27.1 Dirvish如何工作779

27.2 配置Dirvish780

27.2.1 Dirvish的安装781

27.2.2 修改Dirvish的配置文件master.conf783

27.2.3 为每个文件系统备份创建default.conf文件784

27.3 进行全系统备份785

27.4 在命令行使用Dirvish786

27.5 控制Dirvish的菜单界面shell脚本787

27.5.1 运行所有备份789

27.5.2 进行特殊备份790

27.5.3 定位和恢复镜像791

27.5.4 备份镜像的过期和删除791

24.5.5 使用sed修改summary文件792

27.5.6 添加一个新的备份794

27.5.7 移除备份798

27.5.8 管理Dirvish备份bank800

27.6 整合所有代码802

27.7 使用dirvish_ctrl shell脚本825

27.7.1 运行定义在Runall:stanza上的所有备份826

27.7.2 运行一个特定备份826

27.7.3 定位和恢复文件827

27.7.4 删除过期备份和使备份过期829

27.7.5 添加一个新的Dirvish备份vault832

27.7.6 移除一个Dirvish vault836

27.7.7 管理Dirvish备份Bank837

27.7.8 添加一个新Dirvish备份Bank837

27.7.9 移除一个Dirvish备份Bank838

27.8 其他需要考虑的问题838

27.9 小结839

27.10 作业839

第28章 对用户按键进行监视和审计841

28.1 语法841

28.2 脚本解决方案843

28.2.1 将用户行为记入日志843

28.2.2 启动监视会话844

28.2.3 日志库位置844

28.2.4 脚本845

28.2.5 对root级活动进行日志记录847

28.2.6 监视其他管理员用户852

28.3 其他需要考虑的问题855

28.3.1 邮发审计日志855

28.3.2 压缩856

28.3.3 是否需要更好的安全性856

28.3.4 通知用户857

28.3.5 Sudoers文件857

28.4 小结857

28.5 作业857

28.6 结束语858

附录A Web站点上的内容859

热门推荐