內容介紹
《Linux命令行與shell腳本編程大全(第2版)》是一本關於Linux命令行與shell腳本編程的全面教程。本書主要內容包括:在命令行上工作並學習基本的shell命令;編寫shell腳本來實現日常工作和報告的自動化;控制如何以及何時在系統上運行she¨腳本:學習shell腳本中運算元據的高級方法;修改腳本適應圖形化桌面和其他Linux shell;從網站提取數據並在系統間傳送數據:創建有專業水準的shell腳本,適應現實環境的挑戰。
《Linux命令行與shell腳本編程大全(第2版)》不僅涵蓋了詳盡的動手教程和現實世界中的實用信息,還提供了與所學內容相關的參考信息和背景資料。
作者介紹
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