《Shell脚本编程诀窍 适用于Linux、Bash等》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(英)帕克著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302297819
  • 页数:534 页
图书介绍:本书由一系列的编程任务组成,每个任务都提出了要完成的目标、使用到的技术、相关的技巧、任务扩展和总结等,涉及结构化命令、处理用户输入、显示数据、脚本控制、函数、正则表达式、gawk编程、使用数据库、各种可选的Shell等。

第Ⅰ部分 基本概念 3

第1章Unix、GNU和Linux的历史 3

1.1 Unix 3

1.1.1“一切皆文件”与管道 5

1.1.2 BSD 6

1.2 GNU 7

1.3 Linux 10

1.4本章小结 12

第2章 环境的搭建 13

2.1操作系统 13

2.1.1 GNU/Linux 13

2.1.2 BSD 15

2.1.3商业Unix 15

2.1.4 Microsoft Window 15

2.2编辑器 16

2.2.1图形化文本编辑器 16

2.2.2终端模拟器 19

2.2.3非图形化文本编辑器 19

2.3系统环境的搭建 21

2.3.1 shell配置文件 21

2.3.2别名 23

2.3.3 vim设置 27

2.4本章小结 28

第3章 变量 29

3.1使用变量 29

3.1.1类型 30

3.1.2变量的赋值 30

3.1.3位置参数 34

3.1.4返回码 38

3.1.5删除变量 41

3.2预定义变量和标准变量 42

3.2.1 BASH ENV 43

3.2.2 BASHOPTS 43

3.2.3 SHELLOPTS 44

3.2.4 BASH COMMAND 46

3.2.5 BASH SOURCE、FUNCNAME、LINENO和BASH LINENO 47

3.2.6 SHELL 51

3.2.7 HOSTNAME和HOSTTYPE 51

3.2.8工作目录 51

3.2.9 PIPESTATUS 51

3.2.10 TIMEFORMAT 52

3.2.11 PPID 53

3.2.12 RANDOM 54

3.2.13 REPLAY 54

3.2.14 SECONDS 55

3.2.15 BASH XTRACEFD 55

3.2.16 GLOBIGNORE 57

3.2.17 HOME 58

3.2.18 IFS 58

3.2.19 PATH 59

3.2.20 TMOUT 60

3.2.21 TMPDIR 61

3.2.22用户标识变量 61

3.3本章小结 62

第4章 通配符扩展 63

4.1文件名扩展(globbing) 63

4.1.1 bash的文件名扩展特性 66

4.1.2 shell选项 67

4.2正则表达式和引用 71

4.2.1正则表达式概述 72

4.2.2引用 73

4.3本章小结 77

第5章 条件执行 79

5.1 if/then 79

5.2 else 80

5.3 elif 81

