如何學習Linux

如何學習Linux

大綱

前言

一開始多使用文字介面、命令提示來操作Linux比較好!

為什麼大家老是建議學習Linux最好能夠先捨棄X Window的環境呢? 這是因為X window了不起也只是Linux內的『一套軟體』而不是『Linux核心』。 此外,目前發展出來的X-Window對於系統的管理上還是有無法掌握的地方,舉個例子來說,如果 Linux本身捉不到網路卡的時候,請問如何以X Window來捉這個硬體並且驅動他呢?

還有,如果需要以Tarball(原始碼)的方式來安裝軟體並加以設定的時候,請以X Window 來架設他!這可能嗎?當然可能,但是這是在考驗『X Window開發商』的技術能力, 對於瞭解Linux架構與核心並沒有多大的幫助的!所以說,如果只是想要『會使用Linux』的角度來看, 那麼確實使用X Window也就足夠了,反正搞不定的話,花錢請專家來搞定即可;但是如果想要更深入 Linux的話,那麼指令列模式才是不二的學習方式!

以伺服器或者是嵌入式系統的應用來說,X Window是非必備的軟體,因為伺服器是要提供用戶端來連線的, 並不是要讓使用者直接在這部伺服器前面按鍵盤或滑鼠來操作的!所以圖形介面當然就不是這麼重要了! 更多的時候甚至大家會希望你不要啟動X window在伺服器主機上,這是因為X Window通常會吃掉很多系統資源的緣故!

再舉個例子來說,假如你是個軟體服務的工程師,你的客戶人在台北,而你人在遠方的台南。某一天客戶來電說他的Linux伺服器出了問題, 要你馬上解決他,請問:要您親自上台北去修理?還是他搬機器下來讓你修理?或者是直接請他開個帳號給你進去設定即可? 想當然爾,就會選擇開帳號給你進入設定即可囉!因為這是最簡單而且迅速的方法!這個方法通常使用文字介面會較為單純, 使用圖形介面則非常麻煩啦!所以啦!這時候就得要學學文字介面來操作Linux比較好啦!

另外,在伺服器的應用上,檔案的安全性、人員帳號的管理、軟體的安裝/修改/設定、 登錄檔的分析以及自動化工作排程與程式的撰寫等等,都是需要學習的, 而且這些東西都還未涉及伺服器軟體呢!對吧!這些東西真的很重要,所以,建議你得要依據底下的介紹來學習才好。

這裡是站在要讓 Linux 成為自己的好用的工具 (伺服器或開發軟體的程式學習平台) 為出發點去介紹如何學習的喔!所以,不要以舊有的 Windows 角度來思考! 也不要說『你都只有碰過觸控式設備』的角度來思考!加油囉!

選擇適合你的Linux distribution

Linux 發行版(Linux distribution,也被叫做GNU/Linux 發行版),是基於 Linux 核心(Linux kernel)為一般使用者預先整合好的Linux作業系統及各種應用軟體。詳細說明請參閱►Linux簡介-Linux 發行版。

因為我們將要實作大數據、演算法、機器學習、機器人控制,AIoT(人工智慧物聯網),唯一選擇就是"Linux"。而 Ubuntu 在Linux眾多發行版的桌面版本(Desktop)中市佔率最高,且適用開發IoT 、Raspberry Pi AI ....的版本。 詳細說明請參閱►2021 年 Linux 作業系統選擇 Ubuntu 或是 CentOS?(外連結)

從頭學習Linux基礎

其實,不論學什麼系統,『從頭學起』是很重要的!還記得你剛剛接觸微軟的Windows都在幹什麼? 還不就是由檔案總管學起,然後慢慢的玩到控制台、玩到桌面管理, 然後還去學辦公室軟體,我想,你總該不會直接就跳過這一段學習的歷程吧?那麼 Linux的學習其實也差不多,就是要從頭慢慢的學起啦!不能夠還不會走路之前就想要學飛了吧!^_^!

常常有些朋友會來問一些問題,不過,信件中大多數的問題都是很基礎的! 例如:『為什麼我的使用者個人網頁顯示我沒有權限進入?』、 『為什麼我下達一個指令的時候,系統告訴我找不到該指令?』、 『我要如何限制使用者的權限』....等等的問題,這些問題其實都不是很難的,只要瞭解了 Linux的基礎之後,應該就可以很輕易的解決掉這方面的問題呢! 所以請耐心的,慢慢的,將後面的所有章節內容都看完。自然你就知道如何解決了!

