linux下推薦書籍

 工作幾年來,一直從事Linux內核驅動方面的開發。從接觸Linux到現在,讀過不少Linux方面的書籍,現把認爲很不錯的一部分列出來和大家分享一下。

入門類 
    一直認爲,在一個系統上學習開發之前,首先需要熟悉這個系統的使用。鑑於天朝的國情,絕大部分人第一個接觸的操作系統就是Windows,因此對於這絕大部分人來說,如果要學習Linux開發,學會使用這個系統都是必不可少的一個環節。
    現在的Linux初學者是幸福的,隨着Linux桌面環境越來越易用,入門一個新的系統是非常容易的事情。雖然命令行對於提高工作效率更加有效,但我們完 全可以把熟悉命令的過程放到日常使用中進行。無論學習什麼知識,在實踐中學習都是高效而且有趣的。在這個階段,我們也未必一定需要書籍。現在很多 Linux發行版的Wiki寫得都非常詳細,在使用某一種發行版時找到相應的Wiki閱讀查詢就可以了。而且,桌面環境變化太快,關於桌面的介紹類書籍幾 乎都沒有必要看,這類書籍大多剛一出版就過時了。
    那入門類書籍裏哪些比較有價值呢?我比較推薦涉及的技術相對比較穩定的書。比如,Linux基本的體系結構和命令一般都是經久不變的,甚至從上古時期的Unix開始就沒太多變化,這類書籍講解的知識也是以後大幅提高我們的生產力的基礎。比如《鳥哥的Linux私房菜》 ,比如《Unix Power Tools》 (中譯名是“UNIX超級工具”),或者是爲Linux+認證考試準備的《Linux+ Study Guide》 。當然,這一類書籍其實都不必精讀,快速瀏覽之後作爲工具書備查就可以了。

編程類 
    類Unix系統的編程書籍裏,最經典的莫過於簡稱爲APUE的《Advanced Programming in the UNIX Environment》 (中 譯名是“Unix環境高級編程”),這本書被廣大Unix程序員(包括Linux)捧爲“聖經”。借用葛大爺的廣告詞:“這就像進館子一樣,一條街上,哪 家人多我進哪家”。APUE對類Unix系統的編程接口講解的非常全面詳細,對於這本書,我們不僅要精讀,還應該放在案頭常備。
    但是,APUE對於Linux編程初學者似乎稍深了一點,而且很多細節在Linux中並不會用到。講述Linux編程的書籍裏,《Advanced Linux Programming》 應該更加適合初學者。不要被書名中的“Advanced”嚇到,書裏的內容還是很容易理解的。看完這本書再看APUE應該效果會更好。
    如果要開發GUI程序,上面兩本書就無能爲力了。在Linux世界裏,最常用的GUI Toolkit是GTK+和QT。
GTK+的書籍並不多,在線文檔只適合查閱,並不是一個完整的學習體系。《Foundations of GTK+ Development》 是其中很不錯的一本書,喜歡GTK+的開發者可以拿來作爲入門書籍。
    相對來說,QT的書籍就很豐富了,這和QT具有良好的跨平臺能力有很大關係,QT的書籍並不只是寫給Linux程序員看的,在Windows和MAC OSX下同樣可以使用QT開發程序。比較值得一看的QT類書籍有《C++ GUI Programming with QT4》 、《Foundations of QT Development 》、《The Art of Building QT Applications》 ,這三本都比較適合QT初學者閱讀。另外,《Advanced Qt Programming 》會介紹到QT一些比較高級的用法,適合有一定QT基礎的讀者閱讀。

