[關閉]
@ghosert 2014-11-02T14:46:50.000000Z 字數 6536 閱讀 21854

Ubuntu桌面生存指南 (1) --- 選擇 Linux

Ubuntu


緣起

我大概是從2010年4月份開始把自己的桌面開發環境從 Windows XP 遷移到 Ubuntu 10.04 的,說起來也已經有兩年半的 Ubuntu 使用經驗。那次遷移的原因大致是因為某個階段特別迷戀如何高效的操作電腦,當時把 Windows 整的很伏貼,但是說到高效的使用電腦,不可能對 Linux 系統視而不見。其次就是瞥到一個同事在搗鼓 Ubuntu, 加上畢竟 Windows 環境生存了十幾年時間,再多的新鮮感也用盡了,當時很想試試在 Linux 下是不是可以完成在 Windows 下等價的工作。當然,兩年半以后,很多結論都是不言自明的。所以《Ubuntu桌面生存指南》是我在兩年半時間里,對 Ubuntu 這個發行版的使用心得,我會涉及必要的基礎知識,幫助諸位理解,但是不會做到教科書式的面面俱到,或者涉獵太過艱深又不實用的技巧,行文的唯一目的正如題目所示,是盡可能幫助那些對 Ubuntu/Linux 感興趣的人首先生存在這個平臺,不至于因為這樣那樣的不方便錯過或者誤解一個優秀的發行版。

生存漸進史

** Windows -> VirtualBox -> Wubi -> Dedicated Partition **

想學習一個操作系統最好的手段就是把自己所有的日常工作都切換到那個操作系統里去,這種沉浸式的學習方法在很多領域都適用,比如學習一門外語,學習一種編程語言,不斷的碰壁和尋找解決方案在最初可能花費大量的時間,但是,不斷的記錄問題,寫下答案,反復的遇到相同的問題,參考答案,再次實踐當初的答案或者找到更優的答案,如此循序漸進以后,如果你看到一個高手可以在你束手無策的時候敲下長長的一串莫名其妙的命令,然后揚長而去,千萬別驚奇,這里面沒有智力的成分,也沒有記憶力好壞的區別——無奇,唯手熟爾。因此最初我是在公司的 Windows 下安裝虛擬機,當我發覺這種剪不斷理還亂的方式,讓我仍舊依賴 Windows 的時候,促使我很快就轉換到 Wubi 的安裝方式,再接著穩定使用了一年半以后就正式把 Wubi 移植到獨立分區,從物理分區的角度告別了使用將近十幾年的 Windows 平臺,轉而,在 Ubuntu 的 host 里虛擬了 Windows 的 guest。至此,總共是兩年半。完成了從 Windows Host with Ubuntu Guest 到 Ubuntu Host with Windows Guest 的轉換。套用美國佬的世界觀,我們終于可以從一個不自由的世界走向一個自由世界了。

三個虛擬世界:Linux, Mac, Windows

每個操作系統都有自己的用戶,促成他們選擇使用某一個系統的因素有很多,最大的原因是拒絕改變,這也成就了 Windows 平臺的繁榮,但是這里不含貶義,拒絕改變的背后是因為普羅大眾的生活重心并不全是計算機,他們更愿意把時間花在自己關心的領域,計算機只要夠用,適用就可以接受。這一條不僅在非 IT 領域成立,即便在 IT 領域,如果你不是一線的開發人員,同樣成立。撇開拒絕改變以外,每個能夠存活到今天的系統本身都已經沒有優劣的區分,剩下的就是理念,哲學,用途的區別,Windows, Mac, Linux 都有各自旗幟鮮明的個性,在那些不同的旗幟背后,都有堅定的擁護者,他們在自己的立場都做出了正確的選擇。因此,不同陣營的旗手互相之間做無謂的爭論幷無太多意義。但是如果你是一個暫時還沒有使用 Ubuntu/Linux 的開發者,程序員,希望這個系列文章可以改變你的看法。

開發者的操作系統

