圖書信息
深入淺出Linux工具與編程
余國平著ISBN 978-7-121-13750-1
2011 年7 月出版
定價:79.000 元
16開
568頁
內 容 簡 介
本書系統地論述了Linux 工具與編程的相關知識。全書內容可分為兩部分:Linux 知識的初級部分和高級部分。其中初級部分包括Linux 作業系統介紹、Linux 命令說明、Linux 常見實用工具(正則表達式、find、sed、awk)、Shell 編程、Linux C 語言程式設計、Linux C 語言開發工具(vi 與vim 編輯器、gcc、Makefile 和gdb);高級部分包括Linux 進程編程(Linux 進程、Linux 執行緒、管道與信號、訊息佇列、信號量和共享記憶體)、Linux 檔案編程、網路編程和XML 編程。
本書初級部分適合高等院校相關專業學生和Linux 愛好者學習,高級部分適合Linux 行業資深從業人員學習。
前 言
作者在軟體行業從業了十年,先後通過了國家軟體水平等級考試的《高級程式設計師》級別和《系統分析師》級別,參加了大型行業軟體如銀行核心業務系統、前置系統、數據倉庫、金卡工程、銀行大小額現代化支付、中間件、支付寶銀行端接口等一系列項目設計、開發、測試和實施工作,具有豐富的軟體編程經驗,同時,一直在多家企業負責新員工的培訓工作,對企業員工培訓有較多的心得。新員工在大量繁多的技術面前常碰到應該學什麼、怎么學的問題;各種技術與工具知識點怎么分優先權和重點問題;技術玻璃紙難以突破,水平難以提高的問題,等等。在企業里,員工怎樣在時間有限、精力有限的情況下掌握好實用和有用的技術,滿足企業用人的需要?作者總結的經驗是培訓教材的導向必須注重目的性、思想性、實踐性、典型性和實用性,以任務驅動式培訓和以目標管理為方法,用圖文和言簡意賅的語言描述技術思想,用經典程序說明技術思想,用多個項目實戰案例解釋如何高水平運用技術思想。
模仿是人們快速提高自身能力的捷徑,本書的許多程式十分經典,採用實際編程使用的架構,讀者可以作為編程模板套用於實踐。本書的編排注重易學習性、可模仿性和實戰性,其中模板化編程案例和規範化練習可以讓在讀者短時間內把書本知識變成自身的能力。本書也是一本技術思想深厚的圖書,書中的許多內容來源於作者十年技術積累的總結,本書有些技術概念的概括來源於作者多年的思考和感悟,項目案例來源於作者從業的實際項目中。
本書由長期從事一線開發的技術人員編寫完成,書中內容通俗易懂,作者力求讓Linux技術變得簡單,讀者在閱讀本書後能大大增加學習Linux技術的信心。本書把繁多的Linux技術進行了濃縮,能大大節約讀者的學習時間和學習成本。本書注重對技術概念簡要概括,更注重技術實現,書中的一些技術細節的概括來源於作者多年工作經驗的總結。沒有理論,實踐是盲目的;沒有實踐,理論是空洞的。本書力求用言簡意賅的理論讓讀者掌握技術的精髓,用經典程式和項目案例使讀者加深對技術理論的理解。本書用精練的概念總結技術,用通俗易懂的語言說明技術,用精心的模板程式和項目案例實現技術。
本書內容
第1篇 linux命令及其工具本篇包括Linux作業系統介紹、Linux命令說明、Linux常見實用工具(正則表達式、find、sed、awk)說明及實例練習、Shell編程語法說明及編程實例。
第2篇 Linux C語言程式設計本篇包括C語言基礎、C語言控制結構、C語言函式、C語言數組、結構體及指針、C語言預編譯、格式化I/O函式、字元串和記憶體操作函式、字元類型測試函式、字元串轉換函式、Linux C語言開發工具(vi與vim編輯器、gcc、Makefile和gdb)。本篇多次運用堆疊表格對程式運行進行解釋,這對於理解計算機語言運行機理非常重要。只有理解的才是最深刻的,理解其運行機理,可以觸類旁通、一通百通,移植到理解C++語言和Java等語言。
第3篇 Linux進程本篇包括Linux編程基本概念、Linux進程、Linux執行緒、管道與信號、訊息佇列、信號量和共享記憶體。Linux進程章節中守護進程模板和數據倉庫多進程處理案例可以套用到實際項目中。本篇Linux進程間通信程式範例是實際項目中精簡的Demo程式,程式模型和使用方法與實際項目中類似。
第4篇 Linux檔案本篇包括Linux檔案編程,該部分內容對檔案函式進行了分類總結,並提供了典型範例。
第5篇 網路編程本篇包括網路知識基礎、Socket編程。Socket編程章節包括TCP並發伺服器案例、TCP疊代伺服器案例、檔案伺服器案例、UDP伺服器編程、UDP廣播、UDP多播、UNIX/Linux域套接字編程等。
第6篇 XML編程本篇包括XML概念、XML語法、XPath語法、libxml編程、支付寶銀行端接口XML項目案例。本篇內容是目前市面上對Linux下XML編程總結非常全面的圖書,在實際項目開發中有較大的借鑑意義。
本書特色
1.零起點的企業級培訓教程讀者。只需具有大學計算機專業及相關專業一般水平,即可對本書進行閱讀和練習。本書內容通俗易懂,圖文並茂,注重知識點的總結概括和分類。知識結構注重層層遞進,以達到讓讀者在低起點向專家邁進的目的。有Linux從業基礎部分(如Linux C語言程式設計),有Linux從業素質能力培養部分(如Linux命令及其工具、Linux C語言開發工具),也有Linux編程專家水平能力訓練部分(如Linux進程編程、Linux檔案編程、Linux進程間通信、網路編程與XML編程)。本書涵蓋了Linux原理篇、命令篇、工具篇和程式篇。
專業就是“簡單的事情”重複做,做到專業,就是把複雜的事情簡單化,其方法為分類、分層、總結、模板化和流程化。而本書正是致力於這一目的,把複雜的技術簡單明了地呈現在讀者面前,幫助讀者成為專業人士。
2.大量的企業級實訓內容。本書的許多章節是作者關於企業級培訓的實訓內容,知識點注重目標明確、言簡意賅、分清主次、項目導向,以求達到簡潔不簡單的效果。本書屬於企業級實訓教程,以Linux行業從業素質能力培養為導向,以實際套用為目標,以簡潔的理論和經典練習為過程,以期達到快速提高讀者的職業水平和職業能力。本書採用Linux行業素質能力模型的訓練方法,即將Linux從業知識點逐條列出,並把知識點整合到規範化練習案例中,以達到讓讀者通過模仿練習快速把知識變為能力的目的。如本書Linux工具與命令章節,讀者只要按照練習,即可達到Linux行業從業所需的中級水平,而Shell章節按照練習即可快速提高到Linux行業老員工的水平。本書這些企業級培訓內容能幫助讀者在短時間內學到實用且夠用的Linux開發知識。
3.學什麼,怎么學。一門技術是很難在短時間內學好的,但通常可以快速學會常用和關鍵的技術。本書以實用論為導向,丟棄了項目開發中用不到的眾多技術細節。
本書注重理論聯繫實際,作者把自己十年的項目經驗整合到本書中,將Linux從業的知識進行分類、總結,並輔以案例講解,許多知識點都以實際工作所需知識為準,也是以作者所掌握的主要和重點知識為準。
書中的許多章節配有典型程式和規範化案例練習,學完理論後按照案例練習,即可達到技術的提升。本書內容的選取完全參照作者十年從業經驗所用到的知識,言簡意賅的圖文講解和規範化案例練習告訴讀者怎么學。
4.多個實用項目案例。本書包含多個經典的項目案例,如Shell章節的備份腳本、C語言章節的實用日誌庫、Linux進程章節數據倉庫多進程案例、網路章節的實用檔案伺服器和實用通信庫、XML章節支付寶銀行端接口項目的XPath庫。這些案例具有較大的實用參考價值。
5.XML章節填補市場空白。XML是軟體行業經常使用的技術,經常套用在數據交換、Web服務、內容管理、電子商務、配置腳本等許多方面。目前市面上的圖書缺少針對XML開發技術的案例介紹,本書對這部分內容進行了專門的總結,同時提供了豐富的練習和經典的項目案例。
6.能快速學習提高的培訓教程。時間是人類發展的空間,贏得時間就是贏得個人發展的空間。在個人的職業生涯中,一步領先常常可以做到步步領先。讀者只要靜下心來用一個月時間對閱讀本書,並進行練習,就可以大大提高Linux技術編程水平。
由於作者水平有限,書中錯漏之處在所難免,懇請讀者批評指正。
目 錄
第1篇 Linux命令及其工具
第1章 Linux系統與命令 2
1.1 Linux作業系統 2
1.1.1 Linux重要概念 2
1.1.2 Linux組成 3
1.1.3 linux目錄結構 3
1.1.4 Linux作業系統的組成 5
1.1.5 Linux用戶管理 6
1.1.6 Linux檔案管理 6
1.2 Linux命令 7
1.2.1 Linux命令幫助 7
1.2.2 Linux命令的符號及意義 8
1.2.3 Linux命令 9
第2章 Linux常用實用工具 18
2.1 正則表達式 18
2.2 find查找命令 20
2.2.1 find語法 20
2.2.2 find實例練習 22
2.3 sed 24
2.3.1 sed語法 24
2.3.2 sed實例練習 26
2.4 awk 29
2.4.1 awk語法 29
2.4.2 awk實例練習 36
第3章 Shell編程 40
3.1 Shell環境變數 40
3.1.1 環境變數說明 40
3.1.2 用戶常用的系統環境變數 41
3.1.3 用戶登錄腳本示例 42
3.2 Shell的符號、變數及運行 43
3.2.1 Shell中的符號及其含義 43
3.2.2 “反引號命令替換 44
3.2.3 Shell變數 45
3.2.4 Shell腳本執行 50
3.2.5 Shell退出狀態 50
3.3 Shell的輸入和輸出 51
3.3.1 Shell的輸入 51
3.3.2 Shell的輸出 52
3.4 Shell測試條件 53
3.5 Shell的流程控制結構 57
3.5.1 if語句 57
3.5.2 case語句 59
3.5.3 while語句 60
3.5.4 until語句 61
3.5.5 for語句 62
3.5.6 跳轉語句 64
3.6 Shell數組 64
3.7 shell函式 65
3.8 I/O重定向 67
3.9 Shell內置命令 68
3.10 實用Shell腳本 73
第2篇 Linux C語言程式設計
第4章 C語言基礎 76
4.1 C語言基本概念 76
4.2 常量與變數 84
4.3 運算符 89
4.4 C語言控制結構 96
4.4.1 if語句 97
4.4.2 switch語句 100
4.4.3 goto語句 101
4.4.4 while語句 102
4.4.5 do-while語句 103
4.4.6 for語句 104
4.4.7 break和continue語句 106
第5章 C語言函式 107
5.1 函式簡述 107
5.2 函式變數 110
5.3 函式定義與調用 110
5.3.1 函式定義 110
5.3.2 函式的參數與返回值 111
5.3.3 函式調用 115
第6章 C語言數組、結構體及指針 119
6.1 C語言數組 119
6.1.1 數組概述 119
6.1.2 一維數組 120
6.1.3 二維數組 124
6.1.4 字元數組 127
6.1.5 冒泡法排序 128
6.2 C語言結構 129
6.2.1 結構概念 129
6.2.2 結構變數 131
6.3 指針 134
6.3.1 指針概念 134
6.3.2 sizeof、void、const說明 139
6.3.3 指針變數作為函式參數 140
6.3.4 指針的運算 142
6.3.5 指向數組的指針變數 144
6.3.6 數組名作為函式參數 146
6.3.7 函式指針變數 148
6.3.8 返回指針類型函式 149
6.3.9 指向指針的指針 150
6.3.10 結構指針 150
6.3.11 動態存儲分配 152
6.3.12 指針鍊表 153
6.3.13 指針數據類型小結 154
第7章 C語言預處理 156
7.1 define宏定義 156
7.2 typedef重定義 157
7.3 inline關鍵字 158
7.4 條件編譯 158
7.5 頭檔案的使用 159
第8章 格式化I/O函式 161
8.1 格式化輸出函式 161
8.1.1 輸出函式原型 161
8.1.2 輸出函式格式說明 162
8.2 格式化輸入函式 165
8.2.1 輸入函式原型 165
8.2.2 輸入函式格式說明 165
第9章 字元串和記憶體操作函式 169
9.1 字元串操作函式說明 169
9.2 字元串函式操作 170
9.3 字元類型測試函式 179
9.4 字元串轉換函式 180
第10章 標準I/O檔案編程 182
10.1 檔案打開方式 183
10.2 標準I/O函式說明及程式範例 185
第11章 Linux C語言開發工具 200
11.1 vi與vim 200
11.1.1 vi與vim概述 200
11.1.2 指令模式 201
11.1.3 末行模式 207
11.1.4 vim個人使用經驗 210
11.1.5 vim的使用 211
11.1.6 檔案編碼 214
11.1.7 vi與vim模擬練習 217
11.2 gcc 218
11.2.1 gcc簡要說明 218
11.2.2 gcc參數 220
11.3 Makefile 224
11.3.1 Makefile簡介 225
11.3.2 Makefile語法 227
11.3.3 Makefile的運行 231
11.3.4 Makefile的擴展話題 232
11.4 gdb 233
11.4.1 gdb語法 233
11.4.2 gdb調試 238
第3篇 Linux進程
第12章 Linux進程編程 242
12.1 Linux進程編程基本概念 242
12.1.1 登錄 242
12.1.2 檔案和目錄 243
12.1.3 輸入和輸出 243
12.1.4 程式與進程 244
12.1.5 ANSI C 245
12.1.6 用戶標識 247
12.1.7 出錯處理 247
12.1.8 Linux信號、時間值與系統調用 249
12.2 Linux進程環境 256
12.3 Linux進程控制 267
12.4 進程關係 289
12.5 守護進程與多進程並發案例 293
12.5.1 守護進程的編寫 293
12.5.2 多進程並發項目案例 296
第13章 Linux執行緒編程 300
13.1 執行緒簡要說明 300
13.2 執行緒主要函式 302
13.3 執行緒編程 308
13.3.1 執行緒創建 308
13.3.2 終止線程 310
13.3.3 執行緒互斥 312
13.3.4 執行緒同步 315
第14章 Linux進程間通信——管道與信號 318
14.1 進程間通信概述 318
14.2 管道 319
14.2.1 pipe管道 320
14.2.2 標準流管道 324
14.2.3 命名管道(FIFO) 325
14.3 信號 328
14.3.1 信號概述 328
14.3.2 信號的傳送和捕捉函式 332
14.3.3 信號的處理 337
第15章 System V進程間通信 346
15.1 System V進程間通信的鍵值 346
15.2 訊息佇列 350
15.2.1 訊息佇列簡要說明 351
15.2.2 訊息佇列函式 352
15.2.3 訊息佇列使用程式範例 355
15.3 信號量 360
15.3.1 信號量簡要說明 360
15.3.2 信號量函式 361
15.3.3 信號量應用程式示例 364
15.4 共享記憶體 366
15.4.1 共享記憶體簡要說明 366
15.4.2 共享記憶體函式 368
15.4.3 共享記憶體套用範例 370
第4篇 Linux檔案
第16章 Linux檔案編程 376
16.1 檔案系統函式 376
16.2 初級檔案I/O函式 392
16.3 標準I/O的緩衝和刷新 399
第5篇 網路編程
第17章 網路知識基礎 402
17.1 網路體系結構及協定 402
17.1.1 網路體系結構概念 402
17.1.2 TCP/IP模型 405
17.1.3 網路分類與廣域網 407
17.1.4 網路地址 410
17.2 TCP/IP協定簇報文格式 412
第18章 Socket編程 416
18.1 套接字說明及函式說明 416
18.1.1 套接字說明 416
18.1.2 Socket地址說明及轉換函式 419
18.1.3 Socket主要函式說明 424
18.2 TCP套接字編程 432
18.2.1 TCP套接字編程模型 432
18.2.2 疊代伺服器編程 436
18.2.3 並發伺服器編程 437
18.3 TCP檔案伺服器項目案例 443
18.4 UDP編程 458
18.4.1 普通UDP伺服器編程 458
18.4.2 UDP廣播 461
18.4.3 UDP多播 464
18.5 原始套接字 469
18.5.1 原始套接字說明 469
18.5.2 原始套接字舉例 471
18.6 本地進程間套接字 478
18.6.1 非命名UNIX域套接字管道 478
18.6.2 UNIX域套接字 479
18.7 I/O編程模型 483
第6篇 XML編程
第19章 XML概念與語法 490
19.1 XML概述 490
19.2 XML語法 493
19.3 XPath語法 503
19.3.1 XPath基本語法 503
19.3.2 XPath位置路徑 508
19.3.3 XPath示例 514
第20章 libxml編程 518
20.1 libxml編程基礎 518
20.1.1 libxml的安裝 518
20.1.2 libxml主要的數據類型 519
20.1.3 libxml的主要函式說明 522
20.1.4 XML常見操作 530
20.2 libxml高級編程進階 536
20.2.1 理解DOM樹 536
20.2.2 libxml編程實例練習 541
20.2.3 支付寶銀行端接口XML項目
案例 547
附錄 552
參考文獻 555