當(dāng)前位置: 首頁 > 原創(chuàng)圖書 >Linux Shell編程從初學(xué)到精通(第2版)
本書面向廣大工程技術(shù)工作者,既可作為高等學(xué)校的教師和相關(guān)專業(yè)學(xué)生的教材,又可作為各類培訓(xùn)班的培訓(xùn)教程。
Shell 是用戶與內(nèi)核進(jìn)行交互操作的一種接口,是Linux 最重要的軟件之一,目前最流行的Shell 稱為bash Shell。bash Shell 腳本編程以其簡潔、高效而著稱,多年來成為Linux 程序員和系統(tǒng)管理員解決實際問題的利器。 《Linux Shell編程從初學(xué)到精通(第2版)》結(jié)合大量的示例,系統(tǒng)、全面地介紹了bash Shell 腳本編程的語法、命令、技巧、調(diào)試等內(nèi)容,在書中還有很多練習(xí)可以引導(dǎo)讀者思考,力求使讀者掌握Linux bash Shell 編程的所有特性。本書結(jié)構(gòu)清晰、易教易學(xué)、實例豐富、可操作性強(qiáng)、學(xué)以致用,對易混淆和實用性強(qiáng)的內(nèi)容進(jìn)行了重點提示和講解,并配有光盤,光盤中提供書中出現(xiàn)的所有腳本文件、各章的講解PPT,以及各章的講解錄像。 《Linux Shell編程從初學(xué)到精通(第2版)》面向廣大工程技術(shù)工作者,既可作為高等學(xué)校的教師和相關(guān)專業(yè)學(xué)生的教材,又可作為各類培訓(xùn)班的培訓(xùn)教程。
第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 本章小結(jié) 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 文件和目錄權(quán)限管理 28
2.2.4 查找文件命令——find 32
2.3 文本編輯器 34
2.3.1 vim編輯器 34
2.3.2 Gedit編輯器 40
2.4 本章小結(jié) 41
2.5 上機(jī)提議 41
第3章 正則表達(dá)式 43
3.1 正則表達(dá)式基礎(chǔ) 44
3.2 正則表達(dá)式的擴(kuò)展 47
3.3 通配 48
3.4 grep命令 50
3.4.1 grep命令基本用法 51
3.4.2 grep和正則表達(dá)式結(jié)合使用的一組例子 57
3.4.3 grep命令族簡介 61
3.5 本章小結(jié) 62
3.6 上機(jī)提議 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調(diào)用方法 85
4.4 awk編程的一組例子 85
4.4.1 awk模式匹配 85
4.4.2 記錄和域 86
4.4.3 關(guān)系和布爾運(yùn)算符 89
4.4.4 表達(dá)式 91
4.4.5 系統(tǒng)變量 92
4.4.6 格式化輸出 94
4.4.7 內(nèi)置字符串函數(shù) 95
4.4.8 向awk腳本傳遞參數(shù) 97
4.4.9 條件語句和循環(huán)語句 99
4.4.10 數(shù)組 99
4.5 本章小結(jié) 103
4.6 上機(jī)提議 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 本章小結(jié) 130
5.10 上機(jī)提議 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 轉(zhuǎn)義 151
6.3 本章小結(jié) 155
6.4 上機(jī)提議 155
第7章 退出、測試、判斷及操作符 157
7.1 退出狀態(tài) 158
7.2 測試 159
7.2.1 測試結(jié)構(gòu) 159
7.2.2 整數(shù)比較運(yùn)算符 159
7.2.3 字符串運(yùn)算符 161
7.2.4 文件操作符 162
7.2.5 邏輯運(yùn)算符 164
7.3 判斷 166
7.3.1 簡單if結(jié)構(gòu) 167
7.3.2 exit命令 168
7.3.3 if/else結(jié)構(gòu) 169
7.3.4 if/else語句嵌套 171
7.3.5 if/elif/else結(jié)構(gòu) 174
7.3.6 case結(jié)構(gòu) 177
7.4 運(yùn)算符 179
7.4.1 算術(shù)運(yùn)算符 180
7.4.2 位運(yùn)算符 181
7.4.3 自增自減運(yùn)算符 183
7.4.4 數(shù)字常量 183
7.5 本章小結(jié) 185
7.6 上機(jī)提議 185
第8章 循環(huán)與結(jié)構(gòu)化命令 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風(fēng)格的for循環(huán) 193
8.2 while循環(huán) 196
8.2.1 計數(shù)器控制的while循環(huán) 196
8.2.2 結(jié)束標(biāo)記控制的while循環(huán) 198
8.2.3 標(biāo)志控制的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結(jié)構(gòu) 213
8.7 本章小結(jié) 215
8.8 上機(jī)提議 215
第9章 變量的高級用法 217
9.1 內(nèi)部變量 218
9.2 字符串處理 226
9.3 有類型變量 232
9.4 間接變量引用 235
9.5 bash數(shù)學(xué)運(yùn)算 237
9.5.1 expr命令 238
9.5.2 bc運(yùn)算器 239
9.6 本章小結(jié) 241
9.7 上機(jī)提議 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 文件標(biāo)識符 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 本章小結(jié) 271
10.5 上機(jī)提議 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 本章小結(jié) 287
第12章 子Shell與進(jìn)程處理 288
12.1 子Shell 289
12.1.1 內(nèi)建命令 289
12.1.2 圓括號結(jié)構(gòu) 292
12.2 Shell的限制模式 297
12.3 進(jìn)程處理 299
12.3.1 進(jìn)程和作業(yè) 301
12.3.2 作業(yè)控制 302
12.3.3 信號 307
12.3.4 trap命令 309
12.4 本章小結(jié) 312
12.5 上機(jī)提議 312
第13章 函數(shù) 314
13.1 函數(shù)的定義和基本知識 315
13.2 向函數(shù)傳遞參數(shù) 318
13.3 函數(shù)返回值 321
13.4 函數(shù)調(diào)用 322
13.4.1 腳本放置多個函數(shù) 322
13.4.2 函數(shù)相互調(diào)用 324
13.4.3 一個函數(shù)調(diào)用多個函數(shù) 325
13.5 局部變量和全局變量 327
13.6 函數(shù)遞歸 328
13.6.1 使用局部變量的遞歸 329
13.6.2 不使用局部變量的遞歸 330
13.7 本章小結(jié) 332
13.8 上機(jī)提議 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ù)結(jié)構(gòu) 350
14.4 本章小結(jié) 356
14.5 上機(jī)提議 356
第15章 一些混雜的主題 359
15.1 腳本編寫風(fēng)格 360
15.1.1 縮進(jìn) 360
15.1.2 {}的格式 362
15.1.3 空格和空行的用法 362
15.1.4 判斷和循環(huán)的編程風(fēng)格 363
15.1.5 命名規(guī)范 364
15.1.6 注釋風(fēng)格 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)基礎(chǔ)知識 380
15.5.2 /dev/zero偽設(shè)備 381
15.5.3 /dev/null偽設(shè)備 383
15.6 /proc文件系統(tǒng) 384
15.6.1 使用/proc/sys優(yōu)化系統(tǒng)參數(shù) 386
15.6.2 查看運(yùn)行中的進(jìn)程信息 387
15.6.3 查看文件系統(tǒng)信息 388
15.6.4 查看網(wǎng)絡(luò)信息 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 本章小結(jié) 401
15.1 上機(jī)提議 401
第16章 Shell腳本調(diào)試技術(shù) 403
16.1 Shell腳本調(diào)試概述 404
16.2 Shell腳本調(diào)試技術(shù) 406
16.2.1 使用trap命令 406
16.2.2 使用tee命令 409
16.2.3 調(diào)試鉤子 411
16.2.4 使用Shell選項 412
16.3 本章小結(jié) 417
16.4 上機(jī)提議 417
第17章 bash Shell編程范例 420
17.1 將文本文件轉(zhuǎn)化為HTML文件 421
17.2 查找文本中n個出現(xiàn)頻率最高的單詞 425
17.3 偽隨機(jī)數(shù)的產(chǎn)生和應(yīng)用 427
17.4 crontab的設(shè)置和應(yīng)用 431
17.5 使用MySQL數(shù)據(jù)庫 434
17.5.1 MySQL基礎(chǔ) 434
17.5.2 Shell腳本使用MySQL 437
17.6 Linux服務(wù)器性能監(jiān)控系統(tǒng) 442
17.6.1 Ganglia簡介及安裝 443
17.6.2 提取服務(wù)器性能參數(shù)名稱及數(shù)據(jù) 448
17.6.3 動態(tài)更新服務(wù)器監(jiān)控數(shù)據(jù) 455
17.7 本章小結(jié) 457
17.8 上機(jī)提議 457
附錄 459
附錄A POSIX標(biāo)準(zhǔn)簡介 460
附錄B 常用ASCII碼對照表 461
附錄C Linux信號及其意義 466
附錄D bash內(nèi)建變量索引 467
附錄E bash內(nèi)建命令索引 469
參考文獻(xiàn) 472