下載下傳位址:網盤下載下傳
内容簡介 · · · · · ·
本書是一本關于Linux 指令行與shell 腳本程式設計的全面教程。全書分為四部分:第一部分介紹Linuxshell 指令行;第二部分介紹shell 腳本程式設計基礎;第三部分深入探讨shell 腳本程式設計的進階内容;第四部分介紹如何在現實環境中使用shell 腳本。本書不僅涵蓋了詳盡的動手教程和現實世界中的實用資訊,還提供了與所學内容相關的參考資訊和背景資料。
本書内容全面,語言簡練,示例豐富,适合于Linux 系統管理者及Linux 愛好者閱讀參考。
作者簡介 · · · · · ·
Richard Blum 系統和網絡管理者,已經在IT行業工作了22年多。他管理過UNIX、Linux、Novell和微軟伺服器,用Linux shell腳本進行過自動化網絡監測,并在大多數常見的Linux shell環境中寫過腳本。他還是一名網絡課程講師,美國各地的多所大學和學院都采用他的Linux基礎課程。除本書外,Richard還著有Professional Linux Programming等書。
Christine Bresnahan 系統管理者,已經在IT行業工作了近30年。目前在印第安納波利斯市的常春藤技術社群學院擔任兼職教授,講授Linux系統管理、Linux安全和Windows安全等課程。
武海峰 Linux系統工程師,興趣集中在GNU/Linux和移動互聯應用,熱衷于開源軟體。曾在商業Linux廠商任職,從事移動裝置作業系統內建和商業Linux發行版內建工作。
目錄 · · · · · ·
目 錄
第一部分 Linux 指令行
第1章 初識Linux shell 2
1.1 什麼是Linux 2
1.1.1 深入探究Linux核心 3
1.1.2 GNU工具鍊 10
1.1.3 Linux桌面環境 11
1.2 Linux發行版 16
1.2.1 核心Linux發行版 16
1.2.2 專業Linux發行版 17
1.2.3 Linux LiveCD 17
1.3 小結 19
第2章 走進shell 20
2.1 終端模拟 20
2.1.1 圖形功能 21
2.1.2 鍵盤 24
2.2 terminfo資料庫 25
2.3 Linux控制台 28
2.4 xterm終端 29
2.4.1 指令行參數 30
2.4.2 xterm主菜單 31
2.4.3 VT選項菜單 32
2.4.4 VT字型菜單 34
2.5 Konsole終端 36
2.5.1 指令行參數 36
2.5.2 标簽式視窗會話 37
2.5.3 配置檔案 38
2.5.4 菜單欄 39
2.6 GNOME Terminal 43
2.6.1 指令行參數 43
2.6.2 标簽 43
2.6.3 菜單欄 44
2.7 小結 47
第3章 基本的bash shell指令 48
3.1 啟動shell 48
3.2 shell提示符 49
3.3 bash手冊 51
3.4 浏覽檔案系統 52
3.4.1 Linux檔案系統 52
3.4.2 周遊目錄 54
3.5 檔案和目錄清單 56
3.5.1 基本清單功能 56
3.5.2 修改輸出資訊 57
3.5.3 完整的參數清單 58
3.5.4 過濾輸出清單 60
3.6 處理檔案 61
3.6.1 建立檔案 61
3.6.2 複制檔案 61
3.6.3 連結檔案 63
3.6.4 重命名檔案 65
3.6.5 删除檔案 65
3.7 處理目錄 67
3.7.1 建立目錄 67
3.7.2 删除目錄 67
3.8 檢視檔案内容 68
3.8.1 檢視檔案統計資訊 68
3.8.2 檢視檔案類型 69
3.8.3 檢視整個檔案 69
3.8.4 檢視部分檔案 72
3.9 小結 73
第4章 更多的bash shell指令 75
4.1 監測程式 75
4.1.1 探查程序 75
4.1.2 實時監測程序 82
4.1.3 結束程序 84
4.2 監測磁盤空間 85
4.2.1 挂載存儲媒體 86
4.2.2 使用df指令 89
4.2.3 使用du指令 89
4.3 處理資料檔案 90
4.3.1 排序資料 91
4.3.2 搜尋資料 94
4.3.3 壓縮資料 96
4.3.4 歸檔資料 99
4.4 小結 100
第5章 使用Linux環境變量 101
5.1 什麼是環境變量 101
5.1.1 全局環境變量 102
5.1.2 局部環境變量 103
5.2 設定環境變量 106
5.2.1 設定局部環境變量 106
5.2.2 設定全局環境變量 107
5.3 删除環境變量 107
5.4 預設shell環境變量 108
5.5 設定PATH環境變量 111
5.6 定位系統環境變量 112
5.6.1 登入shell 112
5.6.2 互動式shell 116
5.6.3 非互動式shell 118
5.7 可變數組 118
5.8 使用指令别名 119
5.9 小結 120
第6章 了解Linux檔案權限 122
6.1 Linux的安全性 122
6.1.1 /etc/passwd檔案 122
6.1.2 /etc/shadow檔案 124
6.1.3 添加新使用者 125
6.1.4 删除使用者 127
6.1.5 修改使用者 128
6.2 使用Linux組 130
6.2.1 /etc/group檔案 131
6.2.2 建立新組 131
6.2.3 修改組 132
6.3 了解檔案權限 133
6.3.1 使用檔案權限符 133
6.3.2 預設檔案權限 134
6.4 改變安全性設定 136
6.4.1 改變權限 136
6.4.2 改變所屬關系 137
6.5 共享檔案 138
6.6 小結 139
第7章 管理檔案系統 141
7.1 探索Linux檔案系統 141
7.1.1 基本的Linux檔案系統 141
7.1.2 日志檔案系統 142
7.1.3 擴充的Linux日志檔案系統 143
7.2 操作檔案系統 145
7.2.1 建立分區 145
7.2.2 建立檔案系統 147
7.2.3 如果出錯了 149
7.3 邏輯卷管理器 150
7.3.1 邏輯卷管理布局 150
7.3.2 Linux中的LVM 151
7.3.3 使用Linux LVM 153
7.4 小結 157
第8章 安裝軟體程式 158
8.1 包管理基礎 158
8.2 基于Debian的系統 159
8.2.1 用aptitude管理軟體包 159
8.2.2 用aptitude安裝軟體包 161
8.2.3 用aptitude更新軟體 163
8.2.4 用aptitude解除安裝軟體 164
8.2.5 aptitude庫 164
8.3 基于Red Hat的系統 166
8.3.1 列出已安裝包 166
8.3.2 用yum安裝軟體 167
8.3.3 用yum更新軟體 168
8.3.4 用yum解除安裝軟體 169
8.3.5 處理損壞的包依賴關系 169
8.3.6 yum軟體庫 171
8.4 從源碼安裝 172
8.5 小結 174
第9章 使用編輯器 176
9.1 Vim編輯器 176
9.1.1 Vim基礎 176
9.1.2 編輯資料 178
9.1.3 複制和粘貼 179
9.1.4 查找和替換 180
9.2 Emacs編輯器 180
9.2.1 在控制台上使用Emacs 180
9.2.2 在X Window中使用Emacs 185
9.3 KDE系編輯器 186
9.3.1 KWrite編輯器 186
9.3.2 Kate編輯器 190
9.4 GNOME編輯器 192
9.4.1 啟動gedit 192
9.4.2 基本的gedit功能 193
9.4.3 設定偏好設定 194
9.5 小結 196
第二部分 shell腳本程式設計基礎
第10章 建構基本腳本 200
10.1 使用多個指令 200
10.2 建立shell腳本檔案 201
10.3 顯示消息 202
10.4 使用變量 203
10.4.1 環境變量 204
10.4.2 使用者變量 205
10.4.3 反引号 206
10.5 重定向輸入和輸出 207
10.5.1 輸出重定向 208
10.5.2 輸入重定向 208
10.6 管道 209
10.7 執行數學運算 212
10.7.1 expr指令 212
10.7.2 使用方括号 214
10.7.3 浮點解決方案 215
10.8 退出腳本 218
10.8.1 檢視退出狀态碼 218
10.8.2 exit指令 219
10.9 小結 221
第11章 使用結構化指令 222
11.1 使用if-then語句 222
11.2 if-then-else語句 224
11.3 嵌套if 225
11.4 test指令 226
11.4.1 數值比較 227
11.4.2 字元串比較 228
11.4.3 檔案比較 232
11.5 複合條件測試 239
11.6 if-then的進階特性 240
11.6.1 使用雙尖括号 240
11.6.2 使用雙方括号 241
11.7 case指令 242
11.8 小結 243
第12章 更多的結構化指令 245
12.1 for指令 245
12.1.1 讀取清單中的值 246
12.1.2 讀取清單中的複雜值 247
12.1.3 從變量讀取清單 248
12.1.4 從指令讀取值 249
12.1.5 更改字段分隔符 250
12.1.6 用通配符讀取目錄 251
12.2 C語言風格的for指令 253
12.2.1 C語言的for指令 253
12.2.2 使用多個變量 255
12.3 while指令 255
12.3.1 while的基本格式 255
12.3.2 使用多個測試指令 256
12.4 until指令 258
12.5 嵌套循環 259
12.6 循環處理檔案資料 261
12.7 控制循環 262
12.7.1 break指令 262
12.7.2 continue指令 265
12.8 處理循環的輸出 267
12.9 小結 269
第13章 處理使用者輸入 270
13.1 指令行參數 270
13.1.1 讀取參數 270
13.1.2 讀取程式名 272
13.1.3 測試參數 274
13.2 特殊參數變量 274
13.2.1 參數計數 274
13.2.2 抓取所有的資料 276
13.3 移動變量 277
13.4 處理選項 278
13.4.1 查找選項 279
13.4.2 使用getopt指令 282
13.4.3 使用更進階的getopts 284
13.5 将選項标準化 286
13.6 獲得使用者輸入 287
13.6.1 基本的讀取 287
13.6.2 逾時 289
13.6.3 隐藏方式讀取 290
13.6.4 從檔案中讀取 290
13.7 小結 291
第14章 呈現資料 293
14.1 了解輸入和輸出 293
14.1.1 标準檔案描述符 293
14.1.2 重定向錯誤 295
14.2 在腳本中重定向輸出 297
14.2.1 臨時重定向 297
14.2.2 永久重定向 298
14.3 在腳本中重定向輸入 299
14.4 建立自己的重定向 299
14.4.1 建立輸出檔案描述符 300
14.4.2 重定向檔案描述符 300
14.4.3 建立輸入檔案描述符 301
14.4.4 建立讀寫檔案描述符 302
14.4.5 關閉檔案描述符 303
14.5 列出打開的檔案描述符 304
14.6 阻止指令輸出 305
14.7 建立臨時檔案 306
14.7.1 建立本地臨時檔案 306
14.7.2 在/tmp目錄建立臨時檔案 308
14.7.3 建立臨時目錄 308
14.8 記錄消息 309
14.9 小結 310
第15章 控制腳本 312
15.1 處理信号 312
15.1.1 重溫Linux信号 312
15.1.2 産生信号 313
15.1.3 捕捉信号 314
15.1.4 捕捉腳本的退出 315
15.1.5 移除捕捉 316
15.2 以背景模式運作腳本 317
15.2.1 背景運作腳本 317
15.2.2 運作多個背景作業 318
15.2.3 退出終端 319
15.3 在非控制台下運作腳本 319
15.4 作業控制 320
15.4.1 檢視作業 320
15.4.2 重新開機停止的作業 322
15.5 調整謙讓度 323
15.5.1 nice指令 323
15.5.2 renice指令 324
15.6 定時運作作業 324
15.6.1 用at指令來計劃執行作業 325
15.6.2 計劃定期執行腳本 328
15.7 啟動時運作 330
15.7.1 開機時運作腳本 330
15.7.2 在新shell中啟動 332
15.8 小結 333
第三部分 進階shell腳本程式設計
第16章 建立函數 336
16.1 基本的腳本函數 336
16.1.1 建立函數 337
16.1.2 使用函數 337
16.2 傳回值 339
16.2.1 預設退出狀态碼 339
16.2.2 使用return指令 340
16.2.3 使用函數輸出 341
16.3 在函數中使用變量 342
16.3.1 向函數傳遞參數 342
16.3.2 在函數中處理變量 344
16.4 數組變量和函數 346
16.4.1 向函數傳數組參數 346
16.4.2 從函數傳回數組 348
16.5 函數遞歸 349
16.6 建立庫 350
16.7 在指令行上使用函數 351
16.7.1 在指令行上建立函數 352
16.7.2 在.bashrc檔案中定義函數 352
16.8 小結 354
第17章 圖形化桌面上的腳本程式設計 355
17.1 建立文本菜單 355
17.1.1 建立菜單布局 356
17.1.2 建立菜單函數 356
17.1.3 添加菜單邏輯 357
17.1.4 整合shell腳本菜單 358
17.1.5 使用select指令 359
17.2 使用視窗 360
17.2.1 dialog包 361
17.2.2 dialog選項 366
17.2.3 在腳本中使用dialog指令 368
17.3 使用圖形 369
17.3.1 KDE環境 369
17.3.2 GNOME環境 372
17.4 小結 376
第18章 初識sed和gawk 377
18.1 文本處理 377
18.1.1 sed編輯器 377
18.1.2 gawk程式 380
18.2 sed編輯器基礎 385
18.2.1 更多的替換選項 385
18.2.2 使用位址 387
18.2.3 删除行 389
18.2.4 插入和附加文本 391
18.2.5 修改行 392
18.2.6 轉換指令 393
18.2.7 回顧列印 394
18.2.8 用sed和檔案一起工作 396
18.3 小結 398
第19章 正規表達式 399
19.1 什麼是正規表達式 399
19.1.1 定義 399
19.1.2 正規表達式的類型 400
19.2 定義BRE模式 401
19.2.1 純文字 401
19.2.2 特殊字元 402
19.2.3 錨字元 403
19.2.4 點字元 405
19.2.5 字元組 405
19.2.6 排除字元組 407
19.2.7 使用區間 408
19.2.8 特殊字元組 409
19.2.9 星号 409
19.3 擴充正規表達式 411
19.3.1 問号 411
19.3.2 加号 412
19.3.3 使用花括号 412
19.3.4 管道符号 413
19.3.5 聚合表達式 414
19.4 實用中的正規表達式 414
19.4.1 目錄檔案計數 415
19.4.2 驗證電話号碼 416
19.4.3 解析郵件位址 417
19.5 小結 419
第20章 sed進階 420
20.1 多行指令 420
20.1.1 next指令 421
20.1.2 多行删除指令 424
20.1.3 多行列印指令 424
20.2 保持空間 425
20.3 排除指令 426
20.4 改變流 428
20.4.1 跳轉 429
20.4.2 測試 430
20.5 模式替代 431
20.5.1 and符号 431
20.5.2 替換單獨的單詞 432
20.6 在腳本中使用sed 433
20.6.1 使用包裝腳本 433
20.6.2 重定向sed的輸出 434
20.7 建立sed實用工具 434
20.7.1 加倍行間距 434
20.7.2 對可能含有空白行的檔案加倍行間距 435
20.7.3 給檔案中的行編号 436
20.7.4 列印末尾行 437
20.7.5 删除行 437
20.7.6 删除HTML标簽 439
20.8 小結 441
第21章 gawk進階 442
21.1 使用變量 442
21.1.1 内建變量 442
21.1.2 自定義變量 447
21.2 處理數組 449
21.2.1 定義數組變量 449
21.2.2 周遊數組變量 450
21.2.3 删除數組變量 451
21.3 使用模式 451
21.3.1 正規表達式 451
21.3.2 比對操作符 452
21.3.3 數學表達式 452
21.4 結構化指令 453
21.4.1 if語句 453
21.4.2 while語句 455
21.4.3 do-while語句 456
21.4.4 for語句 457
21.5 格式化列印 457
21.6 内建函數 460
21.6.1 數學函數 460
21.6.2 字元串函數 461
21.6.3 時間函數 463
21.7 自定義函數 463
21.7.1 定義函數 463
21.7.2 使用自定義函數 464
21.7.3 建立函數庫 464
21.8 小結 465
第22章 使用其他shell 467
22.1 什麼是dash shell 467
22.2 dash shell的特性 468
22.2.1 dash指令行參數 468
22.2.2 dash環境變量 469
22.2.3 dash内建指令 471
22.3 dash腳本程式設計 472
22.3.1 建立dash腳本 473
22.3.2 不能使用的功能 473
22.4 zsh shell 477
22.5 zsh shell的組成 478
22.5.1 shell選項 478
22.5.2 内建指令 480
22.6 zsh腳本程式設計 485
22.6.1 數學運算 485
22.6.2 結構化指令 487
22.6.3 函數 487
22.7 小結 489
第四部分 進階shell腳本程式設計主題
第23章 使用資料庫 492
23.1 MySQL資料庫 492
23.1.1 安裝MySQL 492
23.1.2 MySQL用戶端界面 494
23.1.3 建立MySQL資料庫對象 498
23.2 PostgreSQL資料庫 500
23.2.1 安裝PostgreSQL 501
23.2.2 PostgreSQL指令行界面 501
23.2.3 建立PostgreSQL資料庫對象 503
23.3 使用資料表 505
23.3.1 建立資料表 505
23.3.2 插入和删除資料 507
23.3.3 查詢資料 508
23.4 在腳本中使用資料庫 509
23.4.1 連接配接到資料庫 509
23.4.2 向伺服器發送指令 511
23.4.3 格式化資料 514
23.5 小結 516
第24章 使用Web 517
24.1 Lynx程式 517
24.1.1 安裝Lynx 518
24.1.2 lynx指令行 518
24.1.3 Lynx配置檔案 523
24.1.4 Lynx環境變量 524
24.1.5 從Lynx中抓取資料 524
24.2 cURL程式 527
24.2.1 安裝cURL 527
24.2.2 探索cURL 527
24.3 使用zsh處理網絡 528
24.3.1 TCP子產品 528
24.3.2 用戶端/伺服器模式 529
24.3.3 使用zsh進行C/S程式設計 530
24.4 小結 533
第25章 使用E-mail 534
25.1 Linux E-mail基礎 534
25.1.1 Linux中的E-mail 534
25.1.2 郵件傳送代理 535
25.1.3 郵件投遞代理 536
25.1.4 郵件使用者代理 537
25.2 建立伺服器 540
25.2.1 sendmail 541
25.2.2 Postfix 543
25.3 使用Mailx發送消息 545
25.4 Mutt程式 548
25.4.1 安裝Mutt 548
25.4.2 Mutt指令行 548
25.4.3 使用Mutt 549
25.5 小結 551
第26章 編寫腳本實用工具 552
26.1 監測磁盤空間 552
26.1.1 需要的功能 552
26.1.2 建立腳本 555
26.1.3 運作腳本 556
26.2 進行備份 557
26.3 管理使用者賬戶 563
26.3.1 需要的功能 563
26.3.2 建立腳本 569
26.4 小結 575
第27章 shell腳本程式設計進階 576
27.1 監測系統統計資料 576
27.1.1 系統快照報告 576
27.1.2 系統統計資料報告 582
27.2 問題跟蹤資料庫 589
27.2.1 建立資料庫 589
27.2.2 記錄問題 591
27.2.3 更新問題 594
27.2.4 查找問題 599
27.3 小結 602
附錄A bash指令快速指南 604
附錄B sed和gawk快速指南 611
下載下傳位址:網盤下載下傳
轉載于:https://www.cnblogs.com/long12365/p/9732031.html