第1章 UNIX/Linux shell簡介 1
1.1 UNIX與Linux及其歷史 1
1.1.1 UNIX簡介 1
1.1.2 為什么選擇Linux 2
1.2 shell的定義與功能 3
1.2.1 UNIX shell 4
1.2.2 Linux的shell 4
1.3 shell的歷史 6
1.3.1 shell的作用 7
1.3.2 shell的職責 7
1.4 系統(tǒng)啟動與登錄shell 7
1.4.1 解析命令行 8
1.4.2 命令類型 8
1.5 進程與shell 10
1.5.1 哪些進程正在運行? 10
1.5.2 系統(tǒng)調用 11
1.5.3 創(chuàng)建進程 12
1.6 環(huán)境與繼承 15
1.6.1 所有權 15
1.6.2 為文件創(chuàng)建掩碼 15
1.6.3 修改權限與所有者 16
1.6.4 工作目錄 18
1.6.5 變量 19
1.6.6 重定向與管道 20
1.6.7 shell和信號 25
1.7 在腳本中執(zhí)行命令 26
第2章 shell編程快速入門 27
2.1 shell腳本簡介 27
2.2 腳本實例:主要shell的比較 27
2.2.1 開始之前 27
2.2.2 示例說明 28
2.3 C shell與TC shell的語法和
結構 28
2.4 Bourne shell的語法和結構 34
2.5 Korn shell結構 41
2.6 Bash shell結構 49
第3章 正則表達式與模式匹配 57
3.1 正則表達式 57
3.1.1 定義和示例 57
3.1.2 正則表達式元字符 58
3.2 組合正則表達式元字符 63
第4章 grep家族 69
4.1 grep命令 69
4.1.1 grep的含義 69
4.1.2 grep如何工作 70
4.1.3 元字符 70
4.1.4 grep的退出狀態(tài) 72
4.2 使用正則表達式的grep實例 72
4.3 grep的選項 77
4.4 grep與管道 79
4.5 egrep(擴展的grep) 80
4.5.1 egrep示例 81
4.5.2 egrep回顧 83
4.6 fgrep(固定的grep或
快速的grep) 83
4.7 Linux與GNU grep 84
4.8 帶正則表達式的GNU
基本grep(grep -G) 87
4.9 grep –E或egrep
(GNU擴展grep) 88
4.9.1 grep –E和egrep實例 89
4.9.2 grep變體的不規(guī)則形式 92
4.10 固定的grep(grep –F和fgrep) 95
4.11 遞歸的grep(rgrep,grep -R) 95
4.12 帶選項的GNU grep 95
4.13 帶選項的grep
(UNIX和GNU) 97
第5章 流編輯器sed 105
5.1 sed簡介 105
5.2 sed的不同版本 105
5.3 sed的工作過程 106
5.4 正則表達式 106
5.5 定址 107
5.6 命令與選項 108
5.6.1 用sed修改文件 109
5.6.2 GNU sed的選項 109
5.7 報錯信息和退出狀態(tài) 110
5.8 元字符 110
5.9 sed范例 111
5.9.1 打印:p命令 112
5.9.2 刪除:d命令 113
5.9.3 替換:s命令 114
5.9.4 指定行的范圍:逗號 116
5.9.5 多重編輯:e命令 117
5.9.6 讀文件:r命令 118
5.9.7 寫文件:w命令 119
5.9.8 追加:a命令 119
5.9.9 插入:i命令 120
5.9.10 修改:c命令 121
5.9.11 獲取下一行:n命令 121
5.9.12 轉換:y命令 122
5.9.13 退出:q命令 122
5.9.14 暫存和取用:h命令
和g命令 123
5.9.15 暫存和互換:h命令
和x命令 126
5.10 sed腳本編程 126
5.10.1 sed腳本范例 127
5.10.2 回顧 129
第6章 awk實用程序 131
6.1 什么是awk、nawk、gawk 131
6.1.1 awk簡介 131
6.1.2 awk版本 131
6.2 awk的格式 132
6.2.1 從文件輸入 132
6.2.2 從命令輸入 133
6.3 awk工作原理 134
6.4 格式化輸出 135
6.4.1 print函數(shù) 135
6.4.2 OFMT變量 136
6.4.3 printf函數(shù) 136
6.5 文件中的awk命令 139
6.6 記錄與字段 140
6.6.1 記錄 140
6.6.2 字段 141
6.6.3 字段分隔符 141
6.7 模式與操作 143
6.7.1 模式 143
6.7.2 操作 144
6.8 正則表達式 145
6.8.1 匹配整行 146
6.8.2 匹配操作符 146
6.9 腳本文件中的awk命令 148
6.10 復習 149
6.10.1 簡單的模式匹配 149
6.10.2 簡單的操作 150
6.10.3 模式與操作組合的
正則表達式 152
6.10.4 輸入字段分隔符 154
6.10.5 編寫awk腳本 156
6.11 比較表達式 157
6.11.1 關系運算符 158
6.11.2 條件表達式 159
6.11.3 算術運算 159
6.11.4 邏輯操作符和復合模式 160
6.11.5 范圍模式 161
6.11.6 驗證數(shù)據合法性 161
6.12 復習 162
6.12.1 相等性測試 163
6.12.2 關系運算符 164
6.12.3 邏輯運算符 165
6.12.4 邏輯非運算符 165
6.12.5 算術運算符 166
6.12.6 范圍運算符 168
6.12.7 條件運算符 168
6.12.8 賦值運算符 169
6.13 變量 170
6.13.1 數(shù)值變量和字符串變量 170
6.13.2 用戶自定義變量 171
6.13.3 BEGIN模式 174
6.13.4 END模式 175
6.14 重定向和管道 175
6.14.1 輸出重定向 175
6.14.2 輸入重定向(getline) 175
6.15 管道 177
6.16 回顧 179
6.16.1 遞增和遞減運算符 179
6.16.2 內置變量 180
6.16.3 BEGIN模式 183
6.16.4 END模式 184
6.16.5 包含BEGIN和END
模式的awk腳本 185
6.16.6 printf函數(shù) 186
6.16.7 重定向與管道 187
6.16.8 打開和關閉管道 188
6.17 條件語句 190
6.17.1 if語句 190
6.17.2 if/else語句 190
6.17.3 if/else和else if語句 191
6.18 循環(huán) 192
6.18.1 while循環(huán) 192
6.18.2 for循環(huán) 193
6.18.3 循環(huán)控制 193
6.19 程序控制語句 194
6.19.1 next語句 194
6.19.2 exit語句 194
6.20 數(shù)組 194
6.20.1 關聯(lián)數(shù)組的下標 195
6.20.2 處理命令行參數(shù)(nawk) 200
6.21 awk的內置函數(shù) 202
6.22 內置算術函數(shù) 205
6.22.1 整數(shù)函數(shù) 205
6.22.2 隨機數(shù)發(fā)生器 206
6.23 用戶自定義函數(shù)(nawk) 207
6.24 復習 208
6.25 雜項 213
6.25.1 固定字段 214
6.25.2 多行記錄 216
6.25.3 生成格式信函 217
6.25.4 與shell交互 219
6.26 awk內置函數(shù) 221
6.26.1 字符串函數(shù) 221
6.26.2 gawk的時間函數(shù) 224
6.26.3 命令行參數(shù) 226
6.26.4 讀輸入(getline) 227
6.26.5 控制函數(shù) 228
6.26.6 用戶自定義函數(shù) 229
6.26.7 awk/gawk命令行選項 229
第7章 交互式的Bourne shell 233
7.1 簡介 233
7.2 環(huán)境 234
7.2.1 初始化文件 234
7.2.2 提示符 237
7.2.3 搜索路徑 238
7.2.4 hash命令 238
7.2.5 dot命令 239
7.3 命令行 239
7.3.1 退出狀態(tài) 240
7.3.2 含多條命令的命令行 240
7.3.3 命令的條件執(zhí)行 241
7.3.4 在后臺執(zhí)行的命令 241
7.4 元字符(通配符) 242
7.5 文件名替換 242
7.5.1 星號 243
7.5.2 問號 243
7.5.3 方括號 244
7.5.4 轉義元字符 244
7.6 變量 245
7.6.1 局部變量 245
7.6.2 設置局部變量 245
7.6.3 環(huán)境變量 247
7.6.4 列出已設置的變量 248
7.6.5 復位變量 249
7.6.6 打印變量的值:echo命令 250
7.6.7 變量擴展修飾符 251
7.6.8 位置參數(shù) 253
7.6.9 其他特殊變量 254
7.7 引用 255
7.7.1 反斜杠 256
7.7.2 單引號 256
7.7.3 雙引號 257
7.8 命令替換 257
7.9 函數(shù)入門 258
7.9.1 定義函數(shù) 258
7.9.2 列出和復位函數(shù) 259
7.10 標準I/O和重定向 259
7.11 管道 264
7.12 here文檔與重定向輸入 265
第8章 Bourne shell編程 269
8.1 簡介 269
8.2 讀取用戶輸入 271
8.3 算術運算 272
8.3.1 整數(shù)運算與expr命令 273
8.3.2 浮點運算 273
8.4 位置參量和命令行參數(shù) 274
8.4.1 set命令與位置參量 275
8.4.2 $*和$@有何區(qū)別 277
8.5 條件結構和流控制 278
8.5.1 測試退出狀態(tài):test命令 279
8.5.2 if命令 280
8.5.3 exit命令和?變量 282
8.5.4 檢查空值 283
8.5.5 if/else命令 284
8.5.6 if/elif/else命令 285
8.5.7 文件測試 287
8.5.8 null命令 287
8.5.9 case命令 289
8.5.10 用here文檔和case
命令生成菜單 290
8.6 循環(huán)命令 291
8.6.1 for命令 291
8.6.2 詞表中的$*和$@變量 293
8.6.3 while命令 295
8.6.4 until命令 297
8.6.5 循環(huán)控制命令 298
8.6.6 嵌套循環(huán)和循環(huán)控制 302
8.6.7 I/O重定向和子shell 304
8.6.8 在后臺執(zhí)行循環(huán) 306
8.6.9 exec命令和循環(huán) 307
8.6.10 IFS和循環(huán) 308
8.7 函數(shù) 309
8.7.1 清除函數(shù) 310
8.7.2 函數(shù)的參數(shù)和返回值 310
8.7.3 函數(shù)與dot命令 312
8.8 捕獲信號 314
8.8.1 重置信號 315
8.8.2 忽略信號 316
8.8.3 列出陷阱 316
8.8.4 函數(shù)中的信號陷阱 317
8.8.5 調試 318
8.9 命令行 319
8.9.1 用getopts處理命令行選項 319
8.9.2 eval命令和命令行解析 324
8.10 shell的調用選項 325
8.10.1 set命令和選項 326
8.10.2 shell的內置命令 326
第9章 交互式C shell與TC shell 335
9.1 簡介 335
9.2 環(huán)境 336
9.2.1 初始化文件 336
9.2.2 搜索路徑 338
9.2.3 rehash命令 339
9.2.4 hashstat命令 339
9.2.5 source命令 339
9.2.6 shell提示符 340
9.3 C/TC shell命令行 341
9.3.1 退出狀態(tài) 341
9.3.2 命令編組 341
9.3.3 命令的條件執(zhí)行 342
9.3.4 后臺命令 343
9.3.5 命令行歷史 343
9.4 別名 347
9.4.1 列出別名 347
9.4.2 創(chuàng)建別名 348
9.4.3 刪除別名 348
9.4.4 別名環(huán) 349
9.5 操作目錄棧 349
9.6 作業(yè)控制 351
9.6.1 &號和后臺作業(yè) 351
9.6.2 暫停鍵序列和后臺作業(yè) 352
9.6.3 jobs命令 352
9.6.4 前臺和后臺命令 353
9.7 shell元字符 353
9.8 文件名替換 354
9.8.1 星號 355
9.8.2 問號 355
9.8.3 方括號 356
9.8.4 花括號 356
9.8.5 轉義元字符 357
9.8.6 ~號擴展 357
9.8.7 文件名補全:變量filec 358
9.8.8 用noglob關閉元字符 358
9.9 重定向與管道 359
9.9.1 重定向輸入 359
9.9.2 here文檔 360
9.9.3 重定向輸出 361
9.9.4 將輸出追加到已有文件 362
9.9.5 重定向輸出和報錯信息 362
9.9.6 分離輸出與報錯信息 363
9.9.7 變量noclobber 364
9.10 變量 365
9.10.1 花括號 366
9.10.2 局部變量 366
9.10.3 環(huán)境變量 369
9.10.4 數(shù)組 371
9.10.5 專用變量 373
9.11 命令替換 375
9.12 引用 377
9.12.1 反斜杠 378
9.12.2 單引號 378
9.12.3 雙引號 379
9.12.4 引用的游戲 379
9.13 交互式TC shell的新特性 381
9.13.1 tcsh的版本 382
9.13.2 shell提示符 382
9.14 TC shell命令行 385
9.14.1 命令行與退出狀態(tài) 385
9.14.2 TC shell命令行歷史 386
9.14.3 內置命令行編輯器 393
9.15 TC shell命令、文件名
與變量補齊 399
9.15.1 autolist變量 399
9.15.2 fignore變量 400
9.15.3 shell變量complete 401
9.15.4 編程補全 401
9.16 TC shell拼寫校正 405
9.17 TC shell別名 406
9.17.1 列出別名 406
9.17.2 創(chuàng)建別名 407
9.17.3 刪除別名 408
9.17.4 別名循環(huán) 408
9.17.5 特殊的tcsh別名 408
9.18 TC shell作業(yè)控制 409
9.18.1 jobs命令與listjobs變量 409
9.18.2 前臺與后臺命令 410
9.18.3 作業(yè)調度 411
9.19 在TC shell中顯示變量的值 412
9.19.1 echo命令 412
9.19.2 printf命令 413
9.19.3 花括號與變量 414
9.19.4 大小寫轉換 415
9.20 TC shell內置命令 416
9.20.1 特殊的內置T/TC
shell變量 424
9.20.2 TC shell命令行開關 429
第10章 C shell與TC shell編程 433
10.1 簡介 433
10.2 讀取用戶輸入 435
10.2.1 變量$< 435
10.2.2 根據輸入的字符串
創(chuàng)建詞表 436
10.3 算術運算 436
10.3.1 算術運算符 436
10.3.2 浮點算術運算 438
10.4 腳本調試 438
10.5 命令行參數(shù) 440
10.6 條件結構與流控制 442
10.6.1 測試表達式 442
10.6.2 優(yōu)先級和組合規(guī)則 443
10.6.3 if語句 444
10.6.4 測試未設置或值為
空的變量 445
10.6.5 if/else語句 445
10.6.6 邏輯表達式 446
10.6.7 if語句和單條命令 447
10.6.8 if/else if語句 447
10.6.9 退出狀態(tài)和變量status 448
10.6.10 從shell腳本中退出 448
10.6.11 使用別名創(chuàng)建
錯誤信息 449
10.6.12 在腳本中使用變量
status 450
10.6.13 在條件結構中對
命令求值 450
10.6.14 goto命令 451
10.6.15 C shell文件測試 452
10.6.16 test命令與文件測試 453
10.6.17 條件結構的嵌套 454
10.6.18 TC shell文件測試 455
10.6.19 內置命令filetest(tcsh) 456
10.6.20 新增的TC shell文件
測試操作 457
10.6.21 switch命令 459
10.6.22 here文檔和菜單 461
10.7 循環(huán)命令 463
10.7.1 foreach循環(huán) 463
10.7.2 while循環(huán) 465
10.7.3 repeat命令 466
10.7.4 循環(huán)控制命令 466
10.8 中斷處理 470
10.9 setuid腳本 471
10.10 保存腳本 471
10.11 內置命令 472
第11章 交互式Korn shell 481
11.1 簡介 481
11.2 環(huán)境 482
11.2.1 初始化文件 482
11.2.2 提示符 486
11.2.3 搜索路徑 487
11.2.4 句點命令 487
11.3 命令行 488
11.3.1 命令執(zhí)行的次序 488
11.3.2 退出狀態(tài) 489
11.3.3 含多條命令的命令行
和命令組 490
11.3.4 命令的條件執(zhí)行 490
11.3.5 后臺執(zhí)行的命令 490
11.3.6 命令行歷史 491
11.3.7 命令行編輯 494
11.4 文件名擴展 497
11.5 別名 497
11.5.1 別名列表 498
11.5.2 創(chuàng)建別名 499
11.5.3 刪除別名 499
11.5.4 別名定位 499
11.6 作業(yè)控制 500
11.7 元字符 501
11.8 文件名替換(通配符) 502
11.8.1 星號 503
11.8.2 問號 503
11.8.3 方括號 504
11.8.4 轉義元字符 505
11.8.5 代字符號和連字符擴展 505
11.8.6 新增的ksh元字符 506
11.8.7 noglob變量 507
11.9 變量 507
11.9.1 局部變量 507
11.9.2 環(huán)境變量 509
11.9.3 列出已設置的變量 512
11.9.4 復位變量 514
11.9.5 顯示變量的值 514
11.9.6 轉義序列 516
11.9.7 變量表達式和擴
展修飾符 517
11.9.8 變量子字符串擴展 519
11.9.9 變量屬性:typeset命令 520
11.9.10 位置參數(shù) 521
11.9.11 其他特殊變量 523
11.10 引用 524
11.10.1 反斜杠 524
11.10.2 單引號 524
11.10.3 雙引號 525
11.11 命令替換 525
11.12 函數(shù) 527
11.12.1 函數(shù)的定義 527
11.12.2 函數(shù)和別名 528
11.12.3 列出函數(shù) 529
11.12.4 取消函數(shù)的定義 529
11.13 標準I/O和重定向 530
11.13.1 exec命令和重定向 531
11.13.2 重定向與子shell 532
11.14 管道 533
11.15 time命令 535
11.15.1 time命令 535
11.15.2 TMOUT變量 536
第12章 Korn shell編程 537
12.1 簡介 537
12.2 讀取用戶輸入 539
12.2.1 read命令和文件描述符 541
12.2.2 從整個文件中讀取數(shù)據 542
12.3 算術運算 542
12.3.1 整型數(shù)值 543
12.3.2 使用不同的基數(shù) 544
12.3.3 列出所有整型變量 544
12.3.4 算術運算符和let命令 545
12.4 位置參量和命令行參數(shù) 547
12.5 分支結構和流程控制 549
12.5.1 測試退出狀態(tài)和$?變量 550
12.5.2 老的test命令 551
12.5.3 新的test命令 552
12.5.4 帶有二元操作符的
文件測試 553
12.5.5 邏輯操作符 553
12.5.6 文件測試 554
12.5.7 if命令 555
12.5.8 使用老式風格的
Bourne test 556
12.5.9 使用新式風格的
Korn test 557
12.5.10 使用舊式風格的帶數(shù)字
表達式的Bourne test 557
12.5.11 let命令和數(shù)字測試 557
12.5.12 if/else命令 558
12.5.13 if/elif/else命令 559
12.5.14 exit命令 560
12.5.15 null命令 561
12.5.16 case命令 562
12.6 循環(huán)命令 564
12.6.1 for命令 564
12.6.2 詞表中的變量$*和$@ 566
12.6.3 while 命令 567
12.6.4 until命令 569
12.6.5 select命令和菜單 570
12.6.6 循環(huán)控制命令 573
12.6.7 嵌套循環(huán)和循環(huán)控制 576
12.6.8 I/O 重定向和循環(huán) 577
12.6.9 在后臺運行循環(huán) 578
12.6.10 exec命令和循環(huán) 579
12.6.11 IFS和循環(huán) 580
12.7 數(shù)組 581
12.8 函數(shù) 583
12.8.1 定義函數(shù) 583
12.8.2 列出和取消函數(shù)定義 584
12.8.3 局部變量和返回值 584
12.8.4 導出函數(shù) 586
12.8.5 typeset命令和函數(shù)選項 587
12.9 trap命令 588
12.9.1 偽信號 589
12.9.2 復位信號 589
12.9.3 忽略信號 590
12.9.4 列出信號 590
12.9.5 陷入和函數(shù) 592
12.10 協(xié)作進程 593
12.11 調試 596
12.12 命令行 598
12.13 安全性 603
12.13.1 特權腳本 603
12.13.2 受限shell 603
12.14 內置命令 603
12.15 Korn shell調用參數(shù) 607
第13章 交互式bash shell 619
13.1 簡介 619
13.1.1 bash版本 619
13.1.2 啟動 620
13.2 環(huán)境 621
13.2.1 初始化文件 621
13.2.2 用內置的set和shopt
命令設置bash選項 629
13.2.3 提示符 632
13.2.4 搜索路徑 634
13.2.5 hash命令 634
13.2.6 source或dot命令 635
13.3 命令行 636
13.3.1 處理命令的順序 636
13.3.2 內置命令和help命令 637
13.3.3 改變命令行處理的順序 637
13.3.4 退出狀態(tài) 638
13.3.5 含多條命令的命令行 639
13.3.6 命令編組 640
13.3.7 命令的條件執(zhí)行 640
13.3.8 在后臺執(zhí)行的命令 640
13.4 作業(yè)控制 641
13.5 命令行快捷方式 643
13.5.1 命令和文件名補全 643
13.5.2 歷史 644
13.5.3 從歷史文件訪問命令 644
13.5.4 命令行編輯 650
13.6 別名 654
13.6.1 列出別名 654
13.6.2 創(chuàng)建別名 654
13.6.3 刪除別名 655
13.7 操作目錄棧 655
13.7.1 內置命令dirs 655
13.7.2 pushd命令和popd命令 655
13.8 元字符(通配符) 657
13.9 文件名替換(globbing) 657
13.9.1 星號 658
13.9.2 問號 658
13.9.3 方括號 659
13.9.4 花括號 659
13.9.5 轉義元字符 660
13.9.6 代字符號和連字符擴展 661
13.9.7 控制通配符(globbing) 661
13.9.8 擴展的文件名globbing
(bash 2.x) 662
13.10 變量 663
13.10.1 變量類型 663
13.10.2 命名慣例 663
13.10.3 內置命令declare 664
13.10.4 局部變量和作用域 664
13.10.5 環(huán)境變量 666
13.10.6 復位變量 671
13.10.7 顯示變量值 671
13.10.8 變量擴展修飾符 673
13.10.9 子串的變量擴展 676
13.10.10 位置參量 678
13.10.11 其他特殊變量 679
13.11 引用 680
13.11.1 反斜杠 680
13.11.2 單引號 681
13.11.3 雙引號 682
13.12 命令替換 682
13.13 算術擴展 685
13.14 擴展順序 685
13.15 數(shù)組 685
13.16 函數(shù) 687
13.16.1 定義函數(shù) 688
13.16.2 列出和清除函數(shù) 690
13.17 標準I/O和重定向 690
13.18 管道 694
13.19 shell調用選項 697
13.19.1 set命令和選項 697
13.19.2 shopt命令和選項 699
13.20 shell內置命令 700
第14章 bash shell編程 705
14.1 簡介 705
14.2 讀取用戶輸入 707
14.2.1 變量 707
14.2.2 read命令 707
14.3 算術運算 710
14.3.1 整數(shù)運算(declare
和let命令) 710
14.3.2 浮點數(shù)運算 712
14.4 位置參量和命令行參數(shù) 712
14.4.1 位置參量 712
14.4.2 set命令與位置參量 714
14.5 條件結構和流程控制 717
14.5.1 退出狀態(tài) 717
14.5.2 內置命令test與let 717
14.5.3 if命令 722
14.5.4 if/else命令 726
14.5.5 if/elif/else命令 727
14.5.6 文件測試 729
14.5.7 null命令 731
14.5.8 case命令 733
14.6 循環(huán)命令 735
14.6.1 for命令 735
14.6.2 詞表中的$*和@變量 737
14.6.3 while命令 738
14.6.4 until命令 741
14.6.5 select命令和菜單 742
14.6.6 循環(huán)控制命令 746
14.6.7 I/O重定向與子shell 752
14.6.8 在后臺執(zhí)行循環(huán) 754
14.6.9 IFS和循環(huán) 754
14.7 函數(shù) 755
14.7.1 清除函數(shù) 756
14.7.2 導出函數(shù) 756
14.7.3 函數(shù)的參數(shù)和返回值 756
14.7.4 函數(shù)與source
(或dot)命令 759
14.8 捕獲信號 762
14.8.1 重置信號 763
14.8.2 忽略信號 764
14.8.3 列出陷阱 764
14.8.4 函數(shù)中的信號陷阱 765
14.9 調試 766
14.10 命令行 768
14.10.1 用getopts處理命令
行選項 768
14.10.2 eval命令和命令行
解析 773
14.11 bash的選項 774
14.11.1 shell調用選項 774
14.11.2 set命令及其選項 775
14.11.3 shopt命令及其選項 776
14.12 shell的內置命令 778
14.13 bash shell的習題 780
第15章 調試shell腳本 787
15.1 簡介 787
15.2 風格問題 787
15.3 錯誤類型 788
15.3.1 運行時錯誤 788
15.3.2 命名慣例 788
15.3.3 參數(shù)不足 789
15.3.4 路徑問題 790
15.3.5 shbang行 791
15.3.6 別名問題 792
15.4 可能導致語法錯誤的原因 793
15.4.1 未定義變量與誤寫變量 793
15.4.2 未完成的編程語句 795
15.4.3 5種shell中常見的
錯誤信息 806
15.4.4 邏輯錯誤與健壯性 814
15.5 使用shell選項與set命令
進行跟蹤 821
15.5.1 調試Bourne shell腳本 821
15.5.2 調試C/TC shell腳本 822
15.5.3 調試Korn shell腳本 825
15.5.4 調試bash腳本 827
15.6 小結 830
第16章 系統(tǒng)管理員與shell 831
16.1 簡介 831
16.2 超級用戶 831
16.3 使用su命令變?yōu)槌売脩?nbsp; 832
16.3.1 以根用戶身份運行腳本 834
16.3.2 以root身份運行的
腳本(setuid程序) 835
16.4 引導腳本 837
16.4.1 相關術語 837
16.4.2 一個引導腳本的例子
—— cron工具 841
16.4.3 編寫一個可移植的腳本 845
16.4.4 用戶指定初始化文件 848
16.4.5 系統(tǒng)范圍內的初始化
文件 849
16.5 小結 855
附錄A 常用的UNIX/Linux實用程序 857
附錄B 各種shell的比較 899