本書全面、系統(tǒng)地介紹 Shell 的各個知識點及其在企業(yè)環(huán)境中的具體應用。本書主要內(nèi)容包括 Shell腳本編程、Shell變量與字符串、Shell正則表達式與文本處理、Shell條件測試和循環(huán)語句、Shell數(shù)組與函數(shù)、Linux自動化運維等。
本書適合 Linux 系統(tǒng)管理員閱讀,也適合軟件開發(fā)人員、軟件測試人員及數(shù)據(jù)庫管理人員學習,也可以作為大專院校計算機相關專業(yè)師生的學習用書以及培訓機構的教材。
系統(tǒng)地介紹 Shell 的各個知識點及其在企業(yè)環(huán)境中的具體應用,著重講解shell編程及相關工具在Linux自動化運維管理中的實際應用。
內(nèi)容涵蓋: Shell腳本編程、Shell變量與字符串、Shell正則表達式與文本處理、Shell條件測試和循環(huán)語句、Shell數(shù)組與函數(shù)、Linux自動化運維等。
掃碼即刻獲取讀者交流服務號,作者隨時為您解答在學習過程中的重點、難點操作技巧。
韓艷威,從事Linux運維工作多年,在大中型互聯(lián)網(wǎng)公司擔任過Linux技術經(jīng)理、大數(shù)據(jù)架構師等職位,不僅對Linux自動化運維、Linux性能監(jiān)控與調(diào)優(yōu)、開源Hadoop及阿里云大數(shù)據(jù)等有較為深刻的認知,而且對Python、Java、Scala等編程語言有深刻的理解。熱愛分享技術,曾多次在51CTO、異步社區(qū)、思否編程等平臺分享Linux技術。
第 1章 Shell腳本編程入門 1
1.1 熟練掌握Linux指令的重要性 2
1.2 Shell的基本概念 3
1.2.1 熟練掌握Shell腳本的必要性 5
1.2.2 Shell腳本的基本結(jié)構 5
1.2.3 編寫Shell腳本的兩種方法 6
1.2.4 Atom編輯器常用操作 7
1.2.5 編寫Shell腳本的通用規(guī)則 10
1.3 Shell腳本注釋 13
1.3.1 單行注釋 13
1.3.2 多行注釋 13
1.4 Shell腳本調(diào)試 17
1.4.1 使用trap指令 17
1.4.2 使用tee指令 19
1.4.3 使用Shell選項 20
1.5 掌握Shell編程 25
1.5.1 學Shell編程的建議 26
1.5.2 Shell腳本在應用運維中的定位 27
1.6 Shell編程特性 29
1.6.1 歷史指令history 29
1.6.2 補全指令與文件路徑 31
1.6.3 指令別名和指令執(zhí)行順序 31
1.6.4 Bash常用快捷鍵 33
1.6.5 Linux文件描述符 34
1.6.6 文件描述符應用案例 36
1.6.7 標準輸入輸出和輸入輸出重定向 43
1.6.8 深入了解重定向 44
1.6.9 Here Document入門與進階 48
1.6.10 通配符基礎和特殊 符號 51
1.6.11 將DOS格式轉(zhuǎn)換為 UNIX格式 56
1.7 Shell腳本運維實戰(zhàn) 58
1.7.1 統(tǒng)計磁盤容量信息 58
1.7.2 統(tǒng)計磁盤容量信息腳本擴展 58
1.7.3 復制文件到指定目錄 59
1.7.4 安裝LAMP菜單 59
1.8 Linux清空文件內(nèi)容的6種方法 61
1.8.1 重定向 62
1.8.2 true指令 62
1.8.3 cat、cp、dd指令與/dev/null設備 62
1.8.4 echo指令 63
1.8.5 truncate指令 64
1.8.6 一句話腳本 65
1.8.7 注意事項 66
1.9 Shell編程實用指令 67
1.9.1 read指令 67
1.9.2 sleep指令 70
1.9.3 date指令 71
1.9.4 sshpass指令 72
1.9.5 案例:crontab定時任務不執(zhí)行 78
1.10 Shell編程中的特殊字符 79
1.10.1 Shell通配符 79
1.10.2 Shell元字符 82
1.10.3 Shell轉(zhuǎn)義字符 82
1.11 本章練習 83
1.12 編寫Shell腳本經(jīng)驗 85
1.13 本章總結(jié) 85
第 2章 Shell變量與字符串 86
2.1 Shell基礎知識 87
2.1.1 絕對路徑與相對路徑 87
2.1.2 顯示登錄信息數(shù)據(jù) 91
2.1.3 Bash環(huán)境變量加載過程 94
2.1.4 常用Bash基本特性 95
2.1.5 Shell一次性執(zhí)行多條指令 101
2.2 Shell變量與運算符 103
2.2.1 變量基礎知識 103
2.2.2 Bash環(huán)境變量 106
2.2.3 Bash語言與位置參數(shù)變量 110
2.2.4 Bash預定義變量 110
2.2.5 變量的類型 117
2.3 Shell變量高級知識 119
2.3.1 變量刪除和替換 119
2.3.2 變量測試 120
2.3.3 變量的長度 122
2.3.4 變量與eval指令 123
2.4 Shell運算符 124
2.4.1 變量賦值 124
2.4.2 算術運算符 125
2.5 Shell編程之特殊符號 126
2.5.1 雙引號 127
2.5.2 單引號 127
2.5.3 反引號 128
2.5.4 反斜線 128
2.6 Shell編程之字符串常用操作 130
2.6.1 獲取字符串的長度 130
2.6.2 獲取子串的索引值 132
2.6.3 抽取字符串 134
2.6.4 Shell中字符串反轉(zhuǎn)的幾種技巧 135
2.6.5 字符串實例 137
2.6.6 字符串常用測試方法 141
2.7 Shell指令替換與數(shù)學運算 144
2.7.1 指令替換 144
2.7.2 Shell數(shù)學運算基礎知識 146
2.7.3 整數(shù)運算之“$[]” 146
2.7.4 整數(shù)運算之“(())” 147
2.7.5 整數(shù)運算之let 147
2.7.6 整數(shù)運算之expr 148
2.7.7 數(shù)學運算之bc 151
2.8 本章練習 153
2.9 本章總結(jié) 156
第3章 Shell正則表達式與文本處理三劍客 157
3.1 正則表達式基礎 158
3.1.1 正則表達式的定義和分類 158
3.1.2 元字符 158
3.2 grep與正則表達式 159
3.2.1 grep基礎知識 159
3.2.2 grep與正則表達式 160
3.3 sed與正則表達式 170
3.3.1 sed語法與基礎指令 171
3.3.2 sed基本應用 172
3.3.3 sed正則表達式應用實例 178
3.4 awk與正則表達式 189
3.4.1 awk語法與基本指令 189
3.4.2 awk基礎應用 192
3.4.3 awk數(shù)字表達式與運算符 201
3.4.4 awk模式匹配 205
3.4.5 awk與正則表達式 208
3.5 awk數(shù)組與運算符 220
3.5.1 數(shù)組基礎應用實例 220
3.5.2 awk變量詳解 223
3.5.3 awk流程控制 228
3.5.4 awk分組統(tǒng)計 233
3.6 本章總結(jié) 236
第4章 Shell編程之文件查找與處理 237
4.1 find與正則表達式 238
4.1.1 find運行機制 238
4.1.2 find運算符表達式 239
4.1.3 find常用選項及實例 243
4.1.4 find進階實例 247
4.1.5 find中的exec與xargs 249
4.2 文本處理指令 257
4.2.1 locate指令 257
4.2.2 which與whereis指令 262
4.2.3 cut指令 263
4.2.4 sort指令 264
4.2.5 tar指令 266
4.2.6 split指令 271
4.3 本章練習 273
4.4 本章總結(jié) 276
第5章 Shell條件測試和循環(huán)語句 277
5.1 Shell編程之字符串精講 278
5.1.1 獲取字符串長度的3種方法 278
5.1.2 截取和替換字符串 279
5.2 Shell條件測試和表達式 281
5.2.1 條件測試 281
5.2.2 整數(shù)測試 284
5.2.3 文件狀態(tài)測試 286
5.2.4 復雜判斷邏輯運算符 288
5.2.5 條件測試與其他常用運算符 290
5.2.6 Shell常用測試指令與符號 291
5.3 Shell流程控制 293
5.3.1 if語句基礎 293
5.3.2 if語句嵌套 297
5.3.3 if else語句 298
5.3.4 if多分支語句 299
5.3.5 exit指令 300
5.3.6 case多條件判斷語句 302
5.4 Shell循環(huán) 304
5.4.1 帶列表的for循環(huán) 305
5.4.2 不帶列表的for循環(huán) 308
5.4.3 C風格的for循環(huán) 308
5.4.4 until循環(huán)與while循環(huán) 309
5.5 循環(huán)控制語句 313
5.5.1 break語句控制循環(huán) 313
5.5.2 continue語句控制循環(huán) 315
5.5.3 select結(jié)構 316
5.6 本章練習 317
5.7 本章總結(jié) 320
第6章 Shell數(shù)組與函數(shù) 321
6.1 Shell數(shù)組的定義和賦值 322
6.1.1 定義Shell數(shù)組的4種方法 322
6.1.2 為Shell數(shù)組賦值的4種方法 327
6.2 訪問和刪除數(shù)組 330
6.2.1 訪問數(shù)組 330
6.2.2 刪除數(shù)組 338
6.2.3 數(shù)組的其他常用操作 340
6.3 Shell函數(shù) 342
6.3.1 函數(shù)基礎 342
6.3.2 函數(shù)的返回值 346
6.3.3 別名和函數(shù) 349
6.3.4 函數(shù)中的全局變量和局部變量 350
6.3.5 函數(shù)參數(shù) 352
6.4 本章練習 353
6.5 本章總結(jié) 355
第7章 Linux自動化運維入門 356
7.1 SSH服務基礎精講 357
7.1.1 SSH服務工作原理 357
7.1.2 SSH服務安全相關 358
7.2 OpenSSH服務詳解 360
7.2.1 安裝OpenSSH服務套件 360
7.2.2 OpenSSH服務配置文件詳解 363
7.2.3 SSH服務雙機互信實現(xiàn) 364
7.2.4 SSH免密碼輸入執(zhí)行指令 365
7.3 SSH自動化運維精講 368
7.3.1 SSH遠程執(zhí)行指令和腳本 368
7.3.2 SSH批量分發(fā)項目實例 370
7.4 自動化運維工具之pssh 371
7.4.1 pssh基礎概覽 371
7.4.2 pssh運維實例精講 372
7.5 自動化運維工具之rsync 376
7.5.1 關于構建備份服務器的一些思考 376
7.5.2 搭建rsync備份服務器 377
7.5.3 rsync服務器常用配置 381
7.5.4 rsync多模塊配置實例 382
7.5.5 rsync常用命令 384
7.6 定時任務與發(fā)送郵件 393
7.6.1 定時任務基礎知識 393
7.6.2 Windows定時任務實戰(zhàn)案例 394
7.6.3 定時任務at之案例 394
7.6.4 Linux定時任務crontab 397
7.7 crontab基礎知識 397
7.8 使用Mutt發(fā)送郵件 400
7.8.1 Mutt基礎知識 400
7.8.2 Mutt基本使用方法 401
7.8.3 使用第三方服務發(fā)送郵件 402
7.9 本章練習 403
7.10 本章總結(jié) 406