此外,網路基礎與安全也很重要,例如TCP/IP的基礎知識,網路路由的相關概念...等等。 很多的朋友一開始問的問題就是『為什麼我的郵件伺服器主機無法收到信件?』 這種問題相當的困擾,因為發生的原因太多了,而朋友們常常一接觸Linux就是希望 『架站!』根本沒有想到要先瞭解一下Linux的基礎!這是相當傷腦筋的! 尤其近來電腦怪客(Cracker)相當多,(真奇怪,閒閒沒事幹的朋友還真是不少....) ,一個不小心您的主機就被當成怪客跳板了! 甚至發生被警告的事件也層出不窮!這些都是沒能好好的注意一下網路基礎的原因呀!

所以,希望大家能夠更瞭解Linux,好讓他可以為你做更多的事情喔! 而且這些基礎知識是學習更深入的技巧的必備條件呀!因此建議:

  • 計算機概論與硬體相關知識:
    • 因為既然想要走Linux這門路,資訊相關的基礎技能也不能沒有啊! 所以先理解一下基礎的硬體知識,不用一定要全懂啦!又不是真的要你去組電腦~^_^, 但是至少要『聽過、有概念』即可;
  • 先從Linux的安裝與指令學起:
    • 沒有Linux怎麼學習Linux呢?所以好好的安裝起一套你需要的Linux吧!雖然說Linux distributions很多, 不過基本上架構都是大同小異的,差別在於介面的親和力與軟體的選擇不同罷了! 選擇一套你喜歡的就好了,倒是沒有哪一套特別好說~
  • Linux作業系統的基礎技能:
    • 這些包含了『使用者、群組的概念』、『權限的觀念』,『程序的定義』等等,尤其是權限的概念, 由於不同的權限設定會妨礙你的使用者的便利性,但是太過於便利又會導致入侵的可能! 所以這裡需要瞭解一下你的系統呦!
  • 務必學會vi文書編輯器:
    • Linux的文書編輯器多到會讓你數到生氣!不過,vi卻是強烈建議要先學習的! 這是因為vi會被很多軟體所呼叫,加上所有的Unix like系統上面都有vi,所以你一定要學會才好!
  • Shell與Shell Script的學習:
    • 其實我們上面一直談到的『文字介面』說穿了就是一個名為shell的軟體啦!既然要玩文字介面,當然就是要會使用shell的意思。 但是shell上面的資料太多了,包括『正規表示法』、『管線命令』與『資料流重導向』等等,真的需要瞭解比較好呦! 此外,為了幫助你未來的管理伺服器的便利性,shell scripts也是挺重要的!要學要學!
  • 一定要會軟體管理員:
    • 因為玩Linux常常會面臨得要自己安裝驅動程式或者是安裝額外軟體的時候,尤其是嵌入式設備或者是學術研究單位等。 這個時候Tarball/RPM/DPKG/YUM/APT等軟體管理員的安裝方式的瞭解,對你來說就重要到不行了!
  • 網路基礎的建立:
    • 如果上面你都通過了,那麼網路的基礎就是下一階段要接觸的咚咚,這部份包含了『IP概念』『路由概念』等等;
  • 如果連網路基礎都通過了,那麼網站的架設對你來說,簡直就是『太簡單啦!』

選擇一本易讀的工具書

正所謂這:『好的書本帶你上天堂、壞的書本讓你窮瞎忙...』一本好的工具書是需要的,不論是未來作為查詢之用,還是在正確的學習方法上。 可惜的是,目前坊間的書大多強調速成的Linux教育,或者是強調Linux的網路功能, 卻欠缺了大部分的Linux基礎管理~這裡還是要再次的強調,Linux的學習歷程並不容易, 他需要比較長的時間來適應、學習與熟悉,但是只要能夠學會這些簡單的技巧, 這些技巧卻可以幫助您在各個不同的OS之間遨遊!

您既然看到這裡了,應該是已經取得了鳥哥的 Linux 私房菜 -- 基礎學習篇了吧! ^_^ 。 希望可以幫助您縮短基礎學習的歷程,也希望能夠帶給您一個有效的學習觀念!