Linux 是從極客的學生宿舍里走出來的操作系統,更是通過互聯網完成協同開發的典范,匯集了全球極客的智慧。因此它也是一個開發者相當友好的操作系統,它的所有設計理念和哲學都是假定開發者作為最終用戶的。從其它操作系統遷徙到 Linux 的時候一定要牢記這點,否則就無法理解很多事情。從這個角度說,很多爭執哪個操作系統更優秀的前提就已經錯了,比爾蓋茨在1983年就告訴所有人他的夢想是人人有電腦可用。所以 Windows 注定是一個普羅大眾為最終用戶的系統,兩個系統有各自的目標用戶,那還吵什么呢?許多聳人聽聞的報刊,雜志,博文時不時的就列出一些統計數據,然后吼一嗓子:“Linux 桌面已死!”,真心混淆視聽。不過在一個商業化氣氛濃厚的社會,即便是開發人員,我們也已經太長時間被 Windows 這樣假定普羅大眾為最終用戶的系統慣壞了。我們習慣下載安裝二進制文件而不是從源碼開始編譯,我們習慣使用鼠標而不是鍵盤操作電腦,我們認為沒有圖形界面不可想象,我們面對終端束手無策,并且經常分不清出方便和高效之間的差別。所以如果你從來沒有認真使用過 Linux 千萬別先忙著下結論,否則未免會有失偏頗。安裝這個系統,使用這個系統,解決你的問題,然后再看是不是對你的胃口。理論上說,使用一個為開發者準備的操作系統不會有太多的為難,如果你感覺困難,只有兩個原因,你拒絕改變或者你真心對開發這個事情沒有興趣,反之,適應了這個環境以后會感覺舒適,安逸。

為了讓你或者他們自己更好的使用 Linux ,我們的前人做了很多事情。

  1. 他們首先開源了代碼

    這是一個嚇壞了封閉和專利系統制作者的決定。因為那些閉源廠商依靠販賣專利和二進制文件獲利,公布自己的代碼,并且連帶修改和發行權利也一并不要了,這在閉源廠商是不能想象的。相反在開源系統中,開發者求知的愿望被充分尊重了,他們可以任意閱讀自己感興趣的代碼,獲取知識,修補臭蟲,甚至參與開源項目,結識更多其它有求知欲的極客,從而提高自己的開發水平。在閉源系統中,開發者只能依賴廠商提供的 API,文檔以及定期的補丁包--這些同樣是普羅大眾不那么關心但是開發者所不能接受的。因此使用開源系統無疑可以增強自己的技能水準,并且在使用系統的同時有機會改進和修補自己的系統。

  2. 他們更懂開發者

    從誕生之初起,這就是一個極客玩出來的操作系統。與其說他們是在開發操作系統不如說他們是在滿足開發者自己的需求,這就是著名的“吃狗食“理論,需要一個開發者系統:1. 動手做一個 -> 2. 生存在其中 -> 3. 體會優劣 -> 4. 修補不足,增進優勢使它更適合開發 -> 循環至 1. 生存在其中。所以這個系統會越來越朝著它的方向發展,那就取悅開發者自己。經過大約二十多年的發展,今天的開發者系統已經積累了無數提升開發生產力的哲學,理念和工具軟件。幾乎你能想到的和未能想到的一切和開發相關的需求都已經在開發者系統上被滿足了,你需要做的就是學習,練習和使用。即便這仍然不能滿足你,開發者系統上很容易對已有的存在做一個分支然后進行自我滿足的工作。某些時候沒人比你自己更懂自己,更多的時候他們比你更懂你自己,使用開發者系統的開發者時常就會想到要是有這么一個功能就好了,然后 Google 一下相關資料,接著自言自語 “哦。。。果然已經有了”。物以類聚,人以群分,如果我們的行為方式和思維模式相近,那么先前的開發者早就遇到過相同的困擾并且動手解決了問題。你仍然只需要學習,練習和使用,僅此而已。他們懂得鍵盤比起鼠標在大多數開發場合更高效,他們懂得軟件界面首先需要的是命令行,其次才是圖形化界面,他們懂得命令優于導航的哲學,你需要編輯器/編譯器,他們提供了偉大的 Vim,Emacs/gcc, g++,你需要好用的腳本語言,他們內置了Bash Shell/Python,你需要更高效的操作電腦,他們提供了無數的實用命令行程序,幷為幾乎每一個程序配置了無數參數來滿足你的需要,一旦我們理解他們這么做的初衷,剩下的還是學習,練習和使用。

  3. 我們更懂自己嗎?

    不幸的是很多人接受了饋贈卻開始抱怨:“這么多命令,參數怎么記得住?為什么沒有像樣的 GUI 版本,為什么沒有像 VB 那樣可拖拉的 IDE? 我需要一個開箱即用的系統,不折騰!”。實際上我們幷沒有開發這些程序,其實我們沒有資格抱怨什么,如果我們需要的幷不存在于開發者系統,那么停止抱怨,仔細思考,更大的可能是:不存在意味著不需要,意味著存在會拖累生產力,違背開發者系統的哲學。很多的誤解來自長期使用普羅大眾系統,我們是被慣壞的一代,普羅大眾系統假定用戶依靠鼠標和直覺去操作系統,他們依靠盡量壓縮用戶的學習成本去博得方便使用的好名聲,很多系統在這方面確實做得很好,很多人不需要閱讀使用手冊就可以使用軟件和操作系統。這同樣也是普羅大眾系統經過幾十年“吃狗食”得到的回報。但是仔細想想這是開發者需要的系統嗎?普羅大眾和開發者站在兩個各自的立場,有各自的需求。如果開發者覺得普羅大眾系統很好用,這現象本身就很值得探討,肯定有地方出錯了不是嗎? 何況這是一個開發者友好的系統,那么為什么還是有許多開發者并不適應?其實我們忘記了一個最簡單的道理,技能是需要習得的。開發者不能按普羅大眾的要求來要求自己,方便和高效其實并不是等價的,普羅大眾系統的方便是依靠犧牲效率和可定制性來達成的,例如鼠標點擊運行程序看起來比輸入命令啟動程序方便很多,但是如果你需要從上百個圖標里尋找那個程序會怎么樣?你又能不能啟動程序的時候要求啟動后最大化窗口?所以開發者系統開始不斷增加命令,配置,選項和各類約定來追求效率和可定制性。而一旦我們認為效率和可定制性更重要的時候,記憶的負擔,學習的成本就出現了,我們需要去學習記憶,熟練運用那些命令配置,了解約定,遵守約定。開發者需要不斷的學習技能以追求更高效的使用開發者系統,這才是開發者和普羅大眾的本質區別,這個世界上幷沒有那么多好處全你占的事情,提升效率的前提便是增加學習成本,容忍一定程度的不那么方便。不想折騰又想高效的使用開發者系統就和沒好好學過外語又想有流利的口語一樣荒誕,我們所有的技能,除了本能以外,譬如:心算,語言,記憶力,專業技能都需要反復折騰才能獲得,使用開發者系統同樣如此。說不折騰的人,要么是普羅大眾,要么被普羅大眾系統搞傻了,要么就是身心老了,折騰不動了。了解這個事實以后,讀者自行權衡,然后我們才能說接下來的事情。

