Shell編程實戰

《Shell編程實戰》是於2017年1月機械工業出版社出版的一本圖書,作者是老男孩。

基本介紹

  • 書名:Shell編程實戰
  • 作者:老男孩
  • 出版社:機械工業出版社
  • 出版時間:2017年1月
內容簡介,作者簡介,圖書目錄,

內容簡介

老男孩的運維思想,相信自己,勤奮努力,不斷總結!——老男孩老師個人成功逆襲的12字箴言。
當你還在做運維的時候,請以運維經理或總監的視角,看待當下的運維工作,思想高了,採取的行動就會不一樣,最終的結果可能就是讓自己從眾多的競爭對手中勝出!
成功,不取決於你認識多少人,而是取決於有多少人認識你!做運維也是如此,很多時候,運維人員在工作中都需要其他人或部門配合,當更多人的認識你、認可你時,事情就容易得到解決!
要想成為真正牛氣的人,就不能僅僅會運維和編碼,而是要努力成為制定標準(規則)、流程、規範、方案的人(比如,架構師或總監)。

作者簡介

老男孩,北京老男孩IT教育創始人,暢銷IT圖書作者,51CTO金牌講師及長期戰略合作專家,大規模網站集群實戰運維專家及教學培訓專家,擅長大規模集群架構部署調優、虛擬化、雲計算、大數據、MySQL資料庫、Shell編程等技術,是IT界頂尖的Linux集群架構實戰專家,著有《跟老男孩學Linux運維:Web集群實戰》、《跟老男孩學Linux運維:Shell編程實戰》等書。

圖書目錄

