內容簡介
Shell是用戶與核心進行互動操作的一種接口,是Linux最重要的軟體之一,目前最流行的Shell 稱為bash Shell。bash Shell 腳本編程以其簡潔、高效而著稱,多年來成為Linux 程式設計師和系統管理員解決實際問題的利器。
《Linux Shell編程從初學到精通(第2版)》結合大量的示例,系統、全面地介紹了bash Shell腳本編程的語法、命令、技巧、調試等內容,在書中還有很多練習可以引導讀者思考,力求使讀者掌握Linux bash Shell 編程的所有特性。本書結構清晰、易教易學、實例豐富、可操作性強、學以致用,對易混淆和實用性強的內容進行了重點提示和講解,並配有光碟,光碟中提供書中出現的所有腳本檔案、各章的講解PPT,以及各章的講解錄像。
《Linux Shell編程從初學到精通(第2版)》面向廣大工程技術工作者,既可作為高等學校的教師和相關專業學生的教材,又可作為各類培訓班的培訓教程。
圖書信息
華清遠見系列圖書
Linux Shell 編程從初學到精通(第 2 版)
華清遠見嵌入式培訓中心 伍之昂 等 編著
ISBN 978-7-121-24822-1
2015 年1月出版
定價:79.00元
496 頁
16 開
內容提要
Shell 是用戶與核心進行互動操作的一種接口,是Linux 最重要的軟體之一,目前最流行的Shell 稱為bash Shell。bash Shell 腳本編程以其簡潔、高效而著稱,多年來成為Linux 程式設計師和系統管理員解決實際問題的利器。
《Linux Shell編程從初學到精通(第2版)》結合大量的示例,系統、全面地介紹了bash Shell 腳本編程的語法、命令、技巧、調試等內容,在書中還有很多練習可以引導讀者思考,力求使讀者掌握Linux bash Shell 編程的所有特性。本書結構清晰、易教易學、實例豐富、可操作性強、學以致用,對易混淆和實用性強的內容進行了重點提示和講解,並配有光碟,光碟中提供書中出現的所有腳本檔案、各章的講解PPT,以及各章的講解錄像。
《Linux Shell編程從初學到精通(第2版)》面向廣大工程技術工作者,既可作為高等學校的教師和相關專業學生的教材,又可作為各類培訓班的培訓教程。
目錄
第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腳本編程的優勢 7
1.3 第一個Shell腳本例子 8
1.3.1 Shell腳本的基本元素 8
1.3.2 執行Shell腳本 10
1.4 本章小結 11
第2章 Linux檔案系統和文本編輯器 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 系統變數 92
4.4.6 格式化輸出 94
4.4.7 內置字元串函式 95
4.4.8 向awk腳本傳遞參數 97
4.4.9 條件語句和循環語句 99
4.4.10 數組 99
4.5 本章小結 103
4.6 上機提議 103
第5章 檔案的排序、合併和分割 105
5.1 sort命令 106
5.1.1 sort命令的基本用法 106
5.1.2 sort和awk的聯合用法 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 環境變數 138
6.1.4 位置參數 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 退出狀態 158
7.2 測試 159
7.2.1 測試結構 159
7.2.2 整數比較運算符 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 數字常量 183
7.5 本章小結 185
7.6 上機提議 185
第8章 循環與結構化命令 187
8.1 for循環 188
8.1.1 列表for循環 188
8.1.2 不帶列表for循環 192
8.1.3 類C風格的for循環 193
8.2 while循環 196
8.2.1 計數器控制的while循環 196
8.2.2 結束標記控制的while循環 198
8.2.3 標誌控制的while循環 200
8.2.4 命令行控制的while循環 202
8.3 until循環 203
8.4 嵌套循環 204
8.5 循環控制符 208
8.5.1 break循環控制符 208
8.5.2 continue循環控制符 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數學運算 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類型與區別 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 進程和作業 301
12.3.2 作業控制 302
12.3.3 信號 307
12.3.4 trap命令 309
12.4 本章小結 312
12.5 上機提議 312
第13章 函式 314
13.1 函式的定義和基本知識 315
13.2 向函式傳遞參數 318
13.3 函式返回值 321
13.4 函式調用 322
13.4.1 腳本放置多個函式 322
13.4.2 函式相互調用 324
13.4.3 一個函式調用多個函式 325
13.5 局部變數和全局變數 327
13.6 函式遞歸 328
13.6.1 使用局部變數的遞歸 329
13.6.2 不使用局部變數的遞歸 330
13.7 本章小結 332
13.8 上機提議 333
第14章 別名、列表及數組 335
14.1 別名 336
14.2 列表 339
14.3 數組 342
14.3.1 數組的基本用法 342
14.3.2 數組的特殊用法 346
14.3.3 用數組實現簡單的數據結構 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 判斷和循環的編程風格 363
15.1.5 命名規範 364
15.1.6 注釋風格 365
15.2 腳本最佳化 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檔案系統 379
15.5.1 /dev檔案系統基礎知識 380
15.5.2 /dev/zero偽設備 381
15.5.3 /dev/null偽設備 383
15.6 /proc檔案系統 384
15.6.1 使用/proc/sys最佳化系統參數 386
15.6.2 查看運行中的進程信息 387
15.6.3 查看檔案系統信息 388
15.6.4 查看網路信息 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個出現頻率最高的單詞 425
17.3 偽隨機數的產生和套用 427
17.4 crontab的設定和套用 431
17.5 使用MySQL資料庫 434
17.5.1 MySQL基礎 434
17.5.2 Shell腳本使用MySQL 437
17.6 Linux伺服器性能監控系統 442
17.6.1 Ganglia簡介及安裝 443
17.6.2 提取伺服器性能參數名稱及數據 448
17.6.3 動態更新伺服器監控數據 455
17.7 本章小結 457
17.8 上機提議 457
附錄 459
附錄A POSIX標準簡介 460
附錄B 常用ASCII碼對照表 461
附錄C Linux信號及其意義 466
附錄D bash內建變數索引 467
附錄E bash內建命令索引 469
參考文獻 472
前言
隨著Linux逐步成為主流的伺服器作業系統,Shell腳本編程成為一名優秀的Linux開發者和系統管理員必須掌握的技術之一。bash Shell為當前大部分Linux版本所使用,本書旨在系統地介紹bash 4.2.25版本下的Shell腳本編程。
本書共分為17章:第1章介紹Shell的概念、Shell腳本編程的優勢和結構等入門知識;第2章講述Shell腳本編程不可或缺的Linux系統的基礎知識;第3章介紹正則表達式和grep命令族;第4章闡述sed命令和awk命令這兩種在Shell編程中常用的工具;第5章介紹Shell編程在檔案排序、合併和分割上的一些命令;第6章探討變數和引用;第7章介紹退出、測試及操作符;第8章介紹循環與結構化命令;第9章深入討論了變數的高級用法;第10章詳述I/O重定向,包含管道、exec命令等重要內容;第11章簡述了UNIX/Linux發展過程中出現的其他類型的Shell;第12章介紹子Shell、限制性Shell和進程等內容;第13章介紹函式的用法;第14章介紹別名、列表及數組;第15章羅列了無法歸入其他章節的混雜主題,包含腳本編寫風格、腳本最佳化、/dev和/proc檔案系統等;第16章介紹了Shell腳本的調試技術;第17章給出六個Shell編程的實例,讀者需要綜合使用前面章節所述的Shell命令和編程技巧,涉及系統管理、文本處理和資料庫等多個方面。
本書內容豐富,覆蓋了Shell編程的大部分技術,並結合典型示例透徹地介紹了Shell命令、選項、結構中的重點和難點。各章最後還配有一定數量的練習題供讀者學習。為了幫助讀者更加直觀地學習本書,我們將書中出現的所有腳本檔案、各章的講解PPT,以及各章的講解錄像都收錄到本書的配套光碟中。
本書面向廣大工程技術工作者,可作為高等學校的教師和相關專業學生的教材。
本書由南京財經大學江蘇省電子商務重點實驗室伍之昂博士和王有權組織編寫。在本書編寫的過程中,實驗室主任曹傑教授在全書的體系結構、理論闡釋和實例選取等方面提出了許多精闢的見解,研究生陳志傑同學精心潤色了本書的文字。參加編寫工作的還有呂平、高克臻、張雲霞、張璐、許小榮、王冬、王龍、張銀芳、周新國、陳可湯、陳作聰、蘇靜、周艷麗、祁招娣、張秀梅、張玉蘭、李爽、卿前華、王文婷、肖岳平、肖斌、蔡娜等,在此,對他們表示誠摯的謝意!
限於筆者水平,本書一定有不少錯誤和不妥之處,希望得到計算機專家、同行和讀者的批評與指正。您可以通過E-mail的方式與筆者聯繫。
編 者