第 1 場 柔道的黑腰帶 自從上一幕“傳奇的開始”在一些論壇得到發表以後,筆者的確收到一些朋友的來信,希望筆者能夠更加詳細的說說關於Linux 的一切,當然也不僅限於Linux本身。是的,筆者在這裡要坦率的告訴大家,在筆者的腦海裡和筆者的電腦硬盤裡的確“埋藏”著太多的Linux 的故事,而且這些故事都是動人且驚人的。其中就有自由軟件之父Richard Stallman,Linux 之父Linus Torvalds,自由軟件頭號理論家Eric S.Raymond,Linux 最大分銷商紅帽子公司的CEO Robert Young,自由軟件書籍最大出版商的創始人Tim O'Reilly,還有Web 服務器市場占有率最高的Apache社團的共同創始人及核心人員Brian Behlendorf等等等等。 毋庸置疑,以上所列的每一個人,每一個名字都帶著精彩的故事和夾帶著少許傳奇色彩,但是筆者更要坦率的告訴大家,如果筆者把上面這些人的故事都放在《Linux 探索》此系列文章中來講述的話,那麼就連筆者也不知道何時才能進入《Linux 探索》系列文章的真正主題――學習Linux 的技術了。 也許會在將來的某一天(或許就在明天),筆者會另開一系列文章,專門來講述這些讓人振奮的精彩故事,這裡就請大家“稍安勿躁”啦。 好了,閒話少敘,現在開始切入正題。本系列文章的主角就是Linux ,那麼什麼是Linux 呢?相信大家經過前一幕3 場的故事應該已經知道問題的答案了吧?只是如果您要向別人(他或者是她可能一點都不了解Linux )來介紹什麼是Linux的話,就沒有必要給他來講述那麼冗長的故事了,只需要一句話:Linux 是一種操作系統。什麼?還是不太明白?那麼再詳細一點:Linux 是一種和Windows 一樣的操作系統,可以幫助你完成工作的一個平台。(哦,如果他或者是她連Windows都不知道的話,那就不管你的事了^_^ ) 我知道接下來肯定會有人問:那麼是Linux 好呢,還是Windows 更棒呢?MyGod ,這是不是能夠算是一個經典問題呢?筆者想是的,因為要給出完整的答案可不是一件容易的事情!所以筆者在這裡也只能這樣回答您:Linux 和Windows哪個更棒,目前取決於您要干什麼和您問的人是誰。 當然,筆者知道這更像是一句“外交性質”的回答,也就是說了等於沒有說。呵呵,別著急,在第二幕的結束時筆者還會給您一個更准確的答案,以滿足您的好奇心。 讓我們正式來認識一下Linux 吧:Linux 是一個免費,開放源代碼,協作開發的類UNIX操作系統,它可以運行在大多數的硬件平台上。它提供了廣泛的網絡支持,同其他系統交換所必需的許多特性和大量本身擁有以及從其他系統引入的應用程序。 哦?開放源代碼?對於我們技術人員來說,看到這樣的單詞可是非常興奮哦。是真的嗎?在我們這個已經被自私,貪婪,欲望所纏繞的都市裡面還會有人把一個完整的操作系統的源代碼公開?是的!這就是GNU 計劃!偉大的理想計劃,許多人的終生夢想!GNU 的意思是“GNU 不是UNIX”(GNU's Not Unix)的單詞字頭縮寫。――這種遞歸方式的取名方法是計算機老手們的一種幽默。如果您理解不到這有什麼可笑之處,也沒有什麼關系,這只能證明您還是屬於大多數人的那一類。 化兩分鐘時間來認識一下GNU 計劃吧,雖然它在我們這個國度似乎根本沒有生存的空間!GNU 是自由軟件基金會(Free Software Foundation)的一個工程。該工程始於1984年,目標是創建一種免費的,類似於UNIX的操作系統。多年以後,他們編寫出許多GNU 工具,這些工具被許多商業UNIX供應商廣泛使用,當然,系統管理員也使用這些工具來完成任務。Linus Torvalds的Linux 內核最終使GNU的夢想(創建完全免費的,類似於UNIX的操作系統)變成了現實! 當然,就像有上帝就會有撒旦一樣,這個世界上總有人喜歡黑暗,他們享受著GNU 所帶來的好處,但是他們自己本身卻不肯(准確的說是不敢)實施GNU 計劃,這樣的人就存在於我們這個國度!而且如今還生存的非常“成功”。語所何指,就請讀者諸君自己去琢磨了。 現在筆者可以向您來解釋本場的標題“柔道的黑腰帶”的含義了。回想一下DOS 吧,還記得這個操作系統嗎?筆者是在1993年認識這個操作系統的。現在想想,大陸的資訊和教育的確落後,那個時候Windows 3.1 操作系統也已經投放市場一年多了,而我們還剛剛認識Dos ,不過這是我們的國情所致,可以理解和諒解。讓筆者印象最深的就是當時的Dos+WPS 讓中國多少人多了就業的機會!還有風靡數十年的“五筆字型”,以至於讓很多人產生這樣的一種錯覺:學電腦就是學打字。似乎在WPS 之前還有一種很流行的編輯工具,和四通有點關系,但是限於記憶,筆者在這裡已經難以回憶起來了(又懶得查資料,呵呵)。 DOS 的特色就是命令行方式操作。dir ,cd,md……這是筆者剛接觸Dos 時學的3 個命令的順序,你的呢? 親愛的讀者,這裡是您需要了解的事是:在本系列文章中,我會在命令行方式上投入比較多的精力。當然,我知道很多人喜歡那些美好的事物,比如夢幻般的界面之類的東西。但是從系統管理的角度來看,命令行實際上就是規則。它總是有效的,同時也是靈活的。即使是通過一條緩慢的跳制解調器線路,它也能操縱幾千公裡以外地遠程系統。讓我們面對這樣的現實吧:所有的圖形都是減慢網絡連接速度的殺手。 另一個原因是:漂亮的前端GUI 和圖形化桌面的確不賴,它可以讓一個新管理員,也可以在經過少量培訓之後完成任務。但應該真正理解的是:實際上,力量是來自於表層下(即友好的菜單和圖形化界面之下)所發生的事情! 學會運用命令行就像類似於獲得了柔道中的黑腰帶或者說獲得了急救證書。但是這並不是說在遇到障礙(或對手)時突然擁有了解決方法,而是說將擁有自信和知識,這樣就可以保護自己,或是在有緊急情況發生時加以處理。記住吧:命令行是強大的!可隨時使用! 當然,這並不是說我們不要那些圖形化的東西,畢竟漂亮的東西人人喜歡,不是嗎?尤其是當您面對那些膽小的用戶的時候,把舒服的圖形化工具放在他的面前是再好也不過的了。同樣的,這些用戶經常做的一件事情就是喜歡把夢幻般的窗口界面看成是對操作系統性能的一種測試。(“我要打魔獸爭霸或者是打CS”)出於這方面的考慮,筆者也將介紹圖形化方式的操作。 但是筆者是一個誠實的人,可不想隱瞞什麼事實。還是要告訴大家命令行操作是第一位,GUI 是第二位。畢竟,許多GUI 接口實際上只是命令行漂亮的前端或者說是包裝而已罷了。而且對於經驗豐富的系統管理員來說,他們會發現GUI工具很難提供全部的可選參數。而要想提供完備的參數的話,一般又會使GUI 操作界面變得與其對應的命令行程序同樣復雜。本來GUI 的設計就是要簡化操作。因此有經驗的用戶基本都回返回到命令行靈活的能力上面去。 好了,筆者可不想在這裡引起一場爭論,畢竟無論是命令行方式還是GUI 方式,它們共同的目的就是為了完成工作罷了。每一種都有它各自的優點和缺點。 再讓我們回到DOS 的回憶中吧。是的,筆者承認在初次接觸Linux 的時候,的確讓筆者遙想到1993年學DOS 時的情景。而今,現在,筆者再次回憶起DOS ,並將和大家一起通過DOS 來認識Linux 的命令行操作方式,卻是一轉眼已是十年了。時間過得可真是飛快啊…… 第二幕 進入 Linux 的世界吧 第 2 場命令行的開始 如果您認為自己已經足夠了解Linux 的基本命令的話,已經覺得沒有必要再談論這些日常使用的命令,您可以完全不看這一場。畢竟,筆者的文章不是“矩陣革命”,非看不可。^_^ 當然,那些希望了解Linux 的讀者可能仍然希望回顧一下這些內容。畢竟,萬一錯過了某些內容呢?要知道,在系統管理員的世界裡面,有些“錯過”就是意味著“過錯”!(其實在人生的長河裡,又何嘗不是這樣呢?錯過了,就意味著失去。時過境遷,一切都難尋舊夢。而所謂彌補,常常是一廂情願的強求。)筆者仍將延續一個“不良”習慣:從基本的內容開始介紹,那麼會深入到何種程度呢?那就要視情況而定了。 本場要討論的內容都是一些最基本的命令,他們將貫穿本系列文章的全部,也將會和讀者您一起度過使用Linux 的美妙時光。筆者希望讓您能夠知道這些命令是何等的強大與靈活,也希望您能在學習了這些基本命令之後,能夠繼續去探索這些命令其它“隱秘”的功能。輕微的探索渴望回向您揭開日常命令的真正潛力!因為在Linux 的環境下,命令行永遠是系統管理員生活中一種永恆的需要! 提到命令行,就意味著我們要接觸shell.現在我們先不要管shell 來自何方,又將走向哪裡。我們現在只要知道shell 能夠解釋我們輸入的命令即可。在您的腦海裡面還有沒有DOS 的痕跡?如果有的話,當您看到shell 的時候,是不是也能像筆者一樣遙想起過去的光景?是的,您可以把shell 看成當初的DOS 提示符。(如果您忘記了DOS 提示符的樣子,也沒有關系。在您的Windows 系統裡面,點擊“開始”,然後點擊“運行”,在打開一欄裡面輸入“cmd ”,ok,DOS 重現了。當然,嚴格的說在windows 2000以後的操作系統裡面已經不能稱為DOS 了,而應該叫做“命令控制台”,增強了許多了DOS 命令,您將在接下來會看到的。其實shell 更像是DOS 時代的command.com 程序。) shell 有很多種,我們經常用的就是BASH shell(Bourne Again)。注意這個Again 單詞,聰明的讀者如您一定已經猜到在這個shell 之前應該還有一個shell,哈哈,您猜對了!再讓我們來回顧一下歷史吧:第一個真正的 Unix shell ――“sh”,亦稱為‘Bourne shell’,誕生於 1975 年,作者是 Steve Bourne .很快,出現了其他 shell,如基於原始‘Bourne shell’的“ksh ”、“zsh ”,後者常用作專屬 Unix 系統中的標准 shell;也有一些從 C語言中衍生出來的 shell ,如“csh ”或“tcsh”。