Linux的经典书籍及学习方法
一、linux之路,路漫漫其修远兮,吾将上下而求索!先上经典书籍!
1.入门篇
《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux 。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。
2.驱动篇
《LINUX设备驱动程序 》科波特著就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码 分析比较多,基于2440的,对linux外围驱动有很全面的讲解。程序开发,高薪在 Linux ; Linux程序员,高薪在驱动开发。可以说, Linux驱动程序员,薪水在万元以下的,一个都没有。普遍观点认为, Linux驱动开发很难学,这并不正确。初学者认为 Linux驱动开发很难学,关键在于其没有选对正确的入门书籍。《 Linux设备驱动程序》这本书,过去已经有多位 Linux项目经理推荐过,你要想学MOD编程,想挑战高薪职位,这本书读一读是很有必要的。当然,这本书不是一本针对初学者的书籍,初学者应首先学习前面提到的《UNIX环境高级编程》再看这本书,你才能真正的学懂学好 Linux 驱动开发。
3.内核篇
浙江大学的《LINUX内核源代码情景分析》,外国的《UNIX源代码分析》还有《深入理解linux内核》都是出名的经典巨作。
学习 Linux ,就要学习 Linux的精华。而 Linux的精华,则在于 Linux的内核。《深入理解 Linux内核》就是一本辅助学习 Linux内核的经典书籍。有的初学者,在没有人指导的情况下,就钻入 Linux Kernel代码的海洋中埋头苦学,结果学了半天仍然是一头雾水。当然了,在大师指导下学习就不一样了。本书以最新的 Linux 2.6 版架构为基础,分门别类地向初学者介绍了Linux内核的架构、编程思想、以及功能模块。相信你在本书的指导下学习,对于你读懂 Linux操作系统的精华部分,会取得事半功倍的效果。事实上,不少知名公司招聘的题目里面,很多就出自这本书,可见它真的是论述 Linux内核的经典书籍。
4.shell篇
《LINUX与UNIX Shell编程指南》
5.应用编程
不用说了肯定是《unix环境高级编程》被称为unix编程的圣经。《UNIX环境高级编程》是 Unix/ Linux程序员案头必备的一本书籍。可以说,Linux程序员如果没有读过这本书,就好像基督教徒没有读过圣经一样,是很难让人理解的。这本书概括了 Linux编程所需的一切理论框架、主要系统函数、多进程编程、乃至 Linux网络通信。对于初学者,如果你能将《操作系统》这门课程结合着这本书来学习,试着用 Linux程序实践《操作系统》这门书中讲的进程间通信、进程调度、进程同步等内容,相信这将是一个一举两得的事情。哦,忘了告诉大家,上次 CNN采访 Google总裁佩林的时候,佩林的书架上就有这本书的英文版,可见它真的是一本全球开发者必备的一本书。
6.TCP/IP篇
《TCP/IP详解》作者W.Richard Stevens也是《unix环境高级编程》的作者,牛人出的书没有一本不是经典的。但是英年早逝,默哀一下。
7.c语言
《The C Programming Language》正是作者造出来的c语言,书能垃圾就怪了。
《c和指针》和《c缺陷和陷阱》两本必备。包含了c语言最容易出错的地方,加深c语言功力的好材料。
C专家编程,c语言技术手册, Practice cProgramming 等。
8.算法
《算法导论》,床头必备喝
注:这些经典的书是经得起反复琢磨的,知识并不是一蹴而就的,需要反复实践,反复理解!千万不要妄想一口吃个胖子!
9、《嵌入式 Linux 应用开发完全手册》,韦东山著
要说 Linux应用最广泛的地方,那一定是无处不在的嵌入式设备了,《嵌入式 Linux应用开发完全手册》就是一本教会您怎样开发Linux嵌入式系统软件的一本好书。这本书综合了常见的嵌入式开发经验技巧,以及常见的嵌入式系统应用,系统移植,调试及异常处理等,内容非常丰富,是中文 Linux领域难得的一本好书。嵌入式处理器种类繁多,韦老师着重讲了目前国内最常用的ARM系统,实用性很强,是国内嵌入式程序员不容错过的一本工具书。
10、《人月神话》(32周年中文纪念版),布鲁克斯著
上面为大家推荐了几本 Linux编程经典书籍,但要问编程的最终目的是什么,那一定还是要应用到实际项目中。做项目,那就一定离不开《人月神话》这本书。《人月神话》的作者布鲁克斯,是公司的超级大牛人,也是图灵奖的获得者。去年,他到中国访问的时候曾经表示,《人月神话》这本书,浓缩了项目实践中的正反两方面经验,是项目经理和系统分析师必读的一本书。各位年轻的朋友,最终还是会要管项目的,与其你临时再学习,还不如早点接触这方面的知识比较好。可以说,Linux的项目,对开发者的要求都很高,大家不要去跟 Windows程序员学一些不好的习惯,特别是项目实施方面的一些不好的习惯,而应该深入体会大师的书籍。目前,《人月神话》的32周年纪念版已经上市了,有志于成为项目经理和产品经理的人,不应该错过这本做项目的圣经。
二、如何学习linux
Linux操作系统主要就是一些配置文件(/etc)和命令行工具(/bin /sbin /usr/bin /usr/sbin),要掌握操作系统的主要目录结构和配置文件,运用系统的命令行工具(shell脚本)完成常规的操作系统维护工作,监控工作。进而可以安装部署一些企业应用,进行监控、管理等等。
1.重要的命令:find,sed,awk,正则……
2.工具:gnu下的著名软件 gcc,gdb,vi,make……
3.unix编程,编译等。Xwin开发方式,gtk,qt……
4.文件系统,/dev下的设备(会用),/var下重要的东西,/etc 下的配置(常用服务配置apache, ftpd, sshd, xinetd,squid, natd, named),系统启动顺序,配置相应服务等……
5.c,python,php等高级语言……
三、个人水平定位
1.初级:熟练使用命令、熟悉Shell编程、能配置简单的服务,清楚各类服务相关的配置文件的位置, 能看懂并可修改系统提供的配置脚本(/etc/*.*)。推荐书籍:
《鸟哥的私房菜基础篇、高级篇》
《Advanced Bash Shell》
2.中级:熟悉TCP/IP原理、OS原理、熟练使用C语言、Linux系统编程、网络编程。 推荐书籍:
《The C Programming Language》
《Unix环境高级编程》
《Linux程序设计》
《TCP/IP协议详解卷一》
《Unix网络高级编程》
3.高级: 内核,驱动级别。推荐书籍:
《Linux Device Driver》
《深入理解Linux内核》
《深入理解计算机系统》
《深入理解LINUX网络内幕》
四、学习途径
1.HelpSystem 帮助文档(man)
2.onlinebooks 在线文档(wiki ,blogs)
3.TrainingGuide 培训教程
4.TopicCollections 专题
5.Forms 论坛
6.名家的书籍
7.IRC,邮件列表等
8.理论与理论中的实践的差别并不如理论与实践中的实践差别那样大!
五、其他的书
javascript基础教程,~高级程序设计,~权威指南,~DOM编程艺术,~设计模式,~入门经典
UNIX in aNutshell,The unix programming environment,unix技术手册
managingprojects with make
applyingRCS and SCCS
六、自己的路
linux/unix(c , bash(shell) , 工具(vi, gcc, make) , 内核机制, python(高级语言) , 开源)
设计理念,系统管理,unix环境,服务器,嵌入式,桌面,移动设备
贡献者:水煮鱼、xiangzi888