第1章 如何才能學好Shell編程 / 1
1.1 為什麼要學習Shell編程 / 1
1.2 學好Shell編程所需的基礎知識 / 1
1.3 如何才能學好Shell編程之“老鳥”經驗談 / 3
1.4 學完本書後可以達到何種Shell編程高度 / 5
第2章 Shell腳本初步入門 / 6
2.1 什麼是Shell / 6
2.2 什麼是Shell腳本 / 7
2.3 Shell腳本在Linux運維工作中的地位 / 8
2.4 腳本語言的種類 / 9
2.4.1 Shell腳本語言的種類 / 9
2.4.2 其他常用的腳本語言種類 / 10
2.4.3 Shell腳本語言的優勢 / 11
2.5 常用作業系統默認的Shell / 11
2.6 Shell腳本的建立和執行 / 12
2.6.1 Shell腳本的建立 / 12
2.6.2 Shell腳本的執行 / 15
2.6.3 Shell腳本開發的基本規範及習慣 / 19
第3章 Shell變數的核心基礎知識與實踐 / 22
3.1 什麼是Shell變數 / 22
3.2 環境變數 / 23
3.2.1 自定義環境變數 / 26
3.2.2 顯示與取消環境變數 / 28
3.2.3 環境變數初始化與對應檔案的生效順序 / 30
3.3 普通變數 / 31
3.3.1 定義本地變數 / 31
3.3.2 變數定義及變數輸出說明 / 35
3.4 變數定義技巧總結 / 40
第4章 Shell變數知識進階與實踐 / 41
4.1 Shell中特殊且重要的變數 / 41
4.1.1 Shell中的特殊位置參數變數 / 41
4.1.2 Shell進程中的特殊狀態變數 / 47
4.2 bash Shell內置變數命令 / 52
4.3 Shell變數子串知識及實踐 / 55
4.3.1 Shell變數子串介紹 / 55
4.3.2 Shell變數子串的實踐 / 56
4.3.3 變數子串的生產場景套用案例 / 59
4.4 Shell特殊擴展變數的知識與實踐 / 60
4.4.1 Shell特殊擴展變數介紹 / 60
4.4.2 Shell特殊擴展變數的實踐 / 61
4.4.3 Shell特殊擴展變數的生產場景套用案例 / 63
第5章 變數的數值計算實踐 / 65
5.1 算術運算符 / 65
5.2 雙小括弧“(())”數值運算命令 / 66
5.2.1 雙小括弧“(())”數值運算的基礎語法 / 66
5.2.2 雙小括弧“(())”數值運算實踐 / 66
5.3 let運算命令的用法 / 73
5.4 expr命令的用法 / 75
5.4.1 expr命令的基本用法示例 / 75
5.4.2 expr的企業級實戰案例詳解 / 76
5.5 bc命令的用法 / 81
5.6 awk實現計算 / 83
5.7 declare(同typeset)命令的用法 / 83
5.8 $[]符號的運算示例 / 83
5.9 基於Shell變數輸入read命令的運算實踐 / 84
5.9.1 read命令基礎 / 84
5.9.2 以read命令讀入及傳參的綜合企業案例 / 87
第6章 Shell腳本的條件測試與比較 / 92
6.1 Shell腳本的條件測試 / 92
6.1.1 條件測試方法綜述 / 92
6.1.2 test條件測試的簡單語法及示例 / 93
6.1.3 [](中括弧)條件測試語法及示例 / 94
6.1.4 [[]]條件測試語法及示例 / 95
6.2 檔案測試表達式 / 97
6.2.1 檔案測試表達式的用法 / 97
6.2.2 檔案測試表達式舉例 / 97
6.2.3 特殊條件測試表達式案例 / 101
6.3 字元串測試表達式 / 102
6.3.1 字元串測試操作符 / 102
6.3.2 字元串測試生產案例 / 104
6.4 整數二元比較操作符 / 105
6.4.1 整數二元比較操作符介紹 / 105
6.4.2 整數變數測試實踐示例 / 107
6.5 邏輯操作符 / 108
6.5.1 邏輯操作符介紹 / 108
6.5.2 邏輯操作符實踐示例 / 110
6.5.3 邏輯操作符企業案例 / 112
6.6 測試表達式test、[]、[[]]、(())的區別總結 / 120
第7章 if條件語句的知識與實踐 / 121
7.1 if條件語句 / 121
7.1.1 if條件語句的語法 / 121
7.1.2 if條件語句多種條件表達式語法 / 125
7.1.3 單分支if條件語句實踐 / 126
7.1.4 if條件語句的深入實踐 / 130
7.2 if條件語句企業案例精講 / 132
7.2.1 監控Web和資料庫的企業案例 / 132
7.2.2 比較大小的經典拓展案例 / 142
7.2.3 判斷字元串是否為數字的多種思路 / 143
7.2.4 判斷字元串長度是否為0的多種思路 / 145
7.2.5 更多的生產場景實戰案例 / 145
第8章 Shell函式的知識與實踐 / 151
8.1 Shell函式的概念與作用介紹 / 151
8.2 Shell函式的語法 / 152
8.3 Shell函式的執行 / 152
8.4 Shell函式的基礎實踐 / 153
8.5 利用Shell函式開發企業級URL檢測腳本 / 155
8.6 利用Shell函式開發一鍵最佳化系統腳本 / 158
8.7 利用Shell函式開發rsync服務啟動腳本 / 166
第9章 case條件語句的套用實踐 / 169
9.1 case條件語句的語法 / 169
9.2 case條件語句實踐 / 171
9.3 實踐:給輸出的字元串加顏色 / 176
9.3.1 給輸出的字元串加顏色的基礎知識 / 176
9.3.2 結合case語句給輸出的字元串加顏色 / 177
9.3.3 給輸出的字元串加背景顏色 / 180
9.4 case語句企業級生產案例 / 181
9.5 case條件語句的Linux系統腳本範例 / 187
9.6 本章小結 / 191
第10章 while循環和until循環的套用實踐 / 192
10.1 當型和直到型循環語法 / 192
10.1.1 while循環語句 / 192
10.1.2 until循環語句 / 193
10.2 當型和直到型循環的基本範例 / 194
10.3 讓Shell腳本在後台運行的知識 / 195
10.4 企業生產實戰:while循環語句實踐 / 206
10.5 while循環按行讀檔案的方式總結 / 210
10.6 企業級生產高級實戰案例 / 211
10.7 本章小結 / 215
第11章 for和select循環語句的套用實踐 / 217
11.1 for循環語法結構 / 217
11.2 for循環語句的基礎實踐 / 219
11.3 for循環語句的企業級案例 / 222
11.4 for循環語句的企業高級實戰案例 / 230
11.5 Linux系統產生隨機數的6種方法 / 239
11.6 select循環語句介紹及語法 / 241
11.7 select循環語句案例 / 242
第12章 循環控制及狀態返回值的套用實踐 / 249
12.1 break、continue、exit、return的區別和對比 / 249
12.2 break、continue、exit功能執行流程圖 / 249
12.3 break、continue、exit、return命令的基礎示例 / 251
12.4 循環控制及狀態返回值的企業級案例 / 253
第13章 Shell數組的套用實踐 / 260
13.1 Shell數組介紹 / 260
13.1.1 為什麼會產生Shell數組 / 260
13.1.2 什麼是Shell數組 / 260
13.2 Shell數組的定義與增刪改查 / 261
13.2.1 Shell數組的定義 / 261
13.2.2 Shell數組的列印及輸出 / 262
13.3 Shell數組腳本開發實踐 / 265
13.4 Shell數組的重要命令 / 267
13.5 Shell數組相關面試題及高級實戰案例 / 268
13.6 合格運維人員必會的腳本列表 / 277
第14章 Shell腳本開發規範 / 279
14.1 Shell腳本基本規範 / 279
14.2 Shell腳本變數命名及引用變數規範 / 281
14.3 Shell函式的命名及函式定義規範 / 282
14.4 Shell腳本(模組)高級命名規範 / 283
14.5 Shell腳本的代碼風格 / 283
14.5.1 代碼框架 / 283
14.5.2 縮進規範 / 284
14.6 Shell腳本的變數及檔案檢查規範 / 285
第15章 Shell腳本的調試 / 286
15.1 常見Shell腳本錯誤範例 / 286
15.1.1 if條件語句缺少結尾關鍵字 / 286
15.1.2 循環語句缺少關鍵字 / 287
15.1.3 成對的符號落了單 / 287
15.1.4 中括弧兩端沒空格 / 288
15.1.5 Shell語法調試小結 / 289
15.2 Shell腳本調試技巧 / 289
15.2.1 使用dos2unix命令處理在Windows下開發的腳本 / 289
15.2.2 使用echo命令調試 / 290
15.2.3 使用bash命令參數調試 / 291
15.2.4 使用set命令調試部分腳本內容 / 294
15.2.5 其他調試Shell腳本的工具 / 296
15.3 本章小結 / 296
第16章 Shell腳本開發環境的配置和最佳化實踐 / 297
16.1 使用vim而不是vi編輯器 / 297
16.2 配置檔案.vimrc的重要參數介紹 / 298
16.3 讓配置檔案.vimrc生效 / 304
16.4 使用vim編輯器進行編碼測試 / 304
16.4.1 代碼自動縮進功能 / 304
16.4.2 代碼顏色高亮顯示功能說明 / 304
16.5 vim配置檔案的自動增加著作權功能 / 305
16.6 vim配置檔案的代碼摺疊功能 / 305
16.7 vim編輯器批量縮進及縮進調整技巧 / 305
16.8 其他vim配置檔案功能說明 / 307
16.9 vim編輯器常用操作技巧 / 307
第17章 Linux信號及trap命令的企業套用實踐 / 310
17.1 信號知識 / 310
17.1.1 信號介紹 / 310
17.1.2 信號列表 / 310
17.2 使用trap控制信號 / 311
17.3 Linux信號及trap命令的生產套用案例 / 313
第18章 Expect自動化互動式程式套用實踐 / 317
18.1 Expect介紹 / 317
18.1.1 什麼是Expect / 317
18.1.2 為什麼要使用Expect / 317
18.2 安裝Expect軟體 / 318
18.3 小試牛刀:實現Expect自動互動功能 / 318
18.4 Expect程式自動互動的重要命令及實踐 / 319
18.4.1 spawn命令 / 320
18.4.2 expect命令 / 320
18.4.3 send命令 / 323
18.4.4 exp_continue命令 / 324
18.4.5 send_user命令 / 324
18.4.6 exit命令 / 325
18.4.7 Expect常用命令總結 / 325
18.5 Expect程式變數 / 326
18.5.1 普通變數 / 326
18.5.2 特殊參數變數 / 326
18.6 Expect程式中的if條件語句 / 327
18.7 Expect中的關鍵字 / 329
18.7.1 eof關鍵字 / 329
18.7.2 timeout關鍵字 / 329
18.8 企業生產場景下的Expect案例 / 330
18.8.1 批量執行命令 / 330
18.8.2 批量傳送檔案 / 332
18.8.3 批量執行Shell腳本 / 334
18.8.4 自動化部署SSH密鑰認證+ansible的項目實戰 / 337
18.9 本章小節 / 339
第19章 企業Shell面試題及企業運維實戰案例 / 340
19.1 企業Shell面試題案例 / 340
19.1.1 面試題1:批量生成隨機字元檔案名稱 / 340
19.1.2 面試題2:批量改名 / 341
19.1.3 面試題3:批量創建特殊要求用戶 / 342
19.1.4 面試題4:掃描網路記憶體活主機 / 342
19.1.5 面試題5:解決DOS攻擊 / 343
19.1.6 面試題6:MySQL資料庫分庫備份 / 344
19.1.7 面試題7:MySQL資料庫分庫分表備份 / 344
19.1.8 面試題8:篩選符合長度的單詞 / 344
19.1.9 面試題9:MySQL主從複製異常監控 / 344
19.1.10 面試題10:比較整數大小 / 344
19.1.11 面試題11:選單自動化軟體部署 / 344
19.1.12 面試題12:Web及MySQL服務異常監測 / 345
19.1.13 面試題13:監控Memcached快取服務 / 345
19.1.14 面試題14:開發腳本實現入侵檢測與報警 / 346
19.1.15 面試題15:開發Rsync服務啟動腳本 / 349
19.1.16 面試題16:開發MySQL多實例啟動腳本 / 349
19.1.17 面試題17:開發學生實踐抓鬮腳本 / 351
19.1.18 面試題18:破解RANDOM隨機數 / 353
19.1.19 面試題19:批量檢查多個網站地址是否正常 / 354
19.1.20 面試題20:單詞及字母去重排序 / 355
19.1.21 面試題21:開發腳本管理服務端LVS / 357
19.1.22 面試題22:LVS節點健康檢查及管理腳本 / 359
19.1.23 面試題23:LVS客戶端配置腳本 / 360
19.1.24 面試題24:模擬keepalived軟體高可用 / 361
19.1.25 面試題25:編寫正(或長)方形圖形 / 362
19.1.26 面試題26:編寫等腰三角形圖形字元 / 363
19.1.27 面試題27:編寫直角梯形圖形字元 / 364
19.1.28 面試題28:51CTO博文爬蟲腳本 / 365
19.1.29 面試題29:Nginx負載節點狀態監測 / 366
19.2 Shell經典程式案例:哄老婆和女孩的神器 / 369
19.2.1 功能簡介 / 369
19.2.2 使用方法 / 369
19.2.3 girlLove工具內容模板 / 370
19.2.4 girlLove工具的Shell源碼注釋 / 371
19.2.5 girlLove最終結果展示 / 376
第20章 子Shell及Shell嵌套模式知識套用 / 377
20.1 子Shell的知識及實踐說明 / 377
20.1.1 什麼是子Shell / 377
20.1.2 子Shell的常見產生途徑及特點 / 378
20.2 子Shell在企業套用中的“坑” / 383
20.2.1 使用管道與while循環時遭遇的“坑” / 383
20.2.2 解決while循環遭遇的“坑” / 385
20.3 Shell調用腳本的模式說明 / 386
20.3.1 fork模式調用腳本知識 / 386
21.3.2 exec模式調用腳本 / 386
21.3.3 source模式調用腳本 / 387
20.4 Shell調用腳本的3種不同實踐方法 / 387
20.4.1 開發測試不同模式區別的Shell腳本 / 387
20.4.2 對比fork模式與source模式的區別 / 390
20.4.3 對比exec模式與source模式的區別 / 391
20.5 Shell調用腳本3種不同模式的套用場景 / 391
附 錄 Linux重要命令匯總 / 393

相關詞條

熱門詞條

聯絡我們