推薦的相關入門必讀的Linux書籍

  • 《Linux就該這麼學》 (劉遄 著)本書從最基礎的安裝VM虛擬機器一步步深入講解,檔案管理命令,SSH管理,vsftpd服務等,學完後做一個初級運維工程師綽綽有餘。
  • 然後給大家推薦的是進階書籍《 深入理解Linux核心》 (美)博韋,西斯特 著,本書將引領你暢遊核心中用到的主要資料結構、演算法和程式設計技巧,讓你透徹理解Linux的工作機理,以及為何它在各種系統上能順暢執行。

涉足Linux社群和網站

  • 鳥哥的 Linux 私房菜 : 這個不用多說吧,只要你學習Linux就肯定聽說過鳥哥的私房菜,經典,對於初學者來說絕對是經典,推薦!!!
  • LinuxProbe :主打書籍《 Linux 就該這麼學 》分享Linux相關的技術資訊,還免費提供下載Linux學習相關的書籍,同時提供紅帽認證的培訓,需要的朋友可以瞭解一下。
  • LinuxCool :這個一個Linux命令大全手冊,用起來非常順手,對Linux學習有著很大的幫助,建議收藏網站。
  • Linux 伊甸園論壇:這是一個開源的資訊入口網站,全天更新提供最新最快的Linux和開源資訊,對了解Linux非常有幫助。
  • LinuxCN:Linux中國是專注於中文Linux技術、資訊的社群,在這裡你可以獲得一手的Linux資訊和技術知識,你值得擁有。
  • 實驗樓 : 這是一個IT學習網站,但是,但是,對於Linux學習者來說絕對是福利網站,因為網站配有Linux線上開發環境,你可以隨便折騰,不用搭建本地開發環境,而且也有很多非常不錯的Linux課程!
  • Linux 下載站 : 你可以在這個網站下載到各種Linux各種發行版,以及相關的軟體、遊戲……,雖說可以去官網下載,但是作為初學者來說這樣一個集中式下載的網站也是非常方便滴~
  • Linux 公社 : 這也是一個Linux資訊網站,裡面同樣可以找到很多關於Linux的相關文章,可以看看~
  • Ubuntu 問答 : 專注於整理 Ubuntu 系統相關的問題和解決方法。

實作、增加自身的價值

要增加自己的體力,就是只有運動;要增加對於Linux的認識,就只有讀書;然而,一切學習都是要增加自身的價值, 大概就只有實作經驗了!所以,趕快找一部電腦,趕快安裝一個Linux distribution,然後快點進入Linux的世界裡面晃一晃! 相信對於你自己的Linux能力必然大有斬獲!

趨勢

所謂順勢而為,事半功倍。掌握趨勢,選對關鍵的切入技術、產品或服務,在對的時間引爆,不成功都很難。

智慧製造、智慧零售、智慧交通、智慧醫療、智慧育樂、智慧國防的領域中,都有共同應用技術就是AIoT 與機器學習。因此,我們將以目前最夯最廣並且在2025年開始許多國家將要全面淘汰燃油車改為電動車(四輪機器人)這可見的趨勢中,以及四足機器人作為研究專案。

目標

計畫目標 : 以機器學習為核心技術,應在在機器人上,成為電動車、服務機器人、製造機器人、醫療機器人、無人機、無人船.....。

實作的步驟

  • 了解應用系統的架構 : 參考以下的影片與架構圖。
  • 選擇你想應用的產業領域,然後在者領域找出標竿企業所使用的軟硬體。
  • 針對這標竿企業設定其中一項核心應用,成立專案計畫
  • 找出問題 : 整理出希望用 AIoT 裝置解決什麼樣的問題。
  • 大概的解決問題 : 考慮各種套件模組,大致上將 AIoT 裝置與應用程式分類。
  • 這樣就解決了AIoT 裝置的設計 : 以套件模組為基礎,選擇感測器與驅動器,完成 AIoT 裝置設計。
  • 這樣就解決了應用程式的設計 : 利用Python 套件模組,完成 AIoT 裝置的應用程式。

Ubuntu Core 的 AIoT 架構圖

Ubuntu 機器人 網路圖