Linux 哲學

為了高效的使用開發者系統,Linux 哲學中最重要的一點就是命令優于導航

導航操作是指人類通過視覺定位,進而層層遞進的操作方式,通常由鼠標完成。例如瀏覽網頁,點擊鏈接進而繼續瀏覽點擊。對于普羅大眾有以下幾個情形,我們會使用導航方式:

  1. 不知道自己想讓計算機做什么或者計算機可以告訴我們什么,通過隨意瀏覽方式挖掘我們可能可以讓計算機做什么或者告訴我什么。最常見的案例就是在沒有使用手冊的情況下,所以點擊菜單,看看某個軟件都有哪些功能,或者是去門戶網站,微博上刷刷有什么自己感興趣的內容。

  2. 我知道要計算機做什么,但是我需要先在一堆菜單,圖標里找到我需要的按鈕,在告訴計算機去做之前必須例行的完成數次導航操作,例如我想卸載某個游戲,就需要從點擊菜單欄開始尋找到這個游戲的程序組,點擊卸載圖標。又例如我需要安裝 Firefox,那我得先設法找到 Firefox 的官網,從其中找到下載鏈接,選擇相適應的匹配版本,然后點擊下載,等待完成后,去安裝文件所在的文件夾,雙擊安裝,期間還需要確認無數條款,選擇安裝目錄,刪減可選插件,最后確認安裝。

命令操作則無需付出視覺定位的成本,如果你會盲打,基本上你可以直接使用快捷鍵或者敲擊命令行對計算機進行操作,這些操作通常只依賴于鍵盤。由于標準鍵盤上有至少100個以上的按鍵,可以組合出無數的操作手法以應對各種復雜的情況,所以基本上鍵盤是最重要和最強大的計算機輸入設備。很可惜普羅大眾很多時候沒有意識到這一點,只是在碼字的時候才敲擊鍵盤,卻不善于真正使用鍵盤操控計算機的其它功能。我們會使用命令方式:

  1. 在不知道計算機能做什么的時候,一樣用命令方式進行瀏覽,除非某些 GUI 軟件不提供快捷鍵功能。

  2. 在知道要計算做什么的時候直接給出相應的命令操控電腦,比如我需要安裝 Firefox,基本上在 Ubuntu 里,只需要鍵入:

  1. sudo apt-get install firefox

