Linux 基礎學習篇 - Mandrake 9

第一章、 Linux如何學習- for Mandrake 9

鳥哥的第一本書籍的主要內容,內容稍微與書籍不太一樣了!

最近更新時間: 2003/01/28

鳥哥的第一本書大約是在 2002 年的年底左右出版的,內容幾乎都是 Linux 基礎學習,一點也沒有談到伺服器的部份!這也是後來的雛型! 不過內容錯誤的地方很多,導致在 2003 年的年底推出了『基礎學習篇增訂版』的內容,大致上就是處理掉一些比較有嚴重錯誤的部份。 不過,因為 Linux 的版本變化非常快速,因此,寫完了這些文件之後,鳥哥還是持續在網站上更新文件內容,導致原本書籍內容的資料與網站資料差異太大! 這個問題直到鳥哥在 2008 年左右才發現!糟糕了!舊版的文件資料已經遺失~覺得相當扼腕~

因此,在底下的文件內容與當初的書籍內容雖然大同小異,不過章節的編排卻是有所不同!再花時間去一個一個處理,似乎也不太符合成本效益! 鳥哥僅是想要將自己以前的文件記錄下來而已,同時將過時的 big5 編碼改回 utf8 編碼,再加上可以支援 RWD 的樣式而已啦! 內容已經不多做編排~因此,如果內容文件你看不懂,那也是應該的! ^_^

建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。最新文章請前往鳥站首頁查閱囉!

Linux的應用:

要談到 Linux 如何學習之前,我們得就 Linux 目前的一般應用來說明一下,才好理解您需要什麼樣的學習方式!
  • 桌上型電腦:

  • 所謂的桌上型電腦就是一般使用者在螢幕前面工作時候的常見的作業系統了!我們稱之為『Desktop』系統,就是簡稱的桌上型電腦了!說到桌上型電腦就不能不提一下 X-Window System 。
    • 由前一章提到的 Unix 與 Linux 的歷史中,我們知道在 1986 年美美的視窗畫面就已經在 Unix 上面出現過了,那個時候視窗畫面被簡稱為 X 系統,而後來到了 1994 年的時候正式被整合在 Linux 裡頭!至於微軟的 Windows 則是在 1995 年才出現!
    • 所謂的 X Window System 就是以 XFree86 這個計畫釋出的 X11 這個視窗軟體為管理顯示核心的一套視窗介面的軟體,我們常常簡稱他為圖形使用者介面( Graphical User Interface )。個 XFree86 只是 Linux 核心上面的一套軟體而已,他主要的工作就是管理圖形介面輸出的時候,幾乎所有顯示相關的硬體的控制,例如顯示卡、螢幕、鍵盤、滑鼠、等等,都是 XFree86 管理的!或者,我們可以稱 XFree86 為 X-Window System 的伺服器,簡稱為 X Server 。
    • 至於我們所看到的美美的視窗畫面,則是使用 X Server 提供的顯示相關硬體的功能,來達到圖形顯示的『視窗管理員( Window Mananger, WM )』所發揮的能力啦!這也就是說, WM 是掛在 X Server 上面來運作的一套顯示視窗介面的軟體,例如我們常見的 KDE, GNOME 等等都是 WM。
    那麼這個桌上型電腦平時都在幹些什麼?簡單的說,桌上型電腦的日常工作是:
    • 上網瀏覽;
    • 文書處理;
    • 網路介面之公文處理系統;
    • 辦公室軟體( Office Software )處理資料;
    • 收發電子郵件;
    大致上就是這些工作囉!在這些工作中, Linux 有美麗的圖形介面 X Window System 提供良好的使用者介面 ( GUI ) ,此外,目前發展中的 WM 也都具有中文化的功能!至於 Office 軟體則有類似 Open Office 的軟體支援,所以,基本上在桌上型電腦型態的使用中, Linux 已經足以應付大部分的上班族群的工作了。
  • 工作站電腦:

  • 工作站電腦與桌上型電腦不太一樣的地方,在於工作站通常得要應付比較重要的公事應用,例如工程界流體力學的數值模式運算、娛樂事業的特效功能處理、軟體開發者的工作平台等等。Linux 上面有強大的運算能力,以及支援度相當廣泛的 GCC 編譯軟體,因此在工作站當中也是相當良好的一個作業系統選擇。例如我們研究室目前就要將 Sun Unix 上面執行的大型模式移轉到 Linux 上面,據美國環保署內部人員的測試,發現 Linux 不但比較便宜 ( X86 系統嘛! )而且速度還比較快呢!
  • 網路伺服器:

  • 承襲了 Unix 的良好傳統, Linux 上面的網路功能特別的強大!此外,由於 GNU 計畫,讓 Linux 上面的伺服器軟體幾乎都是免費的!因此,做為一部網路伺服器,例如 WWW, Mail Server, File Server, FTP Server 等等, Linux 絕對是上上之選!
  • 嵌入式系統:

  • 近年來電子相關產業相當的蓬勃發展,其中,小型微電腦的發展甚為重要!例如家電產品、PDA、以及其他微型的電腦配備。這些電腦配備通常是直接嵌入於產品當中的,例如 PDA 本身就是一個小型的電腦作業系統啦!這些系統我們就稱為嵌入式系統。而要讓這些嵌入式系統能夠動作,自然就需要製作一套簡單的作業系統囉,這個時候,可修改核心讓功能變簡單的 Linux 則是很好的選擇。因此,近年來有相當多的嵌入式系統選擇 Linux 做為發展的平台呢!
