深入浅出Linux工具与编程


深入浅出Linux工具与编程

文章插图
深入浅出Linux工具与编程【深入浅出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系统与命令 21.1 Linux作业系统 21.1.1 Linux重要概念 21.1.2 Linux组成 31.1.3 Linux目录结构 31.1.4 Linux作业系统的组成 51.1.5 Linux用户管理 61.1.6 Linux档案管理 61.2 Linux命令 71.2.1 Linux命令帮助 71.2.2 Linux命令的符号及意义 81.2.3 Linux命令 9第2章 Linux常用实用工具 182.1 正则表达式 182.2 find查找命令 202.2.1 find语法 202.2.2 find实例练习 222.3 sed 242.3.1 sed语法 242.3.2 sed实例练习 262.4 awk 292.4.1 awk语法 292.4.2 awk实例练习 36第3章 Shell编程 403.1 Shell环境变数 403.1.1 环境变数说明 403.1.2 用户常用的系统环境变数 413.1.3 用户登录脚本示例 423.2 Shell的符号、变数及运行 433.2.1 Shell中的符号及其含义 433.2.2 “反引号命令替换 44 3.2.3 Shell变数 453.2.4 Shell脚本执行 503.2.5 Shell退出状态 503.3 Shell的输入和输出 513.3.1 Shell的输入 513.3.2 Shell的输出 523.4 Shell测试条件 533.5 Shell的流程控制结构 573.5.1 if语句 573.5.2 case语句 593.5.3 while语句 603.5.4 until语句 613.5.5 for语句 623.5.6 跳转语句 643.6 Shell数组 643.7 Shell函式 653.8 I/O重定向 673.9 Shell内置命令 683.10 实用Shell脚本 73第2篇 Linux C语言程式设计第4章 C语言基础 764.1 C语言基本概念 764.2 常量与变数 844.3 运算符 894.4 C语言控制结构 964.4.1 if语句 974.4.2 switch语句 1004.4.3 goto语句 1014.4.4 while语句 1024.4.5 do-while语句 1034.4.6 for语句 1044.4.7 break和continue语句 106第5章 C语言函式 1075.1 函式简述 1075.2 函式变数 1105.3 函式定义与调用 1105.3.1 函式定义 1105.3.2 函式的参数与返回值 1115.3.3 函式调用 115第6章 C语言数组、结构体及指针 1196.1 C语言数组 1196.1.1 数组概述 1196.1.2 一维数组 1206.1.3 二维数组 1246.1.4 字元数组 1276.1.5 冒泡法排序 1286.2 C语言结构 1296.2.1 结构概念 1296.2.2 结构变数 1316.3 指针 1346.3.1 指针概念 1346.3.2 sizeof、void、const说明 1396.3.3 指针变数作为函式参数 1406.3.4 指针的运算 1426.3.5 指向数组的指针变数 1446.3.6 数组名作为函式参数 1466.3.7 函式指针变数 1486.3.8 返回指针类型函式 1496.3.9 指向指针的指针 1506.3.10 结构指针 1506.3.11 动态存储分配 1526.3.12 指针鍊表 1536.3.13 指针数据类型小结 154第7章 C语言预处理 1567.1 define宏定义 1567.2 typedef重定义 1577.3 inline关键字 1587.4 条件编译 1587.5 头档案的使用 159第8章 格式化I/O函式 161 8.1 格式化输出函式 1618.1.1 输出函式原型 1618.1.2 输出函式格式说明 1628.2 格式化输入函式 1658.2.1 输入函式原型 1658.2.2 输入函式格式说明 165第9章 字元串和记忆体操作函式 1699.1 字元串操作函式说明 1699.2 字元串函式操作 1709.3 字元类型测试函式 1799.4 字元串转换函式 180第10章 标準I/O档案编程 18210.1 档案打开方式 18310.2 标準I/O函式说明及程式範例 185第11章 Linux C语言开发工具 20011.1 vi与vim 20011.1.1 vi与vim概述 20011.1.2 指令模式 20111.1.3 末行模式 20711.1.4 vim个人使用经验 21011.1.5 vim的使用 21111.1.6 档案编码 21411.1.7 vi与vim模拟练习 21711.2 gcc 21811.2.1 gcc简要说明 21811.2.2 gcc参数 22011.3 Makefile 22411.3.1 Makefile简介 22511.3.2 Makefile语法 22711.3.3 Makefile的运行 23111.3.4 Makefile的扩展话题 23211.4 gdb 23311.4.1 gdb语法 23311.4.2 gdb调试 238第3篇 Linux进程第12章 Linux进程编程 24212.1 Linux进程编程基本概念 24212.1.1 登录 24212.1.2 档案和目录 24312.1.3 输入和输出 24312.1.4 程式与进程 24412.1.5 ANSI C 24512.1.6 用户标识 24712.1.7 出错处理 24712.1.8 Linux信号、时间值与系统调用 24912.2 Linux进程环境 25612.3 Linux进程控制 26712.4 进程关係 28912.5 守护进程与多进程并发案例 29312.5.1 守护进程的编写 29312.5.2 多进程并发项目案例 296第13章 Linux执行绪编程 30013.1 执行绪简要说明 30013.2 执行绪主要函式 30213.3 执行绪编程 30813.3.1 执行绪创建 30813.3.2 终止执行绪 31013.3.3 执行绪互斥 31213.3.4 执行绪同步 315第14章 Linux进程间通信——管道与信号 31814.1 进程间通信概述 31814.2 管道 31914.2.1 pipe管道 32014.2.2 标準流管道 32414.2.3 命名管道(FIFO) 325 14.3 信号 32814.3.1 信号概述 32814.3.2 信号的传送和捕捉函式 33214.3.3 信号的处理 337第15章 System V进程间通信 34615.1 System V进程间通信的键值 34615.2 讯息伫列 35015.2.1 讯息伫列简要说明 35115.2.2 讯息伫列函式 35215.2.3 讯息伫列使用程式範例 35515.3 信号量 36015.3.1 信号量简要说明 36015.3.2 信号量函式 36115.3.3 信号量应用程式示例 36415.4 共享记忆体 36615.4.1 共享记忆体简要说明 36615.4.2 共享记忆体函式 36815.4.3 共享记忆体套用範例 370第4篇 Linux档案第16章 Linux档案编程 37616.1 档案系统函式 37616.2 初级档案I/O函式 39216.3 标準I/O的缓冲和刷新 399第5篇 网路编程第17章 网路知识基础 40217.1 网路体系结构及协定 40217.1.1 网路体系结构概念 40217.1.2 TCP/IP模型 40517.1.3 网路分类与广域网 40717.1.4 网路地址 41017.2 TCP/IP协定簇报文格式 412第18章 Socket编程 41618.1 套接字说明及函式说明 41618.1.1 套接字说明 41618.1.2 Socket地址说明及转换函式 41918.1.3 Socket主要函式说明 42418.2 TCP套接字编程 43218.2.1 TCP套接字编程模型 43218.2.2 叠代伺服器编程 43618.2.3 并发伺服器编程 43718.3 TCP档案伺服器项目案例 44318.4 UDP编程 45818.4.1 普通UDP伺服器编程 45818.4.2 UDP广播 46118.4.3 UDP多播 46418.5 原始套接字 46918.5.1 原始套接字说明 46918.5.2 原始套接字举例 47118.6 本地进程间套接字 47818.6.1 非命名UNIX域套接字管道 47818.6.2 UNIX域套接字 47918.7 I/O编程模型 483第6篇 XML编程第19章 XML概念与语法 49019.1 XML概述 49019.2 XML语法 49319.3 XPath语法 50319.3.1 XPath基本语法 503 19.3.2 XPath位置路径 50819.3.3 XPath示例 514第20章 libxml编程 51820.1 libxml编程基础 51820.1.1 libxml的安装 51820.1.2 libxml主要的数据类型 51920.1.3 libxml的主要函式说明 52220.1.4 XML常见操作 53020.2 libxml高级编程进阶 53620.2.1 理解DOM树 53620.2.2 libxml编程实例练习 54120.2.3 支付宝银行端接口XML项目案例 547附录 552参考文献 555