入門 Linux (Unix Like OS)心理準備
對萌新科普寶具,從零開始入門Linux。這裡列出了些“玩電腦”的基礎,從此出發吧。
已經做好心理準備的,歡迎直接抵達文末關鍵詞列表開始旅程。
- 你也許見過如下的電腦介面,現實中也好,電影畫面上也好:滿螢幕文字,沒有熟悉的滑鼠,沒有windows右上角,也沒有MacOS的左上角。

Command-line Interface (CLI)
這是 命令列的介面(command-line interface,以下簡稱CLI),是為了與計算機系統高效交流而生的工具。它是由人通過鍵盤向計算機輸入簡短的命令來指示計算機行動的工具。
如果你一直生活在被圖形介面包圍的環境中(八成是這樣,不然你就不是萌新了),CLI多少是有點恐怖的,首先你不知道自己能做什麼,然後你能隱約感到:在這裡做錯了什麼後果恐怕會是很嚴重滴Σ( ° △ °|||)︴想到這兒,不禁兩股戰戰幾欲先走?留步!
沒錯,使用CLI的思路和使用圖形介面(GUI)有所不同,但兩種操作方式間並不存在不可逾越的鴻溝,也沒有高下之分,它們為各自適合的用途而生。如果你之前沒有使用CLI的經驗,不用擔心,從簡單的需求開始入門就好。學習使用CLI之於學習使用GUI就好像學習講話和寫字之於學習使用聲帶發生和學習握筆塗畫。後者是學習者能夠通過直覺反饋和直接模仿進行學習的,而前者往往需要理解抽象的規則加上大量練習強化才能夠掌握。GUI是將CLI的操作直覺化,方便使用者迅速理解“自己能用這個軟體做什麼”;沒有太多直觀圖畫的CLI就要依靠人的語言能力來理解“自己能做什麼”。就像是直接看一幅蒙娜麗莎比較容易理解畫面中有什麼要素,還是隻能閱讀一本描述蒙娜麗莎中所有細節的書比較容易讓人搞懂達芬奇究竟畫了什麼?可是,還有另一種情況:是直接閱讀J.K. Rowling的哈利波特原著更能理解整個關於哈利和小夥伴們的故事,還是隻查閱哈利波特系列中所有的插圖就能讓人理解這一整個故事?
工具為需求而生,工具為需求而選。GUI和CLI也是這樣。
時至今日,計算機仍然依靠著程式碼與它的使用者溝通,不論是GUI還是CLI都是如此。如果你能直接使用程式碼,你跟計算機的溝通就會很暢快;當然,代價就是你需要了解“程式碼”,也就是一門又一門的語言。如果會用GUI像是會開車,那會用CLI就像是不僅會開車,還了解車輛執行原理,還能做基本保養甚至能生產汽車零件,乃至自己能造車(普通使用者可能沒那麼誇張233,因為“會用CLI”是一個相當高的標準,我這裡它是'know how'的意思,全世界使用CLI的人裡也沒太多'know how'的。舉個例子的話,就是像 ofollow,noindex">Linus Torvalds 這樣的人算得上'know how'吧,他和他的大夥伴們算是真的造了車出來)。
你或許不記得學習母語時的艱難,但是嘗試學習母語之外的語言時有多大困難以及該如何克服你可能是有概念的。因此,瞭解Unix Like OS(比如Linux),學習使用CLI,最好建立在“需求”和“興趣”之上。從完成簡單的功能做起,比如在Linux的CLI中瞭解一下“我是誰?”,“現在幾點了?”,“我在哪(個資料夾裡)?”。不要因為沒了能“點一下”的功能,於是立刻慌張地逃出來就是了;因為你一定會發現,這什麼破難用的CLI!(嗯~ o(  ̄▽ ̄ )o真香!)。
文末附上 鳥哥的Linux私房課 連結,幫你由淺入深系統化地瞭解Linux。
(偶然間參加了一次DevRelCon,其中說到了鳥哥的私房課,開啟一看驚為天人...)
說到 Linux 就躲不開CLI
作為提供人機互動功能的介面,CLI和GUI各自有適用的場景。只是有些情況下幾乎是必須使用CLI(比如跟沒有GUI的程式打交道)或者必須使用GUI(比如編輯照片)。請試著瞭解和使用CLI這種經典的人機互動方式,說不定它真是你的菜。會覺得“CLI有什麼用,日常生活用不到哇”,很有可能是因為你的日常生活中充滿了被設計為GUI的互動方式,讓你誤認為CLI的世界早就過時或者消失了。事實上,能夠使用CLI,或者至少不畏懼CLI才真正表示你是個合格的計算機使用者;因為在一切柔順、精緻的GUI背後,其實都有著充滿原始氣息和黑客浪漫的CLI。CLI不僅沒有“消失”,相反,它仍然是與計算機互動的一個基本而且高效的方式。
Unix Like OS 驅動了數不清的伺服器,一切有關網路服務的基礎設施。漸漸地,搭載桌面GUI的Linux也大量被安裝在個人電腦上。如果你肯花點時間學習點“基礎中的基礎”,和這些Unix Like OS交流將不再是一件3秒勸退的事情。
不必要精通CLI才能用 Linux
雖說會使用CLI才能真的使用Linux,但是對CLI的瞭解並不必要達到精通的地步。比如,你不需要背下成噸的操作文件後才能使用CLI。在GUI的幫助下,用網際網路資源學習CLI會很方便。覺得自己在CLI中手足無措沒什麼可恥的,誰不是開一堆網頁搜尋“是什麼,怎麼辦,為什麼”才逐漸學習的。
最好能用英文來學習關於 Linux 的知識
跟計算機牽扯的事情,總是搜尋英文更容易得到你想要的答案。
掌握一手訊息的好處,大大滴有。
Linux 作業系統到底是...
如果搜尋 Linux這個詞條,你可能會見到一大堆作業系統的名字,它們都“是Linux”。
你可能會看到
一堆名字。它們都叫做“發行版本”(distributions),換句話說,是由原版“Linux”改編而成的衍生作品。這些能很輕鬆找的發行版們相較真正的“原版”來說,應該是對使用者很友好了(但是Arch似乎比較硬核)。正式一點的話,它們該被稱為“GNU/Linux”,因為它們或多或少都是使用Linux-core作為作業系統核心跟GNU專案中的“自由軟體”攢出來的。不同的“Linux發行版”也就是“不同口味的Linux”。就好比同樣是雞肉,它可以是辣子雞,咖哩雞,炸雞,烤雞……做成什麼味道,它的核心都還是,嗯,雞。
挑一個帶有圖形介面的 GNU/Linux 發行版安裝來入門
推薦在Fedora,Ubuntu,Manjaro中選擇。
選擇困難請選大眾選項Ubuntu。
站在前沿請選測試平臺Fedora。
Bleeding Edge請用Manjaro。
它們都有基於gnome定製的作業系統GUI,所以開啟它們,圖示還在,視窗還在,滑鼠還在,一切GUI的習慣還在。入門友好。
怎麼安裝一個 Linux 作業系統
如果你自己並沒有安裝過或者換裝過作業系統,並且自稱“電腦小白”,歡迎從“虛擬機器”開始玩起,這樣不會把自己正在用的電腦搞炸。 你需要了解的知識是有關作業系統安裝、多系統啟動和虛擬機器的。
如果你熟知如何安裝作業系統, 就該明白在實體個人計算機上安裝作業系統的過程沒多複雜:
1. 從網際網路下載作業系統映象,多見.iso格式
2. 將下載好的作業系統用如rufus的軟體“寫”到一塊容得下它的U盤中
3. U盤保持插入USB插孔,重啟計算機
4. 開機過程中按下鍵盤上某鍵,進入BIOS
5. 在BIOS中選擇從USB啟動
6. 如果要安裝的作業系統對萌新人類比較友好,那麼選擇安裝,按照提示繼續即可
Terminal
使用CLI時,請想象這樣一個場景:
與計算機作業系統進行交流,需要開啟一個通道。通道的一端時作業系統和硬體,另一端就是跟計算機交流的人,比如,你。在這個場景中,你處於一個“終端”,即“terminal”。
這樣的場景源於計算機真正的使用方式,一臺計算機同時開啟多個通道來跟使用者們互動,使用者之間互不干擾,而且能同時分享計算機的運算能力。每個人面前都有一個“終端”硬體,用於顯示計算機提供的CLI,每人也都有自己的輸入裝置(比如鍵盤)來跟CLI交流。

想象這樣的場景
在Unix Like OS (Linux算是它的子集)中,使用者實際上仍然在使用terminal。擁有GUI的Linux發行版當然也在使用terminal。Terminal這個概念,連線起你和為你提供服務的計算機。計算機通過terminal與你交換資訊,其中也包括了讓你能使用CLI與計算機交流的資訊。
開源軟體,自由軟體,Community
Free Software並不是“免費的軟體”,而是使用者可以自由使用的意思。這兩種意思有著微妙的差別。尤其在於“自由使用”並不一定意味著能免費獲取軟體使用權,free含義的重點是使用者有瀏覽和編輯軟體程式碼的自由。自由軟體仍然可以商用。
GNU是個非常著名的自由軟體專案。它與Linux核心(Linux Kernel)的結合開創了自由軟體和開源軟體的繁榮。GNU/Linux的活力來自活躍的自由軟體開發者、維護者。一個軟體如果直接在網際網路上公開了自己的原始碼,它就是開源軟體。理論上說,任何人都可以下載開源軟體的程式碼來研究,改寫,對它做( /ω\ )任何想做的事。只不過,閱讀原始碼本身是一件壁壘和代價都很高的事情,所以自由軟體開發的參與者們都值得軟體使用者心懷感激。同時,因為非常多的自由軟體同時也是免費的,所以在Linux的平臺上使用免費的自由軟體也早就是日常,GNU/Linux也就給人一個“免費”的印象。但請記住,沒有“應該免費”,也沒有任何開發者“應該為你工作”,自由軟體的開發和維護產生的消耗常常讓開發者難以支撐也是一個事實。
軟體包管理器
GNU/Linux的軟體世界更像是自治的社群(Community)而不是擁有核心權力的組織。讓龐大數目的軟體能執行在Linux中,需要的是開發者們遵守某些“共識”。軟體多了,不可避免就要面對管理軟體,方便地安裝軟體,方便地解除安裝軟體。自由軟體的開發者們根據某個開發軟體的共識去開發,就形成了一系列標準統一、方便管理的軟體。而管理這些軟體的一類工具被開發出來,叫做package manager。
GNU/Linux發行版們有自己的package manager來管理“認證”過的軟體。比如:
- Debian的 apt
- Fedora的yum和dnf
- Manjaro的pamac
- Arch的pacman。
之所以強調“某個共識”,正是因為“開發軟體的共識”不是統一的,而是開發者自律編纂、自覺遵守的。對不同的程式設計目的,比如應用場景是網頁,桌面系統GUI應用程式,CLI應用程式,手機應用程式等等,都有不同的程式編寫框架要遵守,相應地也就有各自的軟體包管理器。
移動裝置的作業系統為例:AppStore,Google+Play/">Google Play,以及國內各種“應用商店”都是基於“軟體管理”這個目的被設計和實現出來的。
總結
安裝一個GNU/Linux作業系統,嘗試日常中就使用它,任何不懂直接搜尋網際網路。
這樣時間久了,對CLI的世界會形成一個直觀的印象。 而且,遊玩自己的Linux作業系統時,注意備份“絕對不想失去的檔案”,比如照片、視訊。以免命令輸錯導致檔案系統炸裂的時候欲哭無淚。(自助使用軟體資料恢復的手段是存在的,但是恢復的資料很可能是亂七八糟的,別問我是怎麼知道的,也別問我什麼是欲哭無淚)。
以無法為有法,自由自在地汲取所需是很舒暢滴;但是,總有些時候,如無頭蒼蠅般亂撞有可能撞得頭暈腦脹而不得要領。還是得進行點“系統化的學習”。這早有前人幫忙: 鳥哥的Linux私房菜 雙手推薦閱讀。

鳥哥的Linux私房菜
關鍵詞列表
- CLI
- Terminal
- TTY
- OS
- Unix Like OS
- Virtual Machine (VM)
- BIOS
- UEFI
- Dual Boot
- Linux Distribution
- GNU/Linux
- Linux Desktop
- Shell
- bash
- Gnome Shell
- Free Software
- Free beer and free speech
- Opensource
- Package Manager
- .deb and .rpm
- bin directory
- Environment Variables
- PATH
對列表中所有的條目有大概的瞭解而不是完全沒概念,那麼入門過程就算是完成了吧,我們也就處在同一階段了哦。祝你好運~