上面這些就是目前常見的幾個 Linux 的應用方向。那麼根據上面的應用,你覺得應該要怎樣學習 Linux 呢?

從『頭』學起

其實,不論學什麼系統,『從頭學起』是很重要的!還記得你剛剛接觸微軟的 Windows 都在幹什麼?還不就是由檔案總管學起,然後慢慢的玩到控制台、玩到桌面管理,然後還去學辦公室軟體,我想,你總該不會直接就跳過這一段學習的歷程吧!?那麼 Linux 的學習其實也差不多,就是要從頭慢慢的學起啦!不能夠還不會走路之前就想要學飛了吧! ^_^!
常常有些朋友會寫信來問鳥哥一些問題,不過,信件中大多數的問題都是很基礎的!例如:『為什麼我的使用者個人網頁顯示我沒有權限進入?』、『為什麼我下達一個指令的時候,系統告訴我找不到該指令?』、『我要如何限制使用者的權限』等等的問題,這些問題其實都不是很難的,只要瞭解了 Linux 的基礎之後,應該就可以很輕易的解決掉這方面的問題呢!所以請耐心的,慢慢的,將後面的所有章節內容都看完。自然你就知道如何解決了!
此外,網路基礎與安全也很重要,例如 IP 的基礎,網路的 Gateway 設定基礎與網路的相關概念!很多的朋友一開始問的問題就是『為什麼我的 mail server 無法收到信件?』這種問題相當的困擾,因為發生的原因太多了,而朋友們常常一接觸 Linux 就是希望『架站!』根本沒有想到要先瞭解一下 Linux 的基礎!這是相當傷腦筋的!尤其近來電腦怪客 (  Cracker ) 相當多, ( 真奇怪,閒閒沒事幹的朋友還真是不少.... ) ,一個不小心您的主機就被當成怪客跳板了!甚至發生被警告的事件也層出不窮!這些都是沒能好好的注意一下網路基礎的原因呀!
所以, 鳥哥希望大家能夠更瞭解 Linux ,好讓他可以為你做更多的事情喔!而且這些基礎知識是學習更深入的技巧的必備條件呀!因此建議:
  1. 先理解一下基礎的硬體知識,不用一定要全懂(沒那麼多時間),但是至少要『聽過、有概念』即可;
  2. 先瞭解一下 Linux 的基礎知識,這些包含了『使用者、群組的概念』、『權限的觀念』,『程序的定義』等等;
  3. 必需至少學會一種以上的文書編輯器,例如最好學會通用版本的 vi 囉!
  4. 實際操作 Linux 時,必定要學習的 Shell ,最好 Shell scripts 也能夠瞭解;
  5. 如果上面你都通過了,那麼網路的基礎就是下一階段要接觸的咚咚,這部份包含了『IP 概念』『路由概念』『TCP/IP』等等;
  6. 如果連網路基礎都通過了,那麼網站的架設對你來說,簡直就是『太簡單啦!』
在一些基礎知識上,這裡推薦一下 Study-Area 裡面的基礎文章,相當的實用!

選擇一本好的工具書

『工具書』對於學習者而言是相當重要的!不過,一本錯誤觀念的工具書卻會讓新手整個誤入歧途....,以下有幾個網站有特別介紹了幾本書籍,如果有興趣的話,歡迎參考看看!實在是很建議買一本『基礎一點』的工具書來學習 Linux ,等到有一定的基礎之後,才來買架設網站以及『安全防護』方面的書籍,尤其是『安全防護』的書籍, VBird 認為,網路安全一定會越來越受到重視的!當然,有興趣的話,小弟的『鳥哥的 Linux 私房菜 -- 基礎學習篇』也可以參考看看囉! ^_^