內核類 
    對於Linux內核或者設備驅動的開發者,最全面最直接的學習資料一定是Linux內核代碼及其文檔。Linux內核的發佈週期很短,相關書籍的出版完全 跟不上腳步。但隨着內核代碼的日益龐大,學習曲線越來越陡峭,入門者又非常需要書籍來作爲指導,這確實是非常矛盾的事情。所幸,很多Linux內核技術作 家也是很勤奮的,經常會更新自己的作品。就像Robert Love,以2.6內核爲藍本的《Linux Kernel Development 》已經更新到第三版了。LKD是非常適合內核初學者閱讀的一本好書,對它的評價可以引用陳莉君老師的譯者序:
    相對於 Daniel P. Bovet 和 Marco Cesati 的內核鉅著《 Understand the Linux Kernel 》,它少了五分細節,相對於實踐經典《 Linux Device Drivers 》,它多了五分說理。可以說,本書填補了 Linux 內核理論和實踐之間的鴻溝,“一橋飛架南北,天塹變通途”。
    謝謝陳老師,她的譯者序幫我引出了另外要談到的兩本經典書籍,對,就是《Understanding the Linux Kernel》 和《Linux Device Drivers 》。對於這兩本書,如果要挑它們的缺點,我只能說,內容有點老,很多知識點都需要更新了,除此之外,我要說的是,是它們把我帶上了內核驅動開發這條路上來,當然,還有LKD。
    最近,我又發現一本分析Linux內核的優秀書籍,就是《Professional Linux Kernel Architecture》 。這本書我目前正在讀,寫得非常好,而且因爲此書相對較新(只是相對,2.6.24內核在現在看來也很老了),沒有看過ULK的同學可以直接看這本書。

工具類 
    工欲善其事,必先利其器。進行Linux開發,相關工具還是需要熟練使用的。比如,GNU Tool Chain、自動構建工具、編輯器、版本控制工具等等。
    這裏有一本包羅萬象的書,叫做《Handbook of Open Source Tools 》,書中介紹了各種各樣的開源工具,可稱之爲開源技術的總決式。這本書試圖面面俱到,因此並不深入,粗讀即可。
    GNU Tool Chain參考Redhat的《The GNUPro Toolkit 》已經足夠了,如果單獨把makefile拎出來,還可以參考《Managing Projects with GNU Make 》。
    自動構建工具可以參考《Autotools 》。如果您準備使用cmake,推薦cjacker的《Cmake實踐 》。《Mastering CMake 》據說是cmake的權威書籍,但一直無緣得見啊。
    說到編輯器,在Linux裏最著名的莫過於Vim和Emacs,關於這兩者的背景,可以去看看《爲何Emacs和Vim被稱爲兩大神器 》。我幾乎沒用過Emacs,曾經在噹噹做活動時花9塊錢買了一本《學習GNU Emacs 》,有這本書作爲Emacs的入門我想應該夠了。Vim是我經常使用的編輯器之一(另一個是Kate,最初喜歡上Kate的原因之一就是它提供了Vim編輯模式),相關的書籍有兩本值得一讀:《A Byte of Vim 》和《Hacking Vim 7.2 》,但是對於初學者,首先跟着Vim自帶的vimtutor練習效果會更好。
    Linux下的版本控制工具很多,有傳統的Subversion,也有現在非常流行分佈式工具如Git等。Subversion可以參考這本《Version Control with Subversion 》,Git可以參考《Version Control with Git 》或者《Git Internals 》或者《Pro Git 》。

其它 
    除了以上幾個類別,還有一些書籍值得推介。
    比如《The Art of Unix Programming 》,主要介紹了Unix系統領域中的設計開發哲學、思想文化體系以及社羣文化等,覆蓋面非常廣。書中的一些內容和《Revolution OS 》有相似之處,大家可以自己印證一下。對於這本書,我們也完全可以把它當做小說或者歷史書來看,可以躺在牀上看,也可以癱在沙發上看,或者像怪怪那樣坐在馬桶上看,總之,不必一定要端坐在書桌前。

    《Computer Systems: A Programmer's Perspective 》 很多人都推薦過,這是一本非常經典的計算機體系方面的教材。CSAPP的內容基礎全面,講解簡明扼要,易於理解,仔細讀完之後對理清計算機體系結構甚至是 Linux內核都非常有幫助的。雖然中文名被譯爲《深入理解計算機系統》(這個譯名很不貼切),但相比之下,爲什麼會讓人感覺國內的同類教材更加“深奧” 呢?也許,這就是作者功力的差距吧。




操作系統
《Linux 內核設計與實現(第2 版)》
《深入理解Linux 內核(第二版)》
《Linux內核分析與編程》
Linux方面的好書最多。其中《Linux 內核設計與實現(第2 版)》(Robert Love著,機械工業出版社出版譯
著)屬短小精悍之作,用作《操作系統概念》的配套正好。
《深入理解L i n u x 內核(第二版)》(Daniel Bovet著,中國電力出版社出版譯著)分析全面透徹,不過國外已經出版的最新版尚未引進。
此外,倪繼利的《Linux內核分析與編程》(電子工業出版社)是國人的經驗總結,趙炯的《Linux 內核完全註釋》分析的是0.11 版內核,適合初學者,都可以列入候選。

