第一部分 Linux 命令行
第1章 初識Linux shell 2
1.1 什麼是Linux 2
1.1.1 深入探究Linux內核 3
1.1.2 GNU工具 6
1.1.3 Linux桌麵環境 8
1.2 Linux發行版 12
1.2.1 核心Linux發行版 13
1.2.2 特定用途的Linux發行版 13
1.2.3 Linux LiveCD 14
1.3 小結 15
第2章 走進shell 16
2.1 進入命令行 16
2.1.1 控製颱終端 17
2.1.2 圖形化終端 17
2.2 通過Linux控製颱終端訪問CLI 18
2.3 通過圖形化終端仿真訪問CLI 20
2.4 使用GNOME Terminal仿真器 21
2.4.1 訪問GNOME Terminal 21
2.4.2 菜單欄 22
2.5 使用Konsole Terminal仿真器 25
2.5.1 訪問Konsole Terminal 25
2.5.2 菜單欄 26
2.6 使用xterm終端仿真器 29
2.6.1 訪問xterm 30
2.6.2 命令行參數 30
2.7 小結 32
第3章 基本的bash shell命令 33
3.1 啓動shell 33
3.2 shell提示符 34
3.3 bash手冊 34
3.4 瀏覽文件係統 37
3.4.1 Linux文件係統 37
3.4.2 遍曆目錄 40
3.5 文件和目錄列錶 42
3.5.1 基本列錶功能 42
3.5.2 顯示長列錶 44
3.5.3 過濾輸齣列錶 45
3.6 處理文件 46
3.6.1 創建文件 47
3.6.2 復製文件 47
3.6.3 製錶鍵自動補全 50
3.6.4 鏈接文件 50
3.6.5 重命名文件 52
3.6.6 刪除文件 54
3.7 處理目錄 55
3.7.1 創建目錄 55
3.7.2 刪除目錄 55
3.8 查看文件內容 58
3.8.1 查看文件類型 58
3.8.2 查看整個文件 59
3.8.3 查看部分文件 61
3.9 小結 63
第4章 更多的bash shell命令 64
4.1 監測程序 64
4.1.1 探查進程 64
4.1.2 實時監測進程 70
4.1.3 結束進程 72
4.2 監測磁盤空間 73
4.2.1 掛載存儲媒體 73
4.2.2 使用df命令 76
4.2.3 使用du命令 77
4.3 處理數據文件 78
4.3.1 排序數據 78
4.3.2 搜索數據 81
4.3.3 壓縮數據 83
4.3.4 歸檔數據 84
4.4 小結 85
第5章 理解shell 86
5.1 shell的類型 86
5.2 shell的父子關係 88
5.2.1 進程列錶 91
5.2.2 彆齣心裁的子shell用法 93
5.3 理解shell的內建命令 96
5.3.1 外部命令 96
5.3.2 內建命令 97
5.4 小結 101
第6章 使用Linux環境變量 103
6.1 什麼是環境變量 103
6.1.1 全局環境變量 104
6.1.2 局部環境變量 105
6.2 設置用戶定義變量 106
6.2.1 設置局部用戶定義變量 106
6.2.2 設置全局環境變量 107
6.3 刪除環境變量 109
6.4 默認的shell環境變量 110
6.5 設置PATH環境變量 113
6.6 定位係統環境變量 114
6.6.1 登錄shell 115
6.6.2 交互式shell進程 119
6.6.3 非交互式shell 120
6.6.4 環境變量持久化 121
6.7 數組變量 121
6.8 小結 122
第7章 理解Linux文件權限 124
7.1 Linux的安全性 124
7.1.1 /etc/passwd文件 124
7.1.2 /etc/shadow文件 126
7.1.3 添加新用戶 127
7.1.4 刪除用戶 129
7.1.5 修改用戶 130
7.2 使用Linux組 132
7.2.1 /etc/group文件 133
7.2.2 創建新組 133
7.2.3 修改組 134
7.3 理解文件權限 135
7.3.1 使用文件權限符 135
7.3.2 默認文件權限 136
7.4 改變安全性設置 138
7.4.1 改變權限 138
7.4.2 改變所屬關係 139
7.5 共享文件 140
7.6 小結 142
第8章 管理文件係統 143
8.1 探索Linux文件係統 143
8.1.1 基本的Linux文件係統 143
8.1.2 日誌文件係統 145
8.1.3 寫時復製文件係統 147
8.2 操作文件係統 147
8.2.1 創建分區 147
8.2.2 創建文件係統 151
8.2.3 文件係統的檢查與修復 153
8.3 邏輯捲管理 154
8.3.1 邏輯捲管理布局 154
8.3.2 Linux中的LVM 155
8.3.3 使用Linux LVM 156
8.4 小結 162
第9章 安裝軟件程序 163
9.1 包管理基礎 163
9.2 基於Debian的係統 164
9.2.1 用aptitude管理軟件包 164
9.2.2 用aptitude安裝軟件包 166
9.2.3 用aptitude更新軟件 168
9.2.4 用aptitude卸載軟件 169
9.2.5 aptitude倉庫 169
9.3 基於Red Hat的係統 171
9.3.1 列齣已安裝包 171
9.3.2 用yum安裝軟件 173
9.3.3 用yum更新軟件 174
9.3.4 用yum卸載軟件 174
9.3.5 處理損壞的包依賴關係 175
9.3.6 yum軟件倉庫 176
9.4 從源碼安裝 177
9.5 小結 180
第10章 使用編輯器 181
10.1 vim編輯器 181
10.1.1 檢查vim軟件包 181
10.1.2 vim基礎 183
10.1.3 編輯數據 185
10.1.4 復製和粘貼 185
10.1.5 查找和替換 186
10.2 nano編輯器 187
10.3 emacs編輯器 188
10.3.1 檢查emacs軟件包 189
10.3.2 在控製颱中使用emacs 190
10.3.3 在GUI環境中使用emacs 195
10.4 KDE係編輯器 196
10.4.1 KWrite編輯器 196
10.4.2 Kate編輯器 200
10.5 GNOME編輯器 202
10.5.1 啓動gedit 203
10.5.2 基本的gedit功能 203
10.5.3 設定偏好設置 204
10.6 小結 206
第二部分 shell腳本編程基礎
第11章 構建基本腳本 210
11.1 使用多個命令 210
11.2 創建shell腳本文件 211
11.3 顯示消息 212
11.4 使用變量 214
11.4.1 環境變量 214
11.4.2 用戶變量 215
11.4.3 命令替換 216
11.5 重定嚮輸入和輸齣 218
11.5.1 輸齣重定嚮 218
11.5.2 輸入重定嚮 219
11.6 管道 220
11.7 執行數學運算 222
11.7.1 expr命令 223
11.7.2 使用方括號 224
11.7.3 浮點解決方案 225
11.8 退齣腳本 228
11.8.1 查看退齣狀態碼 228
11.8.2 exit命令 229
11.9 小結 231
第12章 使用結構化命令 232
12.1 使用if-then語句 232
12.2 if-then-else語句 235
12.3 嵌套if 235
12.4 test命令 238
12.4.1 數值比較 240
12.4.2 字符串比較 242
12.4.3 文件比較 246
12.5 復閤條件測試 254
12.6 if-then的高級特性 255
12.6.1 使用雙括號 255
12.6.2 使用雙方括號 256
12.7 case命令 257
12.8 小結 258
第13章 更多的結構化命令 260
13.1 for命令 260
13.1.1 讀取列錶中的值 261
13.1.2 讀取列錶中的復雜值 262
13.1.3 從變量讀取列錶 263
13.1.4 從命令讀取值 264
13.1.5 更改字段分隔符 265
13.1.6 用通配符讀取目錄 266
13.2 C語言風格的for命令 268
13.2.1 C語言的for命令 268
13.2.2 使用多個變量 269
13.3 while命令 270
13.3.1 while的基本格式 270
13.3.2 使用多個測試命令 271
13.4 until命令 272
13.5 嵌套循環 274
13.6 循環處理文件數據 276
13.7 控製循環 277
13.7.1 break命令 277
13.7.2 continue命令 280
13.8 處理循環的輸齣 282
13.9 實例 283
13.9.1 查找可執行文件 284
13.9.2 創建多個用戶賬戶 285
13.10 小結 286
第14章 處理用戶輸入 287
14.1 命令行參數 287
14.1.1 讀取參數 287
14.1.2 讀取腳本名 289
14.1.3 測試參數 291
14.2 特殊參數變量 292
14.2.1 參數統計 292
14.2.2 抓取所有的數據 294
14.3 移動變量 295
14.4 處理選項 296
14.4.1 查找選項 297
14.4.2 使用getopt命令 300
14.4.3 使用更高級的getopts 302
14.5 將選項標準化 305
14.6 獲得用戶輸入 306
14.6.1 基本的讀取 306
14.6.2 超時 307
14.6.3 隱藏方式讀取 308
14.6.4 從文件中讀取 309
14.7 小結 309
第15章 呈現數據 311
15.1 理解輸入和輸齣 311
15.1.1 標準文件描述符 311
15.1.2 重定嚮錯誤 313
15.2 在腳本中重定嚮輸齣 315
15.2.1 臨時重定嚮 315
15.2.2 永久重定嚮 316
15.3 在腳本中重定嚮輸入 317
15.4 創建自己的重定嚮 317
15.4.1 創建輸齣文件描述符 318
15.4.2 重定嚮文件描述符 318
15.4.3 創建輸入文件描述符 319
15.4.4 創建讀寫文件描述符 320
15.4.5 關閉文件描述符 321
15.5 列齣打開的文件描述符 322
15.6 阻止命令輸齣 323
15.7 創建臨時文件 324
15.7.1 創建本地臨時文件 324
15.7.2 在/tmp目錄創建臨時文件 325
15.7.3 創建臨時目錄 326
15.8 記錄消息 327
15.9 實例 328
15.10 小結 330
第16章 控製腳本 331
16.1 處理信號 331
16.1.1 重溫Linux信號 331
16.1.2 生成信號 332
16.1.3 捕獲信號 334
16.1.4 捕獲腳本退齣 335
16.1.5 修改或移除捕獲 335
16.2 以後颱模式運行腳本 338
16.2.1 後颱運行腳本 338
16.2.2 運行多個後颱作業 340
16.3 在非控製颱下運行腳本 341
16.4 作業控製 342
16.4.1 查看作業 342
16.4.2 重啓停止的作業 344
16.5 調整謙讓度 345
16.5.1 nice命令 345
16.5.2 renice命令 346
16.6 定時運行作業 346
16.6.1 用at命令來計劃執行作業 347
16.6.2 安排需要定期執行的腳本 349
16.6.3 使用新shell啓動腳本 352
16.7 小結 353
第三部分 高級shell腳本編程
第17章 創建函數 356
17.1 基本的腳本函數 356
17.1.1 創建函數 357
17.1.2 使用函數 357
17.2 返迴值 359
17.2.1 默認退齣狀態碼 359
17.2.2 使用return命令 360
17.2.3 使用函數輸齣 361
17.3 在函數中使用變量 362
17.3.1 嚮函數傳遞參數 362
17.3.2 在函數中處理變量 364
17.4 數組變量和函數 366
17.4.1 嚮函數傳數組參數 366
17.4.2 從函數返迴數組 368
17.5 函數遞歸 369
17.6 創建庫 370
17.7 在命令行上使用函數 371
17.7.1 在命令行上創建函數 372
17.7.2 在.bashrc文件中定義函數 372
17.8 實例 374
17.8.1 下載及安裝 374
17.8.2 構建庫 374
17.8.3 shtool庫函數 376
17.8.4 使用庫 376
17.9 小結 377
第18章 圖形化桌麵環境中的腳本編程 378
18.1 創建文本菜單 378
18.1.1 創建菜單布局 379
18.1.2 創建菜單函數 380
18.1.3 添加菜單邏輯 380
18.1.4 整閤shell腳本菜單 381
18.1.5 使用select命令 382
18.2 製作窗口 384
18.2.1 dialog包 384
18.2.2 dialog選項 389
18.2.3 在腳本中使用dialog命令 391
18.3 使用圖形 393
18.3.1 KDE環境 393
18.3.2 GNOME環境 396
18.4 小結 400
第19章 初識sed和gawk 401
19.1 文本處理 401
19.1.1 sed編輯器 401
19.1.2 gawk程序 404
19.2 sed編輯器基礎 410
19.2.1 更多的替換選項 410
19.2.2 使用地址 411
19.2.3 刪除行 414
19.2.4 插入和附加文本 415
19.2.5 修改行 417
19.2.6 轉換命令 418
19.2.7 迴顧打印 419
19.2.8 使用sed處理文件 421
19.3 小結 423
第20章 正則錶達式 424
20.1 什麼是正則錶達式 424
20.1.1 定義 424
20.1.2 正則錶達式的類型 425
20.2 定義BRE模式 426
20.2.1 純文本 426
20.2.2 特殊字符 427
20.2.3 錨字符 428
20.2.4 點號字符 430
20.2.5 字符組 430
20.2.6 排除型字符組 432
20.2.7 區間 433
20.2.8 特殊的字符組 434
20.2.9 星號 434
20.3 擴展正則錶達式 436
20.3.1 問號 436
20.3.2 加號 437
20.3.3 使用花括號 437
20.3.4 管道符號 438
20.3.5 錶達式分組 439
20.4 正則錶達式實戰 439
20.4.1 目錄文件計數 440
20.4.2 驗證電話號碼 441
20.4.3 解析郵件地址 443
20.5 小結 444
第21章 sed進階 445
21.1 多行命令 445
21.1.1 next命令 446
21.1.2 多行刪除命令 449
21.1.3 多行打印命令 449
21.2 保持空間 450
21.3 排除命令 451
21.4 改變流 454
21.4.1 分支 454
21.4.2 測試 455
21.5 模式替代 456
21.5.1 &符號 457
21.5.2 替代單獨的單詞 457
21.6 在腳本中使用sed 458
21.6.1 使用包裝腳本 458
21.6.2 重定嚮sed的輸齣 459
21.7 創建sed實用工具 460
21.7.1 加倍行間距 460
21.7.2 對可能含有空白行的文件加倍行間距 460
21.7.3 給文件中的行編號 461
21.7.4 打印末尾行 462
21.7.5 刪除行 463
21.7.6 刪除HTML標簽 466
21.8 小結 467
第22章 gawk進階 469
22.1 使用變量 469
22.1.1 內建變量 469
22.1.2 自定義變量 474
22.2 處理數組 476
22.2.1 定義數組變量 476
22.2.2 遍曆數組變量 477
22.2.3 刪除數組變量 478
22.3 使用模式 478
22.3.1 正則錶達式 478
22.3.2 匹配操作符 479
22.3.3 數學錶達式 480
22.4 結構化命令 480
22.4.1 if語句 480
22.4.2 while語句 482
22.4.3 do-while語句 483
22.4.4 for語句 484
22.5 格式化打印 484
22.6 內建函數 487
22.6.1 數學函數 487
22.6.2 字符串函數 488
22.6.3 時間函數 490
22.7 自定義函數 490
22.7.1 定義函數 490
22.7.2 使用自定義函數 491
22.7.3 創建函數庫 491
22.8 實例 492
22.9 小結 493
第23章 使用其他shell 495
23.1 什麼是dash shell 495
23.2 dash shell的特性 496
23.2.1 dash命令行參數 496
23.2.2 dash環境變量 497
23.2.3 dash內建命令 499
23.3 dash腳本編程 500
23.3.1 創建dash腳本 500
23.3.2 不能使用的功能 500
23.4 zsh shell 502
23.5 zsh shell的組成 503
23.5.1 shell選項 503
23.5.2 內建命令 504
23.6 zsh腳本編程 508
23.6.1 數學運算 508
23.6.2 結構化命令 509
23.6.3 函數 510
23.7 小結 510
第四部分 創建實用的腳本
第24章 編寫簡單的腳本實用工具 514
24.1 歸檔 514
24.2 管理用戶賬戶 523
24.2.1 需要的功能 523
24.2.2 創建腳本 530
24.2.3 運行腳本 535
24.3 監測磁盤空間 537
24.3.1 需要的功能 537
24.3.2 創建腳本 540
24.3.3 運行腳本 541
24.4 小結 542
第25章 創建與數據庫、Web及電子
郵件相關的腳本 543
25.1 MySQL數據庫 543
25.1.1 使用MySQL 543
25.1.2 在腳本中使用數據庫 552
25.2 使用Web 555
25.2.1 安裝Lynx 556
25.2.2 lynx命令行 557
25.2.3 Lynx配置文件 558
25.2.4 從Lynx中獲取數據 559
25.3 使用電子郵件 561
25.4 小結 564
第26章 一些小有意思的腳本 565
26.1 發送消息 565
26.1.1 功能分析 565
26.1.2 創建腳本 568
26.2 獲取格言 573
26.2.1 功能分析 574
26.2.2 創建腳本 577
26.3 編造藉口 583
26.3.1 功能分析 583
26.3.2 創建腳本 586
26.4 小結 587
附錄A bash命令快速指南 589
附錄B sed和gawk快速指南 597
· · · · · · (
收起)