實作經驗

要增加自己的體力,就是只有運動;要增加自己的知識,就只有讀書;當然,要增加自己對於 Linux 的認識,大概就只有實作經驗了!所以,趕快找一部電腦,趕快安裝一個 Linux 套件,然後快點進入 Linux 的世界裡面晃一晃!相信對於你自己的 Linux 能力必然大有斬獲!除了自己的實作經驗之外,也可以參考網路上一些善心人士整理的實作經驗分享喔!例如最有名的 Study-Area ( http://www.study-area.org )等網站。
此外,人腦不像電腦的硬碟一樣,除非硬碟壞掉了或者是資料被你抹掉了,否則儲存的資料將永遠而且立刻的記憶在硬碟中!在人類記憶的曲線中,你必須要『不斷的重複練習』才會將一件事情記得比較熟!同樣的,學習 Linux 也一樣,如果你無法經常摸索的話,那麼,抱歉的是,學了後面的,前面的忘光光!學了等於沒學,這也是為什麼鳥哥當初要寫『鳥哥的私房菜』這個網站的主要原因,因為,我的忘性似乎比一般人還要好~~呵呵!所以,除了要實作之外,還得要常摸!才會熟悉 Linux 而且不會怕他呢!
好了,底下列出幾個學習網站來提供大家做為參考實作的依據:(註:由於不同的網站當初撰寫的時候所用的 Linux 套件或版本與目前的主流並不相同,因此參考他人的實作經驗時,必須要特別留意對方的版本,否則反而可能造成你的困擾喔!)

X-Window 還是 command line

    由前面的介紹我們可以知道,雖然目前 X-Window 的介面越做越漂亮,而且也已經漸漸的可以來控管整個系統了!但是必須要注意的是, X-Window 畢竟還只是一個 Linux 上面的軟體,並不是一套『作業系統』,所以實際上使用他來設定系統的時候,還是有相當多的困擾的,因為畢竟他無法完全的管理好我們的 Linux 啊!雖然就以 Desktop 的型態來說,X-Window 是讓 Linux 立刻深入人心的方法。不過, X-Window 在使用的時候還是有相當多的問題的,最大的問題來自於『系統資源的有效應用』,以 VBird 的使用情況來說,我的系統資源並沒有很好,但是 X-Window 本身相當的消耗系統資源,如果一開 X-Window ,那麼你的記憶體幾乎都被 X-Window 吃光了!您要如何來用剩下的系統資源來進行高效率的其他工作呢?!這也是為什麼很多的書籍與網站都會希望使用者架設網站的時候,不要啟動 圖形使用者介面 的原因囉!
    以下再來說說 X-Window 學習與 command line 學習的角度。
  • X-Window

  • 如果您對於 Linux 的要求是『桌上型電腦』,並且你又不架設網站的話,那麼學習 X-Window 對您而言,絕對是需要的!至於指令列模式對你就不是這麼必要了!但是,如果 Linux 對你而言是『伺服器與工作站』的話,那麼 X-Window 可能就不是這麼重要,但是指令列模式可就大大的重要啦!
    因為,如果以 X-Window 作為學習 Linux 的方式,那麼未來一定會有死角, 這是因為 X-Window 了不起也只是 Linux 的『一套軟體』而不是『Linux 核心』 此外,目前發展出來的 X-Window 對於系統的管理上還是有無法掌握的地方, 舉個例子來說,如果 Linux 本身捉不到網路卡的時候, 請問如何以 X-Window 來捉這個硬體呢?!還有, 如果需要以 tarball 的方式來安裝軟體並加以設定的時候, 請以 X-Window 來架設他!這可能嗎?當然可能,但是這是在考驗『X-Window 開發商』的技術能力, 對於瞭解 Linux 架構與核心並沒有多大的幫助的!所以說,如果只是想要『會使用 Linux 』的角度來看, 那麼確實使用 X-Window 也就足夠了,反正搞不定的話,花錢請專家來搞定即可;但是如果想要更深入 Linux 的話,那麼指令列模式才是不二的學習方式!
  • 伺服器端

  • 如果 Linux 對你而言是『生財』的工具,呵呵!那可不是只要學習 X-Window 能夠解決的了!舉個例子來說好了,假如你的客戶人在台北,而你人在遠方的台南, 他的 Linux 伺服器出了問題,要你馬上解決他, 請問:要您親自上台北去修理?還是他搬機器下來讓你修理?!或者是直接請他開個帳號給你進去設定即可?! 想當然爾,就會選擇開帳號給你進入設定即可囉!因為這是最簡單而且迅速的方法!然而這個方法使用的方式卻不是 X-Window 作的到的!因為 X-Window 太耗資源,實在不容易讓您這樣子連線(很麻煩的啦!) 所以囉!文字界面是相當重要的!尤其如果想要深入 Linux 的核心時,那麼以文字界面來瞭解 Linux 就更需要了!所以說,不要怕麻煩,還是多摸一些文字界面的東西吧!! 幫助會比較大哩!
    所以基本上, VBird 還是希望大家可以多多的以 文字介面( command line )的方式來學習 Linux 啦!

網路資料查詢

其實,在網路上面已經有相當多的 FAQ 整理出來了!所以,當你發生任何問題的時候,除了自己檢查,或者到上述的實作網站上面查詢一下是否有設定錯誤的問題之外,最重要的當然就是到各大 FAQ 的網站上查詢囉!以下列出一些有用的 FAQ 網站給您參考一下: 還有相當的的網路資源可以查詢!如果你有發現更新的資訊時,記得來信通知 VBird 喔!

真的沒辦法、發問吧

  • 天助自助者:

  • 一般而言, Linux 在下達指令的過程當中,或者是 log file 裡頭就可以自己查得錯誤資訊了,舉個例子來說,當您下達:
       ls -l /vbird
    時,由於系統並沒有 /vbird 這個目錄,所以會在螢幕前面顯示:
      ls: /vbird: No such file or directory
    這個錯誤訊息夠明確了吧!系統很完整的告訴您『查無該資料』!呵呵!所以囉,請注意,發生錯誤的時候,請先自行以螢幕前面的資訊來進行 debug ( 除錯 )的動作,然後,如果是網路服務的問題時,請到 /var/log 這個目錄裡頭去查閱一下 log file ,這樣可以幾乎解決大部分的問題了!
  • 討論區的提問:

  • 萬一真的經過了自己的查詢,卻找不到相關的資訊,那麼就發問吧!不過,在發問之前建議您最好先看一下『提問的智慧』這一篇討論!然後,你可以到底下幾個討論區發問看看:
    不過,基本上每一個討論區的內容是大同小異的,發問的時候一定要注意到某些禮節!最好是先以搜尋的方式搜尋一下該討論區是否有您需要的文章之後,在發問!這樣可以獲得事半功倍的功能喔!此外, Netman 兄提供的一些學習的基本方針,提供給大家參考:
    • 在Windows裡面﹐程式有問題時﹐如果可能的話先將所有其它程式保存並結束﹐然後嘗試按救命三鍵(Ctrl+Alt+Delete)﹐將有問題的程式(不要選錯了程式哦)“結束工作”﹐看看能不能恢復系統。不要動不動就直接關機或reset。
    • 有系統地設計檔案目錄﹐不要隨便到處保存檔案以至以後不知道放哪裡了﹐或找到檔案也不知道為何物。
    • 養成一個做記錄的習慣。尤其是發現問題的時候﹐把錯誤信息和引發狀況以及解決方法記錄清楚﹐同時最後歸類幾定期整理。別以為您還年輕﹐等你再弄多幾年電腦了﹐您將會非常慶幸您有此一習慣。
    • 如果看在網路上看到任何好文章﹐可以為自己留一份copy﹐同時定好題目﹐歸類存檔。
    • 作為一個使用者﹐人要遷就機器﹔做為一個開發者﹐要機器遷就人。
    • 學寫 script 的確沒設定 server 那麼好玩﹐不過以我自己的感覺是﹕關鍵是會得“偷”﹐偷了會得改﹐改了會得變﹐變則通矣。
    • 在Windows裡面﹐設定不好設備﹐您可以罵它﹔在Linux裡面﹐如果設定好設備了﹐您得要感激它﹗

其他的一些建議

除了上面的學習建議之外,還有其他的建議嗎?確實是有的!其實,無論作什麼事情,對人類而言,兩個重要的因素是造成我們學習的原動力:
  • 成就感
  • 興趣
很多人問過我,鳥哥是怎麼學習 Linux 的?由鳥哥之前的 自我介紹 與對於 Linux 的接觸歷程,你大概會知道,原來我本人對於電腦就蠻有興趣的,加上工作的需要,而鳥哥又從中得到了相當多的成就感,所以囉,就一發不可收拾的愛上 Linux 囉!因此,鳥哥個人認為,學習 Linux 如果玩不出興趣,他對你也不是什麼重要的生財工具,那麼就不要再玩下去了!因為很累人ㄋㄟ~而如果你真的想要玩這麼一套優良的作業系統,除了前面提到的一些建議之外,說真的,得要培養出興趣與成就感才行!那麼如何培養出興趣與成就感呢?可能有幾個方向可以提供給你參考:
  • 建立興趣:Linux 上面可以玩的東西真的太多了,你可以選擇一個有趣的課題來深入的玩一玩!不論是 Shell 還是圖形介面等等的,只要能夠玩出興趣,那麼再怎麼苦你都會不覺得喔!
  • 成就感:成就感是怎麼來的?說實在話,就是『被認同』來的!怎麼被認同呢?寫心得分享啊!當你寫了心得分享,並且公告在 BBS 上面,自然有朋友會到你的網頁去瞧一瞧,當大家覺得你的網頁內容很棒的時候,哈哈!你肯定會加油繼續的分享下去而無法自拔的!那就是我啦...... ^_^!而且,就鳥哥的經驗來說,你『學會一樣東西』與『要教人家會一樣東西』思考的紋路是不太一樣的!學會一樣東西可能學一學會了就算了!但是要『教會』別人,那可就不是鬧著玩的!得要思考相當多的理論性與實務性方面的咚咚,這個時候,你所能學到的東西就更深入了!鳥哥常常說,我這個網站對我在 Linux 的瞭解上面真的的幫助很大!
  • 協助回答問題:另一個創造成就感與滿足感的方法就是『助人為快樂之本!』當你在 BBS 上面告訴一些新手,回答他們的問題,你可以獲得的可能只是一句『謝謝!感恩吶!』但是那句話真的會讓人很有快樂的氣氛!很多的老手都是因為有這樣的滿足感,才會不斷的協助新來的朋友的呢!此外,回答別人問題的時候,就如同上面的說明一般,你會更深入的去瞭解每個項目,哈哈!又多學會了好多東西呢!
  • 參與討論:參與大家的技術討論一直是一件提昇自己能力的快速道路!因為有這些技術討論,你提出了意見,不論討論的結果你的意見是對是錯,對你而言,都是一次次的知識成長!這很重要喔! ^_^
此外,除了這些鳥哥的經驗之外,還有在 BBS 上面有一封對於 Linux 新手相當有幫助的文件資料,大家可以多看一看: 裡面提到了幾乎新手都會有的問題!此外,在網路上還有另外一篇介紹 Linux 的文章,也蠻好玩的,不過他是 Word 版本,目前並不打算將他修改一番,因為要保持原文件的風貌呀!呵呵!有興趣的朋友真的可以好好的看一看:

本章習題練習 ( 要看答案請將滑鼠移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看)

  • 在 X-Window System 的架構裡面,主要有幾個元件?各有何重點?

  • 答:
      X-Window System 有三個元件,分別是 X Server, X Client 與 Window Manager 三部分,分別的工作如下:
      • X Server : 主要用於主機上面繪製影像的功能!而且他可以控管所有的主機上面的顯示介面硬體,諸如:滑鼠、鍵盤、顯示卡(最重要為驅動程式)及螢幕等等,是最重要的部分喔;
      • X Client : 用在 Client 端電腦的應用程式軟體,他可以用來操縱 X Server 繪製出使用者想要的圖示,簡單的說,他就是使用者在使用的軟體啦!
      • Window Manager : 視窗管理員,她主要的功能就是讓 X Server 繪製出來的圖形變的更漂亮,簡單的說,他就是介於使用者與 X Server 之間的一套軟體就是了!由於 X Server 提供的繪圖醜醜的,因此,有了 Window Manager 我們的 X Window System 就可以變的漂漂亮亮的囉!
      一般而言, X Server 與 X Client 會是在同一部電腦主機上面,就是我的直接在 Linux 主機上面執行 startx 就跑出來 X Window 即是一例!
  • 什麼是 GUI ( Graphical User Interface )?

  • 答:
      GUI 就是圖形使用者介面,亦即是使用圖形介面來操縱硬體囉!例如我們的 X Window system 就是一個例子!目前桌上型的電腦為了親和力,圖形使用者介面做得越來越好了!
修改歷史:
  • 2002/07/08:第一次完成或者是上次更新...忘記了~@_@
  • 2003/01/28:重新修訂,加入 X-Window 的簡易說明
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計