當前位置: 首頁 > 原創(chuàng)圖書 >Linux Shell編程從初學到精通(第2版)
本書面向廣大工程技術工作者,既可作為高等學校的教師和相關專業(yè)學生的教材,又可作為各類培訓班的培訓教程。
Shell 是用戶與內核進行交互操作的一種接口,是Linux 最重要的軟件之一,目前最流行的Shell 稱為bash Shell。bash Shell 腳本編程以其簡潔、高效而著稱,多年來成為Linux 程序員和系統(tǒng)管理員解決實際問題的利器。 《Linux Shell編程從初學到精通(第2版)》結合大量的示例,系統(tǒng)、全面地介紹了bash Shell 腳本編程的語法、命令、技巧、調試等內容,在書中還有很多練習可以引導讀者思考,力求使讀者掌握Linux bash Shell 編程的所有特性。本書結構清晰、易教易學、實例豐富、可操作性強、學以致用,對易混淆和實用性強的內容進行了重點提示和講解,并配有光盤,光盤中提供書中出現(xiàn)的所有腳本文件、各章的講解PPT,以及各章的講解錄像。 《Linux Shell編程從初學到精通(第2版)》面向廣大工程技術工作者,既可作為高等學校的教師和相關專業(yè)學生的教材,又可作為各類培訓班的培訓教程。
第1章 Shell腳本編程概述 1
1.1 Linux和Shell概述 2
1.1.1 Linux簡介 2
1.1.2 Shell簡介 5
1.1.3 Shell的種類和版本 7
1.2 Shell腳本編程的優(yōu)勢 7
1.3 第一個Shell腳本例子 8
1.3.1 Shell腳本的基本元素 8
1.3.2 執(zhí)行Shell腳本 10
1.4 本章小結 11
第2章 Linux文件系統(tǒng)和文本編輯器 12
2.1 用戶和用戶組管理 13
2.1.1 用戶管理常用命令 13
2.1.2 用戶組管理常用命令 17
2.2 文件和目錄操作 19
2.2.1 文件操作常用命令 20
2.2.2 目錄操作常用命令 25
2.2.3 文件和目錄權限管理 28
2.2.4 查找文件命令——find 32
2.3 文本編輯器 34
2.3.1 vim編輯器 34
2.3.2 Gedit編輯器 40
2.4 本章小結 41
2.5 上機提議 41
第3章 正則表達式 43
3.1 正則表達式基礎 44
3.2 正則表達式的擴展 47
3.3 通配 48
3.4 grep命令 50
3.4.1 grep命令基本用法 51
3.4.2 grep和正則表達式結合使用的一組例子 57
3.4.3 grep命令族簡介 61
3.5 本章小結 62
3.6 上機提議 63
第4章 sed命令和awk編程 64
4.1 sed命令基本用法 65
4.2 sed命令的一組示例 67
4.2.1 sed命令選項的一組例子 67
4.2.2 sed文本定位的一組例子 70
4.2.3 sed基本編輯命令的一組例子 72
4.2.4 sed高級編輯命令的一組例子 80
4.3 awk編程 83
4.3.1 awk編程模型 84
4.3.2 awk調用方法 85
4.4 awk編程的一組例子 85
4.4.1 awk模式匹配 85
4.4.2 記錄和域 86
4.4.3 關系和布爾運算符 89
4.4.4 表達式 91
4.4.5 系統(tǒng)變量 92
4.4.6 格式化輸出 94
4.4.7 內置字符串函數(shù) 95
4.4.8 向awk腳本傳遞參數(shù) 97
4.4.9 條件語句和循環(huán)語句 99
4.4.10 數(shù)組 99
4.5 本章小結 103
4.6 上機提議 103
第5章 文件的排序、合并和分割 105
5.1 sort命令 106
5.1.1 sort命令的基本用法 106
5.1.2 sort和awk的聯(lián)合用法 110
5.2 uniq命令 112
5.3 join命令 115
5.4 cut命令 118
5.5 paste命令 119
5.6 split命令 122
5.7 tr命令 124
5.8 tar命令 127
5.9 本章小結 130
5.10 上機提議 130
第6章 變量和引用 133
6.1 變量 134
6.1.1 變量替換和賦值 134
6.1.2 無類型的Shell腳本變量 137
6.1.3 環(huán)境變量 138
6.1.4 位置參數(shù) 145
6.2 引用 147
6.2.1 全引用和部分引用 147
6.2.2 命令替換 149
6.2.3 轉義 151
6.3 本章小結 155
6.4 上機提議 155
第7章 退出、測試、判斷及操作符 157
7.1 退出狀態(tài) 158
7.2 測試 159
7.2.1 測試結構 159
7.2.2 整數(shù)比較運算符 159
7.2.3 字符串運算符 161
7.2.4 文件操作符 162
7.2.5 邏輯運算符 164
7.3 判斷 166
7.3.1 簡單if結構 167
7.3.2 exit命令 168
7.3.3 if/else結構 169
7.3.4 if/else語句嵌套 171
7.3.5 if/elif/else結構 174
7.3.6 case結構 177
7.4 運算符 179
7.4.1 算術運算符 180
7.4.2 位運算符 181
7.4.3 自增自減運算符 183
7.4.4 數(shù)字常量 183
7.5 本章小結 185
7.6 上機提議 185
第8章 循環(huán)與結構化命令 187
8.1 for循環(huán) 188
8.1.1 列表for循環(huán) 188
8.1.2 不帶列表for循環(huán) 192
8.1.3 類C風格的for循環(huán) 193
8.2 while循環(huán) 196
8.2.1 計數(shù)器控制的while循環(huán) 196
8.2.2 結束標記控制的while循環(huán) 198
8.2.3 標志控制的while循環(huán) 200
8.2.4 命令行控制的while循環(huán) 202
8.3 until循環(huán) 203
8.4 嵌套循環(huán) 204
8.5 循環(huán)控制符 208
8.5.1 break循環(huán)控制符 208
8.5.2 continue循環(huán)控制符 211
8.6 select結構 213
8.7 本章小結 215
8.8 上機提議 215
第9章 變量的高級用法 217
9.1 內部變量 218
9.2 字符串處理 226
9.3 有類型變量 232
9.4 間接變量引用 235
9.5 bash數(shù)學運算 237
9.5.1 expr命令 238
9.5.2 bc運算器 239
9.6 本章小結 241
9.7 上機提議 241
第10章 I/O重定向 243
10.1 管道 244
10.1.1 管道簡介 244
10.1.2 cat和more命令 245
10.1.3 sed命令與管道 249
10.1.4 awk命令與管道 250
10.2 I/O重定向 253
10.2.1 文件標識符 253
10.2.2 I/O重定向符號及其用法 255
10.2.3 exec命令的用法 259
10.2.4 代碼塊重定向 262
10.3 命令行處理 265
10.3.1 命令行處理流程 266
10.3.2 eval命令 268
10.4 本章小結 271
10.5 上機提議 271
第11章 Linux/UNIX Shell類型與區(qū)別 273
11.1 Linux/UNIX Shell起源與分類 274
11.2 dash簡介 275
11.3 tcsh簡介 277
11.4 Korn Shell簡介 282
11.5 本章小結 287
第12章 子Shell與進程處理 288
12.1 子Shell 289
12.1.1 內建命令 289
12.1.2 圓括號結構 292
12.2 Shell的限制模式 297
12.3 進程處理 299
12.3.1 進程和作業(yè) 301
12.3.2 作業(yè)控制 302
12.3.3 信號 307
12.3.4 trap命令 309
12.4 本章小結 312
12.5 上機提議 312
第13章 函數(shù) 314
13.1 函數(shù)的定義和基本知識 315
13.2 向函數(shù)傳遞參數(shù) 318
13.3 函數(shù)返回值 321
13.4 函數(shù)調用 322
13.4.1 腳本放置多個函數(shù) 322
13.4.2 函數(shù)相互調用 324
13.4.3 一個函數(shù)調用多個函數(shù) 325
13.5 局部變量和全局變量 327
13.6 函數(shù)遞歸 328
13.6.1 使用局部變量的遞歸 329
13.6.2 不使用局部變量的遞歸 330
13.7 本章小結 332
13.8 上機提議 333
第14章 別名、列表及數(shù)組 335
14.1 別名 336
14.2 列表 339
14.3 數(shù)組 342
14.3.1 數(shù)組的基本用法 342
14.3.2 數(shù)組的特殊用法 346
14.3.3 用數(shù)組實現(xiàn)簡單的數(shù)據(jù)結構 350
14.4 本章小結 356
14.5 上機提議 356
第15章 一些混雜的主題 359
15.1 腳本編寫風格 360
15.1.1 縮進 360
15.1.2 {}的格式 362
15.1.3 空格和空行的用法 362
15.1.4 判斷和循環(huán)的編程風格 363
15.1.5 命名規(guī)范 364
15.1.6 注釋風格 365
15.2 腳本優(yōu)化 366
15.2.1 簡化腳本 366
15.2.2 保持腳本的靈活性 368
15.2.3 給用戶足夠的提示 369
15.3 Linux中的特殊命令 371
15.3.1 shift命令 371
15.3.2 getopts命令 374
15.4 交互式和非交互式Shell腳本 376
15.4.1 非交互式Shell腳本 376
15.4.2 交互式Shell腳本 378
15.5 /dev文件系統(tǒng) 379
15.5.1 /dev文件系統(tǒng)基礎知識 380
15.5.2 /dev/zero偽設備 381
15.5.3 /dev/null偽設備 383
15.6 /proc文件系統(tǒng) 384
15.6.1 使用/proc/sys優(yōu)化系統(tǒng)參數(shù) 386
15.6.2 查看運行中的進程信息 387
15.6.3 查看文件系統(tǒng)信息 388
15.6.4 查看網(wǎng)絡信息 389
15.7 Shell包裝 390
15.8 帶顏色的腳本 392
15.9 Linux腳本安全 398
15.9.1 使用shc工具加密Shell腳本 398
15.9.2 Linux Shell腳本編寫的病毒 399
15.9.3 Linux Shell中的木馬 400
15.10 本章小結 401
15.1 上機提議 401
第16章 Shell腳本調試技術 403
16.1 Shell腳本調試概述 404
16.2 Shell腳本調試技術 406
16.2.1 使用trap命令 406
16.2.2 使用tee命令 409
16.2.3 調試鉤子 411
16.2.4 使用Shell選項 412
16.3 本章小結 417
16.4 上機提議 417
第17章 bash Shell編程范例 420
17.1 將文本文件轉化為HTML文件 421
17.2 查找文本中n個出現(xiàn)頻率最高的單詞 425
17.3 偽隨機數(shù)的產生和應用 427
17.4 crontab的設置和應用 431
17.5 使用MySQL數(shù)據(jù)庫 434
17.5.1 MySQL基礎 434
17.5.2 Shell腳本使用MySQL 437
17.6 Linux服務器性能監(jiān)控系統(tǒng) 442
17.6.1 Ganglia簡介及安裝 443
17.6.2 提取服務器性能參數(shù)名稱及數(shù)據(jù) 448
17.6.3 動態(tài)更新服務器監(jiān)控數(shù)據(jù) 455
17.7 本章小結 457
17.8 上機提議 457
附錄 459
附錄A POSIX標準簡介 460
附錄B 常用ASCII碼對照表 461
附錄C Linux信號及其意義 466
附錄D bash內建變量索引 467
附錄E bash內建命令索引 469
參考文獻 472