5.4 test([) 83

5.4.1测试标志 84

5.4.2文件比较测试 91

5.4.3字符串比较测试 92

5.4.4正则表达式测试 94

5.4.5数值测试 97

5.4.6组合测试 98

5.5 case 101

5.6本章小结 105

第6章 使用循环进行流控制 107

6.1 for循环 107

6.1.1 for循环的使用时机 108

6.1.2向for提供数据 108

6.1.3 C风格的for循环 114

6.2 while循环 115

6.2.1 while循环的使用时机 116

6.2.2 while循环的用法 116

6.3嵌套循环 122

6.4循环的退出与继续 122

6.5带case的while循环 126

6.6 until循环 127

6.7 select循环 129

6.8本章小结 134

第7章 变量(续) 135

7.1变量的用法 135

7.1.1变量的类型 137

7.1.2变量的长度 138

7.1.3特殊字符串操作符 140

7.1.4按照长度剪裁变量字符串 141

7.1.5从字符串末尾剪裁 143

7.1.6使用模式剪裁字符串 143

7.2字符串查找 147

7.2.1查找与替换 147

7.2.2模式替换 149

7.2.3模式删除 149

7.2.4大小写转换 149

7.3提供默认值 150

7.4间接操作 153

7.5使用source命令加载变量 155

7.6本章小结 156

第8章 函数和库 157

8.1函数 157

8.1.1函数定义 157

8.1.2函数输出 158

8.1.3写入文件 160

8.1.4整个函数的输出重定向 163

8.1.5函数陷阱 167

8.1.6递归函数 168

8.2变量的作用域 173

8.3库 177

8.3.1库的创建与访问 179

8.3.2库的结构 179

8.3.3网络配置库 183

8.3.4库的使用 187

8.4 getopts 187

8.4.1错误处理 190

8.4.2函数中的getopts 191

8.5本章小结 194

第9章 数组 195

9.1数组的赋值 195

9.1.1一次一个 196

9.1.2一次全部 196

9.1.3按索引 197

9.1.4从源中一次全部读取 197

9.1.5从输入读取 199

9.2数组的访问 201

9.2.1用索引访问 201

9.2.2数组的长度 202

9.2.3用变量索引访问 203

9.2.4从数组中选择元素 205

9.2.5显示整个数组 206

9.3关联数组 206

9.4数组操作 207

9.4.1数组的复制 207

9.4.2向数组追加元素 209

9.4.3从数组中删除元素 211

9.5高级技术 212

9.6本章小结 213

第10章 进程 215

10.1 ps命令 215

10.1.1 ps显示的行宽 216

10.1.2精确分析进程表 217

10.2 killall 219

10.3 /proc虚拟文件系统 220

10.4 prtstat 221

10.5 I/O重定向 222

10.5.1向已有文件追加输出 224

10.5.2重定向的权限 225

10.6 exec 225

10.6.1使用exec替换已有程序 225

10.6.2使用exec修改重定向 226

10.7管道 233

10.8后台处理 233

10.8.1 wait命令 234

10.8.2使用nohup防止进程挂起 235

10.9 /proc和/sys的其他特性 238

10.9.1 /proc/version 238

10.9.2 SysRq 238

10.9.3 /proc/meminfo 240

10.9.4 /proc/cpuinfo 241

10.9.5 /sys 241

10.9.6 /sys/devices/system/node 248

10.9.7 sysctl 250

10.10本章小结 250

第11章shell的选择与使用 251

11.1 Bourne shell 251

11.2 Kornshell 252

11.3 C shell 252

11.4 Tenex C shell 252

11.5 Z shell 253

11.6 Bourne Again Shell 253

11.7 Debian Almquist Shell 253

11.8点文件 254

11.8.1交互式登录shell 255

11.8.2交互式非登录shell 256

11.8.3非交互式shell 257

11.8.4登出脚本 257

11.9命令提示符 257

11.9.1 PS1提示符 257

11.9.2 PS2、 PS3和PS4提示符 259

11.10别名 260

11.10.1节省时间 260

11.10.2修改行为 261

11.11 history命令 262

11.11.1回调命令 262

11.11.2搜索历史 263

11.11.3时间戳 263

11.12 Tab补全 265

11.12.1 ksh 265

11.12.2 tcsh 266

11.12.3 zsh 266

11.12.4 bash 267

11.13后台、前台与作业控制 268

11.13.1后台进程 268

11.13.2作业控制 268

11.13.3 nohup和disown 271

11.14本章小结 272

第Ⅱ部分 系统工具使用与扩展诀窍 275

第12章 文件操作 275

12.1 stat 275

12.2 cat 277

12.2.1行号标记 277

12.2.2处理空白行 278

12.2.3非打印字符 279

12.3 cat的反转词tac 280

12.4重定向 281

12.4.1重定向输出:单个大于符号(>) 281

12.4.2追加:双大于符号(>>) 282

12.4.3输入重定向:单个小于符号(<) 284

12.4.4 here文档:双小于符号(<<FOF) 286

12.5 dd 289

12.6 df 291

12.7 mktemp 292

12.8 join 293

12.9 install 294

12.10 grep 296

12.10.1 grep标志 297

12.10.2 grep正则表达式 298

12.11 split 299

12.12 tee 301

12.13 touch 302

12.14 find 303

12.15 find -exec 306

12.16本章小结 310

第13章 文本操作 311

13.1 cut 311

13.2 echo 312

13.2.1 diall脚本 312

13.2.2 dia12脚本 315

13.3 fmt 316

13.4 head和tail 319

13.4.1奖牌脚本 319

13.4.2世界杯脚本 320

13.5 od 324

13.6 paste 328

13.7 pr 331

13.8 printf 332

13.9 shuf 334

13.9.1掷骰子 334

13.9.2发牌 335

13.9.3旅行线路 336

13.10 sort 338

13.10.1按照键进行排序 338

13.10.2按照日期与时间对日志文件排序 340

13.10.3对人类可读的数值进行排序 342

13.11tr 343

13.12 uniq 346

13.13 wc 348

13.14本章小结 349

第14章 系统管理工具 351

14.1 basename 351

14.2 date 353

14.2.1 date的典型用法 353

14.2.2 date的一些更有趣的用法 357

14.3 dimame 358

14.4 factor 360

14.5 id、 groups与getent 362

14.6 logger 365

14.7 md5sum 366

14.8 mkfifo 368

14.8.1主与从 369

14.8.2颠倒顺序 371

14.9联网 373

14.9.1 telnet 373

14.9.2 netcat 374

14.9.3 ping 376

14.9.4编写ssh与scp脚本 378

14.9.5 OpenSSL 381

14.10 nohup 387

14.11 seq 388

14.11.1整数序列 389

14.11.2浮点数序列 391

14.12 sleep 391

14.13 timeout 392

14.13.1关闭脚本 394

14.13.2网络超时 396

14.14 uname 398

14.15 uuencode 399

14.16 xargs 400

14.17 yes 403

14.18本章小结 404

第Ⅲ部分 系统管理的实用脚本 407

第15章shell特性 407

15.1实用脚本15-1:安装 407

初始化脚本 407

15.1.1用到的技术 407

15.1.2概念 408

15.1.3潜在的陷阱 408

15.1.4脚本结构 408

15.1.5脚本代码 410

15.1.6调用结果 411

15.1.7小结 412

15.2实用脚本15-2: RPM报告 412

15.2.1用到的技术 412

15.2.2概念 412

15.2.3潜在的陷阱 413

15.2.4脚本结构 413

15.2.5脚本代码 414

15.2.6调用结果 417

15.2.7小结 418

15.3实用脚本15-3:postinstall脚本 418

15.3.1用到的技术 418

15.3.2概念 419

15.3.3潜在的陷阱 419

15.3.4脚本结构 420

15.3.5脚本代码 421

15.3.6调用结果 423

15.3.7小结 423

第16章 系统管理 425

16.1实用脚本16-1:初始化脚本 425

16.1.1用到的技术 426

16.1.2概念 426

16.1.3潜在的陷阱 427

16.1.4脚本结构 428

16.1.5脚本代码 429

16.1.6调用结果 430

16.1.7小结 431

16.2实用脚本16-2: CGI脚本 431

16.2.1用到的技术 431

16.2.2概念 431

16.2.3潜在的陷阱 432

16.2.4脚本结构 433

16.2.5脚本代码 436

16.2.6调用结果 439

16.2.7小结 442

16.3实用脚本16-3:配置文件 443

16.3.1用到的技术 443

16.3.2概念 443

16.3.3潜在的陷阱 443

16.3.4脚本结构 443

16.3.5脚本代码 444

16.3.6调用结果 445

16.3.7小结 445

16.4实用脚本16-4:锁 445

16.4.1用到的技术 446

16.4.2概念 446

16.4.3潜在的陷阱 446

16.4.4脚本结构 448

16.4.5脚本代码 450

16.4.6调用结果 452

16.4.7小结 455

第17章 演示 457

17.1实用脚本17-1:太空游戏 457

17.1.1用到的技术 457

17.1.2概念 457

17.1.3潜在的陷阱 460

17.1.4脚本结构 460

17.1.5脚本代码 461

17.1.6调用结果 466

17.1.7小结 468

第18章 数据存储与检索 469

18.1实用脚本18-1:分析HTML 469

18.1.1用到的技术 469

18.1.2概念 469

18.1.3潜在的陷阱 470

18.1.4脚本结构 470

18.1.5脚本代码 471

18.1.6调用结果 472

18.1.7小结 474

18.2实用脚本18-2: CSV格式化 474

18.2.1用到的技术 474

18.2.2概念 475

18.2.3潜在的陷阱 475

18.2.4脚本结构 475

18.2.5脚本代码 477

18.2.6调用结果 479

18.2.7小结 480

第19章 数值 481

19.1实用脚本19-1:斐波那契数列 481

19.1.1用到的技术 481

19.1.2概念 482

19.1.3潜在的陷阱 482

19.1.4方法一的结构 483

19.1.5方法一的脚本 483

19.1.6方法一的调用结果 484

19.1.7方法二的结构 484

19.1.8方法二的脚本 485

19.1.9方法二的调用结果 486

19.1.10方法三的结构 487

19.1.11方法三的脚本 488

19.1.12方法三的调用结果 488

19.1.13小结 490

19.2实用脚本19-2: PXE启动 490

19.2.1用到的技术 490

19.2.2概念 490

19.2.3潜在的陷阱 491

19.2.4脚本结构 491

19.2.5脚本代码 492

19.2.6调用结果 495

19.2.7小结 497

第20章 进程 499

20.1实用脚本20-1:进程控制 499

20.1.1用到的技术 499

20.1.2概念 499

20.1.3潜在的陷阱 501

20.1.4脚本结构 501

20.1.5脚本代码 503

20.1.6调用结果 509

20.1.7小结 514

第21章 国际化 515

21.1实用脚本21-1:国际化 515

21.1.1用到的技术 516

21.1.2概念 516

21.1.3潜在的陷阱 517

21.1.4脚本结构 518

21.1.5脚本代码 518

21.1.6调用结果 522

21.1.7小结 524

第Ⅳ部分 参考信息 527

附录 补充材料 527

术语表 531