驅動程序開發
《Linux 設備驅動程序》(第三版)
驅動程序的開發和操作系統內核其實息息相關。所以本書的內容與前面的大類難免會有一些重疊。作爲黑客世界的經典,本書實在不需要我多加推薦了。值得一提的是譯者(魏永明、耿嶽、鍾書毅)都是國內Linux 界有數的頂尖人物。

系統編程
《UNIX 環境高級編程》(英文影印版)(第2 版)
R. Stevens也許是有史以來最偉大的技術圖書作家,雖然他辭世日久,但是人們對他的景仰反而因爲其著作的少有褪色而與日俱增。如果本文的範圍擴大到網絡編程,他的另外兩部“聖經級”著作《TCP/IP 詳解》和《UNIX 網絡編程》也絕對應該入選。本書的地位相當於甚至還超過了Richter 著作在Windows世界的地位
轉自:http://hi.baidu.com/cchaha0227/blog/item/1b98afce335a5a0493457e70.html
入門篇 
    《LINUX權威指南》書不錯,寫的很全面也比較廣,涉及的不深,做爲入門書籍不錯,可以比較全面的瞭解linux 。另外比較熱門的也可以看看《鳥哥的私房菜》等書,偏管理類的書。如果想做server方向的可以找來看看。 

驅動 篇 
    《LINUX設備驅動程序 》就是網上說的“LDD”,經典之作,必備書籍。國產經典《Linux驅動詳細解》也是一本非常不錯的書,很實用,書中源代碼 分析比較多,基於2440的,對linux外圍驅動有很全面的講解 

內核篇 
    浙江大學的《LINUX內核源代碼情景分析》,外國鬼子的《萊昂氏UNIX源代碼分析》還有《深入理解linux內核》都是出名的經典鉅作。另外趙炯的《LINUX內核完全剖析--基於0.12內核》也非常不錯,對內核代碼進行了詳細的註釋,非常有助於對內核的理解和代碼的分析。 

shell篇 
    《LINUX與UNIX Shell編程指南》 

應用 編程 
    不用說了肯定是《unix環境高級編程》被稱爲unix編程的聖經。 

TCP/IP篇 
    《TCP/IP詳解》作者W.Richard Stevens也是《unix環境高級編程》的作者,牛人出的書沒有一本不是經典的。但是英年早逝,默哀一下。 

c語言 
    《The C Programming Language》正是作者造出來的c語言,書能垃圾就怪了 
    《c和指針》和《c缺陷和陷阱》兩本必備。包含了c語言最容易出錯的地方,加深c語言功力的好材料。 
關於算法 
    《算法導論》
轉自:http://yuyunxin511.blog.163.com/blog/static/6137357201010122580223/



ABS,高級Bash腳本編程指南,http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/


推薦看這本:《Learning the bash shell》(http://book.douban.com/subject/3296982/)


內容清晰,提綱挈領
書不是很厚,可以很快看完,然後投入實踐




1. < < Advanced Bash-Scripting Guide > > ,即ABS,http://tldp.org/LDP/abs/html/。
經典的Online教程,內容全面,對每一個知識點都有相當多的實例,適合系統的學習。之前有翻譯的版本出到過3.9.1。


2. < < UNIX Shells by Example Fourth Edition > > ,網上有chm下載。
這本書適合用的時候查詢,結構很清晰,以語法爲主。它的亮點在於將幾種常用的不同種類的Shell分開來描述。


3. < < Linux Command Line and Shell Scripting Bible > > ,網上有pdf下載。
這本書也很全面。適合那些喜歡一章一章看書的人去學,印刷質量相當的好。


4. < < LINUX與UNIX Shell編程指南 > > ,網上有pdf下載。
中文。中文。中文。


< < UNIX Shells by Example Fourth Edition > > 推薦這本,網上有中文版pdf。內容豐富,講解也不錯。每個例子都是c shell ,ksh,bash三種都有,最好着重學習一個,個人喜歡bash,簡練且緊湊。c shell的交互功能做的倒是不錯,不過要是用它寫腳本你會想去撞牆。
其實學什麼教材倒是其次,堅持只用linux做桌面環境纔是關鍵,同時拔掉你的鼠標。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章