延伸閱讀AIoT 物聯網結合人工智慧

發生問題怎麼處理啊?建議流程是這樣...

我們是『人』不是『神』,所以在學習的過程中發生問題是很常見的啦!重點是,我們該如何處理在自身所發生的Linux問題呢? 在這裡的建議是這樣的流程:

1.在自己的主機/網路資料庫上查詢How-To或FAQ

其實,在Linux主機及網路上面已經有相當多的FAQ整理出來了!所以,當你發生任何問題的時候,除了自己檢查, 或者到上述的實作網站上面查詢一下是否有設定錯誤的問題之外,最重要的當然就是到各大FAQ的網站上查詢囉! 以下列出一些有用的FAQ與How-To網站給您參考一下:

上面比較有趣的是那個TLDP(The Linux Documentation Project), 他幾乎列出了所有Linux上面可以看到的文獻資料,各種How-To的作法等等,雖然是英文的,不過,很有參考價值!

除了這些基本的FAQ之外,其實,還有更重要的問題查詢方法,那就是利用 Google 幫您去搜尋答案呢! 學習Linux的過程中,如果有什麼奇怪的問題發生時,第一個想到的, 就是去 Google 搜尋是否有相關的議題。 舉例來說,我想要找出Linux底下的NAT,只要在上述的網站內,輸入Linux跟NAT, 立刻就有一堆文獻跑出來了!真的相當的優秀好用喔!詳細說明請參閱 : 如何找資料-搜尋技巧

2.注意訊息輸出,自行解決疑難雜症:

一般而言,Linux在下達指令的過程當中,或者是log file裡頭就可以自己查得錯誤資訊了,舉個例子來說,當你下達:

$ls -l /vbird

由於系統並沒有 /vbird 這個目錄,所以會在螢幕前面顯示:

$ls: /vbird: No such file or directory

這個錯誤訊息夠明確了吧!系統很完整的告訴您『查無該資料』! 呵呵!所以囉,請注意,發生錯誤的時候,請先自行以螢幕前面的資訊來進行 debug(除錯)的動作,然後,如果是網路服務的問題時,請到/var/log/這個目錄裡頭去查閱一下 log file(登錄檔),這樣可以幾乎解決大部分的問題了!

3.搜尋過後,注意網路禮節,討論區大膽的發言吧:

一般來說,如果發生錯誤現象,一定會有一些訊息對吧!那麼當您要請教別人之前,就得要將這些訊息整理整理, 否則網路上人家也無法告訴您解決的方法啊!這一點很重要的喔!

萬一真的經過了自己的查詢,卻找不到相關的資訊,那麼就發問吧!不過,在發問之前建議您最好先看一下『 提問的智慧』 這一篇討論!然後,你可以到底下幾個討論區發問看看:

不過,基本上去每一個討論區回答問題的熟手,其實都差不多是那幾個, 所以,您的問題『不要重複發表在各個主要的討論區!』 舉例來說,鳥園與酷學園討論區上的朋友重複性很高,如果您兩邊都發問, 可能會得到反效果,因為大家都覺得,另外一邊已經回答您的問題了呢~~

4.Netman大大給的建議

此外,Netman 兄提供的一些學習的基本方針,提供給大家參考:

  • 在Windows裡面,程式有問題時,如果可能的話先將所有其它程式保存並結束,然後嘗試按救命三鍵 (Ctrl+Alt+Delete),將有問題的程式(不要選錯了程式哦)『結束工作』,看看能不能恢復系統。不要動不動就直接關機或reset。
  • 有系統地設計檔案目錄,不要隨便到處保存檔案以至以後不知道放哪裡了, 或找到檔案也不知道為何物。
  • 養成一個做記錄的習慣。尤其是發現問題的時候, 把錯誤信息和引發狀況以及解決方法記錄清楚,同時最後歸類及定期整理。別以為您還年輕,等你再弄多幾年電腦了, 您將會非常慶幸您有此一習慣。
  • 如果看在網路上看到任何好文章,可以為自己留一份copy,同時定好題目,歸類存檔。(註:需要注意智慧財產權!)
  • 作為一個使用者,人要遷就機器;做為一個開發者,要機器遷就人。
  • 學寫 script 的確沒設定 server 那麼好玩,不過以我自己的感覺是:關鍵是會得『偷』, 偷了會得改,改了會得變,變則通矣。
  • 在Windows裡面,設定不好設備,您可以罵它;在Linux裡面,如果設定好設備了,您得要感激它﹗