那么為什么說命令優于導航?幾點原因:

仔細回顧一個最基本的問題:我們是如何使用一臺計算機的?通過輸入設備傳達指令,計算機做出處理幷通過輸出設備返回結果,這就是最基本的使用流程。無論是個人電腦,智能手機,平板都是這個流程。哪個系統更方便輸入,哪個系統就更方便使用,普羅大眾系統很清楚這一個基本準則,所以他們最小化了用戶輸入指令的成本,開發出了鼠標,觸摸屏,甚至語音識辨,聲控系統,光感系統。在公眾視野制造了一波又一波的流行熱。但是追求潮流并不解決效率的問題,如前文所述,方便幷不意味著高效。尤其對于需要大量輸入的開發者系統而言更是如此。基本的鼠標操作是基于圖形界面也就是導航的,我們通過鼠標傳達指令,首先需要通過眼睛定位圖形界面上操作對象的位置例如:一個菜單,一個按鈕,其次移動鼠標定位位置,完成點擊,并且往往需要重復一系列這個過程才能完成一個實際上有意義的操作,如果同時還需要大量的文本處理,那么雙手還需要在鼠標和鍵盤之間做大量費時的切換工作。的確,每一次定位,點擊,切換的代價幷沒有那么的大,但是累積到一定程度,或者當你需要批處理一堆類似的任務,就相當的折磨人了。是不是時常感覺到右手肩關節有酸疼感?直接病因就是長期依賴右手握持鼠標,右肩無法呈自然下垂姿態。這個病俗稱鼠標手,學名肩周琰。可見導航操作給身體帶來了多大的傷害。命令操作的輸入代價會大一些,但是讓雙手全程固定在了鍵盤上,對于文字輸入者避免了切換鼠標的時間損耗,和注意力的被迫轉移。命令本身,通過組合,也是對計算機系統最直接的指令下達,很多時候反而可以避免大量的導航工作。如前所述的 Firefox 安裝。

前面我們提到過,在一個有幾十個圖標的桌面上,要定位到某個想要啟動的程序,或者在一個多級菜單里尋找某個軟件功能是費力費眼的。如果你了解等價的命令,直接鍵入程序名然后啟動應用程序會快上很多倍。也就是說如果你知道你想干什么,使用鍵盤鍵入命令或者執行搜索,效果會比肉眼巡視來得高效很多。搜索這個概念在開發者系統的很多地方都貫穿得相當徹底,find/which/whereis/grep/vim/vimperator 很多命令都是基于搜索優于導航這一理念的。時刻養成搜索的習慣能幫助我們更高效的使用開發者系統。

Start Firefox

開發基于導航的 GUI 成本巨大而且容易出錯,命令行則相反。這就讓開發者在最初可以只集中精力處理命令本身需要完成的核心功能,而不是花費大量的時間在 GUI 的外殼上。通過幾個小程序組合出更強悍的功能,通過調整不同的參數或者使用文本配置文件的方式進行隨意的軟件定制,甚至批處理一堆需要重復運行的計算機操作,這在命令行都是很自然的事情,GUI 想達成同樣的目標就相當費力了。

在桌面上強調使用命令,使得我們順便撿到了一份紅利,因為我們慣用命令,可以擺脫 GUI 的依賴,我們就能更好的登錄到遠程的機器上進行各種操作,因為使用命令的傳輸代價遠遠小于圖形界面的遠程傳輸,時至今日,ssh 遠程登入仍然是 Linux 系統管理員遠程管理電腦的標準方式。所有你在本地桌面上操練掌握的命令,都可以在遠程服務器上別無二致的使用,不至于在只配備終端沒有GUI的服務器上會感覺手足無措。

通過命令優于導航這一條公理,我們演化出了以下理念,請在使用開發者系統的時候時刻牢記:

  1. 命令行優于圖形界面
  2. 鍵盤優于鼠標
  3. 搜索優于導航

最后,使用開發者系統的前提是認同 Linux 哲學,理解學習,記憶的代價是用來換取高效使用開發者系統而產生的。你越多的付出腦力成本使用這個系統,就會越高效安逸的生存在這個系統中,也就越認同她的哲學,使得你付出更多的腦力成本,繼而進入同時鍛煉腦力和提高生產力的良性循環中。這種變化甚至可以影響到你做任何事情的態度:收起懶散的心理和渙散的心智,使用腦力來提升效率,最終讓你成為一個務實,智慧和高效的人。

添加新批注
在作者公開此批注前,只有你和作者可見。
回復批注
湖北快三遗漏