第1章 第一個shell程序 1
1.1 第一道菜 2
1.2 如何運行程序 2
1.2.1 選婿:位於第一行的#! 2
1.2.2 找茬:程序執行的差異 4
1.2.3 shell的命令種類 4
1.3 linux shell的變量 6
1.3.1 變量 6
1.3.2 用echo輸齣變量 8
1.3.3 環境變量的相關操作 9
1.3.4 shell中一些常用環境變量 12
1.4 linux shell是解釋型語言 12
1.4.1 編譯型語言與解釋型語言 12
1.4.2 linux shell編程的優勢 13
1.5 小結 14
第2章 shell編程基礎 15
2.1 嚮腳本傳遞參數 16
2.1.1 shell腳本的參數 16
2.1.2 參數的用途 17
2.2 i/o重定嚮 20
2.2.1 標準輸入、標準輸齣與標準錯誤 20
2.2.2 管道與重定嚮 22
2.2.3 文件描述符 23
2.2.4 特殊文件的妙用 24
2.3 基本文本檢索 28
2.4 unix/linux係統的設計與shell 編程 31
2.4.1 一切皆文件 31
2.4.2 unix編程的基本原則 34
2.5 小結 37
第3章 編程的基本元素 39
3.1 再識變量 40
3.1.1 用戶變量 41
3.1.2 位置變量 46
3.1.3 環境變量 48
3.1.4 啓動文件 49
3.2 函數 51
3.2.1 函數定義 52
3.2.2 函數的參數和返迴值 53
3.3 條件控製與流程控製 54
3.3.1 if/else語句 54
3.3.2 退齣狀態 54
3.3.3 退齣狀態與邏輯操作 56
3.3.4 條件測試 56
3.4 循環控製 61
3.4.1 for循環 61
3.4.2 while/until循環 62
3.4.3 跳齣循環 63
3.4.4 循環實例 63
3.5 小結 65
第4章 正則錶達式 66
4.1 什麼是正則錶達式 67
4.1.1 正則錶達式的廣泛應用 67
4.1.2 如何學習正則錶達式 67
4.1.3 如何實踐正則錶達式 68
4.2 正則基礎 69
4.2.1 元字符 69
4.2.2 單個字符 72
4.2.3 單個錶達式匹配多個字符 73
4.2.4 文本匹配錨點 74
4.2.5 運算符優先級 74
4.2.6 更多差異 75
4.3 正則錶達式的應用 76
4.3.1 擴展 76
4.3.2 案例研究:羅馬數字 77
4.3.3 案例研究:解析電話號碼 82
4.4 小結 86
第5章 基本文本處理 87
5.1 排序文本 88
5.1.1 sort命令的行排序 90
5.1.2 sort命令的字段排序 92
5.1.3 sort小結 93
5.2 文本去重 94
5.3 統計文本行數、字數以及字 符數 96
5.4 打印和格式化輸齣 97
5.4.1 使用pr打印文件 97
5.4.2 使用fmt命令格式化文本 99
5.4.3 使用fold限製文本寬度 101
5.5 提取文本開頭和結尾 102
5.6 字段處理 104
5.6.1 字段的使用案例 104
5.6.2 使用cut取齣字段 105
5.6.3 使用join連接字段 107
5.6.4 其他字段處理方法 110
5.7 文本替換 110
5.7.1 使用tr替換字符 110
5.7.2 其他選擇 113
5.8 一個稍微復雜的例子 114
5.8.1 實例描述 114
5.8.2 取齣記錄的ip字段和id字段 114
5.8.3 將記錄按照ip順序排序 115
5.8.4 使用uniq統計重復ip 115
5.8.5 根據訪問次數進行排序 116
5.8.6 提取齣現次數最多的100條 116
5.9 小結 117
第6章 文件和文件係統 118
6.1 文件 119
6.1.1 列齣文件 119
6.1.2 文件的類型 122
6.1.3 文件的權限 123
6.1.4 文件的修改時間 131
6.2 尋找文件 133
6.2.1 find命令的參數 133
6.2.2 遍曆文件 137
6.3 比較文件 138
6.3.1 使用comm比較排序後文件 138
6.3.2 使用diff比較文件 139
6.3.3 其他文本比較方法 141
6.4 文件係統 142
6.4.1 什麼是文件係統 143
6.4.2 文件係統與磁盤分區 143
6.4.3 linux分區格式的選擇與安全性 145
6.4.4 文件係統與目錄樹 147
6.4.5 文件係統的創建與掛載 151
6.5 小結 154
第7章 流編輯 155
7.1 什麼是sed 156
7.1.1 挑選編輯器 156
7.1.2 sed的版本 156
7.2 sed示例 156
7.2.1 sed的工作方式 156
7.2.2 sed工作的地址範圍 158
7.2.3 規則錶達式 159
7.3 更強大的sed功能 161
7.3.1 替換 162
7.3.2 地址範圍的迷惑 163
7.4 組閤命令 164
7.4.1 組閤多條命令 164
7.4.2 將多條命令應用到一個地址範圍 166
7.5 實際的例子 166
7.6 sed實踐 167
7.6.1 第一步 替換名字 168
7.6.2 第二步 刪除前3行 168
7.6.3 第三步 顯示5~10行 169
7.6.4 第四步 刪除包含lane的行 169
7.6.5 第五步 顯示生日在november-december之間的行 170
7.6.6 第六步 把3個星號(***)添加到以fred開頭的行 170
7.6.7 第七步 用jose hasretired取代包含jose的行 171
7.6.8 第八步 把popeye的生日改成11/14/46 172
7.6.9 第九步 刪除所有空白行 173
7.6.10 第十步 腳本 174
7.7 小結 175
第8章 文本處理利器awk 176
8.1 來個案例 177
8.2 基本語法 178
8.2.1 多個字段 178
8.2.2 使用其他字段分隔符 179
8.3 awk語言特性 181
8.3.1 awk代碼結構 181
8.3.2 變量與數組 184
8.3.3 算術運算和運算符 186
8.3.4 判斷與循環 188
8.3.5 多條記錄 192
8.4 用戶自定義函數 194
8.4.1 自定義函數格式 194
8.4.2 引用傳遞和值傳遞 196
8.4.3 遞歸調用 197
8.5 字符串與算術處理 199
8.5.1 格式化輸齣 199
8.5.2 字符串函數 201
8.5.3 算術函數 206
8.6 案例分析 210
8.6.1 生成數據報錶 210
8.6.2 多文件聯閤處理 212
8.6.3 檢驗passwd格式的正確性 214
8.6.4 sed/awk單行腳本 215
8.7 小結 222
第9章 進程 223
9.1 進程的含義與查看 224
9.1.1 理解進程 224
9.1.2 創建進程 224
9.1.3 查看進程 225
9.1.4 進程的屬性 229
9.2 進程管理 230
9.2.1 進程的狀態 230
9.2.2 shell命令的執行 232
9.2.3 進程與任務調度 233
9.3 信號 239
9.3.1 信號的基本概念 239
9.3.2 産生信號 242
9.4 linux的第一個進程init 244
9.5 案例分析:linux係統中管道的 實現 247
9.6 調度係統任務 249
9.6.1 任務調度的基本介紹 249
9.6.2 調度重復性係統任務(cron) 250
9.6.3 使用at命令 256
9.7 進程的窗口/proc 259
9.7.1 proc——虛擬文件係統 260
9.7.2 查看/proc的文件 260
9.7.3 從proc獲取信息 261
9.7.4 通過/proc與內核交互 263
9.8 linux的綫程簡介 264
9.8.1 linux綫程的定義 264
9.8.2 pthread綫程的使用場閤 264
9.8.3 linux進程和綫程的發展 265
9.9 小結 265
第10章 超級工具 267
10.1 不同的shell 268
10.1.1 修改登錄shell和切換shell 268
10.1.2 選擇shell 270
10.2 ssh 273
10.2.1 ssh的安全驗證機製 273
10.2.2 使用ssh登錄遠程 主機 274
10.2.3 openssh密鑰管理 276
10.2.4 配置ssh 281
10.2.5 使用ssh工具套裝拷貝文件 282
10.3 screen工具 283
10.3.1 任務退齣的元凶:sighup信號 284
10.3.2 開始使用screen 285
10.3.3 screen常用選項 287
10.3.4 實例:ssh+screen管理遠程會話 289
10.4 文本編輯工具vim 289
10.4.1 為什麼選擇vim 290
10.4.2 從何處獲取vim 290
10.4.3 vim的工作模式 292
10.4.4 首次接觸:step by step 293
10.4.5 鼠標的移動 294
10.4.6 基本編輯指令 295
10.4.7 復製(yank) 299
10.4.8 搜尋、替換 301
10.5 小結 303
第11章 linux shell編程實戰 304
11.1 日誌清理 305
11.1.1 程序行為介紹 305
11.1.2 準備函數 305
11.1.3 日誌備份函數 309
11.1.4 定時運行 310
11.1.5 代碼迴顧 311
11.2 係統監控 312
11.2.1 內存監控函數 313
11.2.2 硬盤空間監控函數 314
11.2.3 cpu占用監控函數 315
11.2.4 獲取最忙碌的進程信息 319
11.2.5 結閤到一起 320
11.2.6 代碼迴顧 320
11.3 小結 322
· · · · · · (
收起)