鳥哥的建議(重點在solution的學習)

除了上面的學習建議之外,還有其他的建議嗎?確實是有的!其實, 無論作什麼事情,對人類而言,兩個重要的因素是造成我們學習的原動力:

  • 成就感
  • 興趣

很多人問過我,鳥哥是怎麼學習Linux的?由上面鳥哥的悲慘Linux學習之路你會發現, 原來我本人對於電腦就蠻有興趣的,加上工作的需要,而鳥哥又從中得到了相當多的成就感, 所以囉,就一發不可收拾的愛上Linux囉!因此,鳥哥個人認為,學習Linux如果玩不出興趣, 他對你也不是什麼重要的生財工具,那麼就不要再玩下去了! 因為很累人ㄋㄟ~而如果你真的想要玩這麼一套優良的作業系統, 除了前面提到的一些建議之外,說真的,得要培養出興趣與成就感才行! 那麼如何培養出興趣與成就感呢?可能有幾個方向可以提供給你參考:

  • 建立興趣:Linux上面可以玩的東西真的太多了,你可以選擇一個有趣的課題來深入的玩一玩!不論是Shell還是圖形介面等等, 只要能夠玩出興趣,那麼再怎麼苦你都會不覺得喔!
  • 成就感:成就感是怎麼來的?說實在話,就是『被認同』來的!怎麼被認同呢?寫心得分享啊!當你寫了心得分享,並且公告在 BBS 上面,自然有朋友會到你的網頁去瞧一瞧,當大家覺得你的網頁內容很棒的時候, 哈哈!你肯定會加油繼續的分享下去而無法自拔的!那就是我啦...... ^_^!就鳥哥的經驗來說,你『學會一樣東西』與 『要教人家會一樣東西』思考的紋路是不太一樣的! 學會一樣東西可能學一學會了就算了!但是要『教會』別人,那可就不是鬧著玩的! 得要思考相當多的理論性與實務性方面的咚咚,這個時候,你所能學到的東西就更深入了! 鳥哥常常說,我這個網站對我在Linux的瞭解上面真的的幫助很大!
  • 協助回答問題:另一個創造成就感與滿足感的方法就是『助人為快樂之本!』當你在 BBS 上面告訴一些新手,回答他們的問題,你可以獲得的可能只是一句『謝謝!感恩吶!』 但是那句話真的會讓人很有快樂的氣氛!很多的老手都是因為有這樣的滿足感, 才會不斷的協助新來的朋友的呢!此外,回答別人問題的時候,就如同上面的說明一般, 你會更深入的去瞭解每個項目,哈哈!又多學會了好多東西呢!
  • 參與討論:參與大家的技術討論一直是一件提昇自己能力的快速道路!因為有這些技術討論, 你提出了意見,不論討論的結果你的意見是對是錯,對你而言,都是一次次的知識成長!這很重要喔! 目前台灣地區辦活動的能力是數一數二的Linux社群『酷學園(Study Area, SA)』,每個月不定期的在北/中/南舉辦自由軟體相關活動, 有興趣的朋友可以看看:http://phorum.study-area.org/index.php/board,22.0.html

除了這些基本的初學者建議外,其實,對於未來的學習,這裡建議大家要『眼光看遠!』一般來說,公司行號會發生問題時, 他們絕不會只要求各位『單獨解決一部主機的問題』而已,他們需要的是整體環境的總體解決『Total Solution』。 而我們目前學習的Linux其實僅是在一部主機上面進行各項設定而已, 還沒有到達解決整體公司所有問題的狀態。當然啦,得要先學會Linux相關技巧後, 才有辦法將這些技巧用之於其他的solution上面!

所以,大家在學習Linux的時候,千萬不要有『門戶之見』,認為MS的東西就比較不好~ 否則,未來在職場上,競爭力會比人家弱的!有辦法的話,多接觸,不排斥任何學習的機會!都會帶給自己很多的成長! 而且要謹記:『不同的環境下,解決問題的方法有很多種,只要行的通,就是好方法!』


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

  • Linux,Ubuntu,HowTo,

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組