天天看點

《UNIX程式設計環境》——導讀

《UNIX程式設計環境》——導讀

**

前言

“unix安裝的數量已經增加了10倍,預期還将更多。”

—unix程式員手冊,1972年6月第2版

unix1作業系統是1969年首次在貝爾實驗室的一台丢棄的dec pdp-7計算機上啟用的。當時ken thompson從rudd canaday、doug mcilroy、joe ossanna和dennis ritchie那裡獲得理念和支援,編寫了小型通用分時系統,其适用性能良好,足以吸引熱心的使用者,并最終為一台較大的計算機—pdp-11/20的購買提供了充分的可靠性。系統早期的使用者之一是ritchie,他在1970年曾幫助将該系統轉到pdp-11計算機上。ritchie也曾設計和編寫了c程式語言用的編譯程式。1973年,ritchie和thompson用c語言重寫了unix核心,打破了系統軟體要用彙編語言編寫的傳統。經過此次重寫,該系統最終成為今天必不可少的作業系統。

大約在1974年,大學獲得了“用于教育目的”的unix使用許可,而且,幾年後unix有效地開拓了商業用途。在此期間,unix系統在貝爾實驗室取得了成功,進而找到了進入實驗室、軟體開發項目、字進行中心和電話公司運作支援系統的途徑。從那時起,unix已遍布整個世界,從微型計算機到最大的主機,已安裝了數以萬計的unix系統。

是什麼促使unix系統如此成功呢?可以闡明幾個原因。首先,由于是用c語言編寫,是以它是可移植的,unix系統的運作範圍可以從微處理系統到最大的主機。這是一個強大的商業優勢。其次,源代碼非常有效并且是用進階語言編寫的,進而使系統容易适應特殊的需求。最後,也是最重要的一點,它是一個良好的作業系統,特别是對程式員而言,unix程式環境通常是豐富而有成果的。

盡管unix系統引入了很多創新的程式和技術,但是一個單獨的程式或想法并不能使工作完美無缺。相反,是程式設計的處理方式才使系統有成效,這也是應用計算機的一個基本原則。雖然這個基本原則不能用一句話概括,但其核心就是,系統的能力更多地來自程式之間的關系,而不是程式本身。許多unix程式雖然單獨做相當簡單的工作,但是,在與其他程式結合起來使用時,它們就成為全面而有益的工具。

本書的目的是傳播unix程式設計的基本原則,由于這個基本原則是以程式間的關系為基礎的,是以我們必須用大量的篇幅專門對單個的工具進行讨論,但同時貫穿了程式組合的主題和運用程式進行建立程式的内容。要想很好地使用unix系統及其組成部件,不僅必須了解如何使用程式,還要了解怎樣使其與環境相比對。

随着unix系統的廣泛應用,能夠熟練掌握unix系統的使用者越來越難找到。好幾次,我們發現富有經驗的使用者,包括我們自己在内,隻能笨拙地找到問題的解法,或者隻會寫程式去做現有的工具易于處理的工作。當然,如果沒有一定的經驗和了解,就不易了解精巧的解法。我們希望無論是新手還是老使用者,通過閱讀本書,都能夠開發了解力,進而使系統的使用更加有效和有趣。希望讀者更好地使用unix。

我們把目光對準程式員們,希望通過本書使其工作更有效,進而也可以使程式組的工作更有成果。盡管我們的主要對象是程式員,但前4章或前5章并不需要具有程式設計經驗就可以了解,是以,對于其他使用者來說,本書也是很有幫助的。

無論如何,我們已經盡可能嘗試使用真實的、而不是人為的例子來表述我們的觀點。盡管有一些程式在本書中是作為例子開始的,但它們就此而成為常用程式的一部分。所有執行個體都經過了機器可讀格式文本的直接測試。

**[第1章 初學unix

1.1.1 有關終端和輸入的一些預備知識

1.1.2 與unix會話

1.1.3 登入

1.1.4 鍵入指令

1.1.5 異常的終端行為

1.1.6 鍵入錯誤

1.1.7 繼續鍵入

1.1.8 中止程式

1.1.9 登出

1.1.10 郵件

1.1.11 使用者間通信

1.1.12 新聞

1.1.13 手冊

1.1.14 計算機輔助教學

1.1.15 遊戲

<a href="https://yq.aliyun.com/articles/103722">1.2 檔案和常用指令</a>

1.2.1 建立檔案

1.2.2 列出檔案

1.2.3 顯示檔案

1.2.4 移動、複制和删除檔案

1.2.5 檔案名

1.2.6 有用的指令

1.2.7 檔案系統指令小結

<a href="https://yq.aliyun.com/articles/103740">1.3 目錄</a>

<a href="https://yq.aliyun.com/articles/103777">1.4 shell</a>

1.4.1 檔案名簡寫

1.4.2 i/o重定向

1.4.3 管道

1.4.4 程序

1.4.5 剪裁環境

<a href="https://yq.aliyun.com/articles/103784">1.5 unix系統的其餘部分</a>

**[第5章 shell程式設計

<a href="https://yq.aliyun.com/articles/103822">5.2 which</a>

<a href="https://yq.aliyun.com/articles/103834">5.3 while和until循環:觀察情況</a>

<a href="https://yq.aliyun.com/articles/103841">5.4 trap:捕獲中斷</a>

<a href="https://yq.aliyun.com/articles/103858">5.5 overwrite:改寫檔案</a>

<a href="https://yq.aliyun.com/articles/103866">5.6 zap:使用名字終止程序</a>

<a href="https://yq.aliyun.com/articles/103880">5.7 pick指令:空格和參數</a>

<a href="https://yq.aliyun.com/articles/103885">5.8 news指令:社團服務資訊</a>

<a href="https://yq.aliyun.com/articles/103894">5.9 get和put:追蹤檔案變動</a>

<a href="https://yq.aliyun.com/articles/103901">5.10 後記</a>

繼續閱讀