
深入浅出Linux工具与编程
《深入浅出Linux工具与编程》是2011年出版的图书,本书系统地论述了Linux 工具与编程的相关知识。
基本介绍
- 书名:深入浅出Linux工具与编程
- 作者:余国平
- ISBN: 978-7-121-13750-1
- 页数:568
- 定价:79.00元
- 出版时间:2011 年7 月
- 开本:16
内 容 简 介
本书系统地论述了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