unix編程藝術
A. 為什麼unix系統的源代碼是保護的,而linux作為一個類unix系統,源代碼確實開源的
雖然Unix與Linux操作系統有不少的命令是相同的,但是他們的源代碼則是不同的。也就是說,在
Linux操作系統開發過程中,採用了很多Unix系統的設計理念,並遵循Unix操作系統的POSIX規范。但是其並沒有採用Unix操作系統的源代
碼,並沒有採用Unix操作系統的運行方式。從這一點來說,他們兩個是不同的操作系統。
現在Unix操作系統走的是商業化的道理,其源代碼是受到保護的。這也就是說,任何社會團體與個人都不能夠抄襲或者隨意修改Unix操作系統的
源代碼。而Linux在開發過車觀念中,源代碼都是重新書寫的,所以就沒有版權上面的限制。無論是個人還是商業團體,只要遵循一定的規范,就可以對
Linux的源代碼進行更改或者復制。不會涉及到版權的問題。 故Linux操作系統才是一個真正的開源操作系統。
了解更多開源相關,去LUPA社區看看吧。
B. linux shell 編程學習 誰給推薦一本書最好是PDF的
<<LINUX命令、編輯器與SHELL編程>>
<<高級Bash腳本編程指南>>
C. 誰知道《Unix編程藝術》中文版哪裡有的下載
不好意思 我沒仔細看 把剛才那個答案刪掉了
http://download.chinaitlab.com/system/files/8489.html
我找了這個網站 要先注冊 你先看看 簡體中文
但是好象是05年就出了 不一定是你需要的那個
還有china-pub上有前三章
還有 呵呵 買一本吧 50左右 銀子也不是太多
呵呵 我還會繼續幫你找的
D. 《Unix編程藝術》中文版哪裡有的下載
第一部分:http://wenku..com/view/57bce5d8d15abe23482f4d39.html
第二部分:http://wenku..com/view/d54f33768e9951e79b892739.html
第三部分:http://wenku..com/view/3c2e63d380eb6294dd886c39.html
網路文庫里的內容,你是網路用戶,就不用再注冊了。
E. 如何取得一份 Linux 或者一份免費的 BSD-Unix, 並將它安裝在機器上, 並使之順利的運作
linux的版本很多,對於初入linux之門來說,ubuntu是最好的選擇. 官方下載地址:http://www.ubuntu.org.cn/download/ubuntu/download/
建議先在虛擬機下學習linux,這樣是最安全的.
ubuntu有一種安裝方式叫作wubi安裝,這種安裝方式是把這個系統當成win系統的一個軟體來安裝,但是,這種安裝方式也有著諸多不便,不過它的好處是不需要重新分區.
另外是獨立分區安裝,linux分區與win分區是不同的,這樣的安裝對於新手來說就需要慎重.所以建議你先在虛擬機下安裝.
F. UNIX編程藝術的序
Unix is not so much an operating system as an oral history.
與其說Unix是個操作系統,不如說是一部口述歷史。
——Neal Stephenson
知識和專能差異巨大,憑借知識可以推斷出該做什麼,而專能讓你甚至在無意之間,條件反射似的把事情做好。
這本書確實有關「知識」,但更著眼於「專能」。你將學到那些Unix專家們都不自知的Unix開發知識。少一點技術,多一些共享文化:顯見和隱微的,直觀和潛流的——這是本書和大多數Unix書籍不同的地方——不止於方法,更重乎理念。
理念於實用大有裨益,有太多設計不良的軟體:體積臃腫,難於維護、移植和擴展——這些都是蹩腳設計的癥候。我們希望本書的讀者能品出什麼是Unix所教示的良好設計。
本書分為四部分:場景、設計、工具和社群。第一部分(場景)涉及哲學和歷史,為後續內容埋下伏筆。第二部分(設計)將Unix哲學的原理細分為有關設計與實現的、更專門的建議。第三部分(工具)著眼於Unix所提供的工具,可助你解決問題。第四部分(社群)則講述人與人之間的事務與約定,而這正是Unix文化擁有高效能的原因。
這本書是關於共享文化的,我從未想像過獨自完成它。你會發現正劇中包含數位Unix資深專家的客串演出,正是這些人塑造了Unix的習俗。本書曾有過公開大范圍的審閱過程,這期間我邀請這些明星人士對書稿進行評審與研論。這些意見沒有湮沒在本書定稿中,而你可以在書中聆聽到他們的真實聲音:無論是為本書吶喊助陣、還是搖頭反對。
本書中用到人稱「我們」時,我並不是虛張聲勢,僅以此說明這是整個社群都清楚明了的事實。
因為本書著力傳遞文化,因此加入了很多野史和坊間傳說,這在技術書中並不多見。希望你喜歡,這些東西其實是Unix程序員的教養。須彌不重,芥子不輕。我們希望以這種方式更好地講述故事。了解Unix的由來和變遷,會培養你對Unix風格的直覺。
同樣地,基於此,我們不打算使用回述歷史的腔調。你會發現本書參考了眾多時下信息。我們不希望給你一種錯覺:書里說的都是亘古不變的終極真理。參考時下的信息這一做法,也提醒讀者,三十年河東,三十年河西,眼前所見,也許過不了多久就會過時,而需要重新檢省。
另外,本書不是C教程,不是Unix命令和API的手冊,不是sed/yacc/Perl/Python的語言參考,也不是網路編程入門,更不是巨細靡遺的令人費解的X指南。本書也不打算帶你巡遊Unix內幕和體系。有很多其它的好書涵蓋這些領域,本書會在適當的時候告訴你該看哪些。
在這些技術細節外,Unix文化有一個未見諸筆端的行工傳統,以熟練工的考量,它已經有幾百萬人年的發展 。本書即立足於這樣一個信念:領會此傳統,並將它的設計手法應用到手邊,你將成為更好的程序員和設計師。
構成文化的是人,一直以來,獲知文化的方式大約是口口相傳、潛移默化。本書不打算取代人際的文化傳播,但可以促進這一過程,使你能俯耳傾聽他人的心聲。
誰應該看這本書
如果你是個Unix編程老手,經常教導菜鳥,或者與人進行操作系統論戰時無法闡明使用Unix方案所帶來的好處時,可以看看這本書。
如果你是個C、C++或者Java程序員,有其它操作系統的開發經驗,現在輪到你開展一個Unix項目時,可以看看這本書。
如果你是個初級或者中級水平的Unix用戶,但是沒什麼開發經驗,想學習在Unix下如何高效地設計軟體時,可以看看這本書。
如果你不在Unix下編程卻發覺Unix的傳統給你帶來某種啟迪,那你就對了,Unix哲學適用於其它的操作系統。因此我們會花比其它Unix書籍更多的篇幅關注非Unix環境(特別是微軟的操作系統);當所用到工具或者案例可用於其它操作系統時,我們會告訴你。
如果你是一個系統架構師,正為通用市場或垂直應用准備平台方案或實現策略時可以看看這本書。本書將幫助你了解Unix作為開發平台的強大功能,以及開放源碼這個Unix的傳統所帶來的開發方式。
如果你想學到C編程的細節或者想知道怎麼用Unix內核API,本書可能不適合你。Advanced Programming in theUnix Environment [Stevens92]是探究Unix API的經典名著;The Practice of Programming [Kernighan-Pike99]是每個C程序員的必讀書目(任何語言的程序員都該看看這本書)。
如何使用這本書
這本書既重實踐,更富理念;既包含警世格言,又不忘檢點Unix開發中的特殊案例。在每個警句前後,都有生動實例闡明其由來,這些例子絕不來自小兒科式的示常式序,而均出自真實世界滿眼所見的運行代碼。
我們著力避免以大量代碼或者規範文件來胡亂湊數,當然這么做會讓本書的寫作輕松許多(某些地方或許讀起來也更輕松)。絕大多數編程書籍只授你以魚,而本書避免這種做法,力求培養讀者「探求事情何以如此」的感知力。
正由於此,本書會時常請你閱讀代碼與規範文檔,它們中極少量的內容會附在書中,其餘部分我們會在舉例時告訴你如何從網上獲取。
從這些範例中汲取養分,將有助你將所學原則消化變為皰丁之技。如果你能就著一部跑在Unix系統上的網頁瀏覽器來讀書,是再理想不過的了。任何Unix系統都適合,但是我們將要研究的案例大多都會預裝在、或者可以從Linux系統上獲得,書中會提示請你瀏覽或親身感受它們。這些提示通常是按部就班的,跑開玩一會兒並不會打散整個講述過程的連續性。
注意:我們雖力求,但無法給你打保票,聲稱我們所引用的URLs穩定可用。如果你發現某個引用連接已陳舊過時,來點常識,用你喜愛的搜索引擎來個短語搜索。如有可能,我們會在所引用的URLs附近給出如何搜索的提示。
大多數縮寫形式會在首次出現時伴隨其全稱。為方便起見,我們在附錄中提供了名詞對照表。
交叉索引通常以作者名字為主導詞。帶編號的腳注是那些可能會擾亂你閱讀正文,或者是易變的URLs;也可能是旁徵博引的戰爭故事或者笑話 。
為了使這本書不至於讓非技術人員太過難讀,我們邀請了一些非程序員試讀,並指出一些晦澀但起貫穿作用的詞彙。我們把那些編程老手不太會需要的名詞解釋也放在腳注中。
相關引文
一些Unix早期拓荒者的著名論文和書籍,比如Kernighan和Pike的《The Unix Programming Environment》[Kernighan-Pike84]就是其中佼佼者,被世人尊為圭臬。而今看來此書廉頗老矣,它沒提到Internet、萬維網以及諸如Perl、Tcl和Python這些解釋型語言的新秀。
寫作本書的中途我們借鑒了Mike Gancarz的《The Unix Philosophy》[Gancarz]。這本書在它的覆蓋范圍內極其優秀,但是我們覺得需要更多內容才能反映出事情的全貌。盡管如此我們仍對此書作者心存感激,他愈發使我們知道最簡單的Unix設計手法就是最持久耐用的。
《The Pragmatic Programmer》[Hunt-Thomas]是一本關於良好設計的書,文風機智詼諧,它與本書相比,傾向於軟體設計工藝的另一個層面(更注重編碼,而少著墨於高層面的問題劃分)。作者的哲學是其Unix領域耕耘的成果,也是本書內容極好的補充。
《The Practice of Programming》[Kernighan-Pike99]包含了一些與《The Pragmatic Programmer》共通的內容,但更鑽入Unix傳統的深處。
最後(明知道會激怒你),我們推薦《Zen Flesh, Zen Bones》[Reps-Senzaki],一部重要的佛教禪宗本源的合集。對禪的引用書目遍布全書。我們將這些書目包含進來,是因為禪為表達某種想法提供了豐富的語匯,而在軟體設計中卻很難爛熟於心。信奉宗教的讀者,請您不要把禪當成宗教,它是一種心靈雞湯似的東西,純凈而沒有神靈的干擾——此即是禪。
本書的習俗約定
術語「UNIX」技術上和法律上講,是The Open Group的商標,並且應該僅限於那些通過The Open Group嚴格的「符合標准」認證的操作系統。本書中我們使用其較寬松的定義,即大多數程序員所指的,Bell實驗室Unix代碼的後裔或旁支。在這個意義下,Linux(大多數例子都舉自它)也算是一種Unix。
本書也使用了Unix手冊頁(manual page)的傳統,即以括弧括起來的手冊節號來標記Unix設施。通常用於強調一個Unix命令首次出現。比如「munger(1)」可解讀為「munger程序加入存在於你的系統中,其文檔位於Unix手冊頁的第1節」。第2節是C的系統調用,第3節是C的庫函數調用,第5節是文件格式與協議,第8節是系統管理工具。其它節號本書未曾用到,其定義在各個Unix系統各有不同。在你的Unix外殼提示符下輸入man 1 man(老式的System VUnix系統可能要輸入man -s 1 man)以獲得更多信息。
有時我們會提及某個Unix程序(比如Emacs),後面沒有手冊節號而且首字母大寫。這意味這個名字代表一族Unix程序,其基本功能相同,而我們將討論其通用特性。比如Emacs,就包含了xemacs。
本書很多地方我們同時給出了老式(old school)和新式(new school)解法。new-school和rap音樂一樣,開始於1990年前後。在這個含義下,我們往往把它與腳本語言、圖形用戶界面、開放源碼的Unix和萬維網聯系起來。Old-school指代1990年以前(特別是1985年以前)的世界:昂貴的共用計算機、專屬的Unix,shell腳本和無所不在的C。值得指出這些差異,機器越來越便宜,內存多了起來,這些有如暗流,漸漸影響著Unix編程的風格。
所用案例
很多編程書籍為證明某一觀點而特地造出一個範例,你手中這本書不這么干。我們的案例研究均來自真實世界,在生產環境中工作已久。下面是一些主要案例:
cdrtools/xcdroast
這兩個獨立的項目通常被一並使用。cdrtools是一組刻盤工具(用關鍵字「cdrtools」可以在網上找到)。xcdroast是cdrtools的圖型界面前端,其項目網站。
fetchmail
fetchmail用於從遠程郵件伺服器上收信,支持POP3和IMAP郵箱協議。其主頁為,也可以用關鍵字「fetchmail」從網上找到。
GIMP
GIMP(GNU Image Manipulation Program,GNU圖像處理程序)是一個全特性的繪畫和圖像處理程序,可對多種圖像格式進行復雜處理。其源碼可從GIMP主頁獲得(也可以通過關鍵字「GIMP」從網上搜到)。
mutt
mutt郵件客戶端是目前各類基於文本的郵件客戶端程序中的翹楚,提供對MIME(Multipurpose Internet Mail Extensions)、個人隱私輔助程序,如PGP(Pretty Good Privacy)和GPG(GNU Privacy Guard)等特性的絕佳支持。其源碼和二進制可執行文件可以從Mutt項目主頁獲得。
xmlto
xmlto可將DocBook和其它XML文檔以多種格式渲染輸出,包括HTML、純文本和PostScript。其源碼和文檔可在xmlto主頁獲得。
為了將讀者理解本書例子所要閱讀的代碼量降低到最小程度,我們盡量挑選那些可重復使用、並能體現多種不同設計原理和設計實踐的案例。出於同樣原因,很多示例來自於我本人的項目。我沒想說這些例子最為恰當,只是我覺得它們對闡述我的觀點非常有用。
作者致謝
各位客串貢獻者(Ken Arnold, Steven M. Bellovin, Stuart Feldman, Jim Gettys, Steve Johnson, Brian Kernighan, David Korn, Mike Lesk, Doug McIlroy, Marshall Kirk McKusick, Keith Packard, Henry Spencer, 和Ken Thompson)為本書增添極大價值。特別是Doug McIlroy,給予本書恪盡職責、鞭辟入裡的評注的同時,也展現了他早在30年前管理最原始的Unix研究組時鞠躬盡瘁的高風亮節。
我要對Rob Landley和我的妻子Catherine Raymond致以特別感謝,他們都不厭其煩地逐行對本書手稿進行審閱。Rob的深富洞察力的細致評述激勵我在最終稿中加入了一整章內容,他為本書的組織結構與取材范圍奉獻極多。如果把他所給予的改進意見落在筆端,那他無愧於本書的合著者。Cathy代表讀者中非技術人員的一群,如果那些非程序員讀者覺得本書並不難讀,那全是她的功勞。
寫作的五年間,本書從不少人的討論意見中獲益良多。Mark M. Miller使我對線程有了更深的認識。John Cowan教給我不少介面設計方式,並起草了wily和VM/CMS的學習案例。Jef Raskin告訴我Rule of Least Surprise的由來。UIUC System Architecture Group對前幾章給出的反饋彌足珍貴,What Unix Gets Wrong和Flexibility in Depth兩節是他們直接激勵的結果。Russell J. Nelson提供了Bernstein chaining的素材。第3章中MVS學習案例大部分的材料來自Jay Maynard。Les Hatton對語言一章給出很多有益建議,並促使我寫成第4章中Optimal Mole Size的部分內容。David A. Wheeler貢獻了很多發人深省的批評,以及一些學習案例(特別是在設計部分中)的素材。Russ Cox幫助我進行了Plan 9的調查。Dennis Ritchie糾正了我的一些錯誤的C歷史觀念。
成百上千的Unix程序員,人數太多以至於無法在此列出他們的名字,在2003年1月到6月間的公開審閱過程間給了我建議和評論。開放的同級復審這一過程讓我覺得緊張刺激而回報極多。當然,任何最終書稿中殘留的錯誤都是我自己的責任。
「把事情說透」的風格,以及其它一些考慮因素,是受到了「設計模式運動」的影響;說實話,我對到處堆砌Unix設計模式這種做法深不以為然。我對此運動的中心教條不敢苟同,並且沒覺得把設計模式嚴格付諸實用有什麼必要,也不想背上這種思想的包袱。盡管如此,我的行事方法仍然受到Christopher Alexander成果 (特別是《Timeless Way of Building》和《A Pattern Language》兩文)的影響。Gang of Four和他們的信徒為我展示了如何用Alexander的思想,站在較高層面上,拋去含混不清的對設計通則的空話,來談論軟體設計,這一點我心存感激,永誌不忘。對設計模式有興趣的讀者可以看看這本書《Design Patterns: Elements of Reusable Object-Oriented Software [GangOfFour]》。
本書標題毫無疑問是借鑒了Donald Knuth的《The Art of Computer Programming》一書的書名。Knuth和Unix傳統文化沒什麼聯系,但他影響了我們每一個人。
有先見之明和豐富想像力的編輯並不多,好在Mark Taub就是一個,他從並不看好的項目中發現了閃光點,並極富技巧地促成了這本書的寫作。文字編輯中,文筆好而又能幫助別人提高文筆的就更少了,所幸Mary Lou Nohr是其中之一。Jerry Votta的封面設計領會了我的意圖,而且做得比我的想像還要漂亮。Addison-Wesley的編輯們讓審稿和出版這一過程不再枯燥無味,我天生怕被人管,但是他們仍然極力配合我,使得文字、版面、圖片和市場工作都達到極高水準。
G. 求萬門大學計算機系書單
c語言
《C程序設計語言》 《C語言參考手冊》 C++ 《Essential C++》 《C++ Primer》 《深度探索C++對象模型》 《C++程序設計語言》 《Think in C++ C++編程思想》 Java 《 Java語言規范》 《Java並發編程實戰》 《Java核心技術 卷1》 《Java核心技術 卷2》 《 Java編程思想》 《Effective Java》 《深入分析Java Web技術內幕》修訂版 《深入理解Java虛擬機:JVM高級特性與最佳實踐》第二版 Python 《Python學習手冊》 《Python核心編程》 《Python網路數據採集》 《Flask Web開發:基於Python的Web應用開發實戰》 GO 《GO並發編程實踐》 Network 《計算機網路自頂向下方法》 《計算機網路》 《計算機網路系統方法》 《TCP/IP詳解卷1》 《TCP/IP詳解卷2》 《TCP/IP詳解卷3》 演算法 《演算法導論》 《演算法》 數據結構 《數據結構與演算法分析C語言描述》 程序設計 《程序設計實踐》 Unix/Linux 《The Design Of The Unix Operating System》 《 Unix環境高級編程》 《Unix網路編程卷1》 《Unix網路編程卷2》 《Unix超級工具》 《Unix編程環境》 《Unix編程藝術》 《鳥哥私房菜——基礎知識篇》 《鳥哥私房菜——伺服器篇》 《Linux內核設計與實現》 《Linux系統編程》 《深入理解Linux內核》 《 Linux設備驅動》 UML和面向對象 《面向對象分析與設計》 《UML面向對象建模與設計》 《UML用戶指南》 《設計模式》 計算機組成/體系結構 《深入理解計算機系統》 《計算機體系結構量化研究方法》 《計算機組成與設計:硬體/軟體介面》 《計算機組成與嵌入式系統》 《MIPS體系結構透視》 分布式/架構 《分布式系統概念與設計》 《分布式系統原理與范型》 《大型網站技術架構:核心原理與案例分析》 《大型網站系統與Java中間件實踐》 大數據/HADOOP 《Hadoop權威指南(中文第2版)》 數學系列 《數學分析新講》 《數學之美》 Git 《Git 權威指南》 安卓 《第一行代碼 android》 《Android 開發藝術探索》 《安卓群英傳》 其他 《人月神話》 《編譯原理》 《事務處理》 《匯編語言程序設計》 《程序員的自我修養—鏈接、裝載與庫》 《代碼揭秘----從c/c++角度探索計算機系統》 《編程之美》 《劍指offer》
H. 從0學linux內核代碼看什麼書好
「Unix網路編程」(UNIX Network Programming) 「UNIX環境高級編程」(Advanced Programming in the UNIX Environment) 「UNIX 編程藝術」(The Art of Unix Programming) 有能力盡量看英文版吧
I. 你好:如果想要讀懂《Unix高級環境編程》和《Unix網路編程卷1,套接字》
這些書我都讀過了,全是買的實體書
高級環境編程和兩本網路編程其實是相輔相成的
如果想在linux下發展,鳥哥基礎篇最好看看,很好
這些學習的前提是要有一定的c語言基礎
在學習網路編程時,可以順便參考一下《tcp/ip詳解.卷1》
其實頭三本書,已經非常不錯了,如果可以認真學完,水平也算可以了,就是要實踐來彌補不足了
建議:不要貪多,更不要放棄,切記切記
J. linux unix下的shell編程有什麼區別
區別不大,主要看shell的功能。UNIX編程藝術不錯,你下載 了看看吧。