Ubuntu桌面生存指南:Linux 的哲学
时间:2014-10-25 14:40 来源:linux.it.net.cn 作者:it
缘起
我大概是从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
Linux -> 开发人员,科学家,工程师的开发者系统
Windows -> 老百姓的普罗大众系统
Mac -> 上述两者之间,部分不明真相的群众,以及高端装系统
每个操作系统都有自己的用户,促成他们选择使用某一个系统的因素有很多,最大的原因是拒绝改变,这也成就了 Windows 平台的繁荣,但是这里不含贬义,拒绝改变的背后是因为普罗大众的生活重心并不全是计算机,他们更愿意把时间花在自己关心的领域,计算机只要够用,适用就可以接受。这一条不仅在非 IT 领域成立,即便在 IT 领域,如果你不是一线的开发人员,同样成立。撇开拒绝改变以外,每个能够存活到今天的系统本身都已经没有优劣的区分,剩下的就是理念,哲学,用途的区别,Windows, Mac, Linux 都有各自旗帜鲜明的个性,在那些不同的旗帜背后,都有坚定的拥护者,他们在自己的立场都做出了正确的选择。因此,不同阵营的旗手互相之间做无谓的争论幷无太多意义。但是如果你是一个暂时还没有使用 Ubuntu/Linux 的开发者,程序员,希望这个系列文章可以改变你的看法。
开发者的操作系统
Linux 是从极客的学生宿舍里走出来的操作系统,更是通过互联网完成协同开发的典范,汇集了全球极客的智慧。因此它也是一个开发者相当友好的操作系统,它的所有设计理念和哲学都是假定开发者作为最终用户的。从其它操作系统迁徙到 Linux 的时候一定要牢记这点,否则就无法理解很多事情。从这个角度说,很多争执哪个操作系统更优秀的前提就已经错了,比尔盖茨在1983年就告诉所有人他的梦想是人人有电脑可用。所以 Windows 注定是一个普罗大众为最终用户的系统,两个系统有各自的目标用户,那还吵什么呢?许多耸人听闻的报刊,杂志,博文时不时的就列出一些统计数据,然后吼一嗓子:“Linux 桌面已死!”,真心混淆视听。不过在一个商业化气氛浓厚的社会,即便是开发人员,我们也已经太长时间被 Windows 这样假定普罗大众为最终用户的系统惯坏了。我们习惯下载安装二进制文件而不是从源码开始编译,我们习惯使用鼠标而不是键盘操作电脑,我们认为没有图形界面不可想象,我们面对终端束手无策,并且经常分不清出方便和高效之间的差别。所以如果你从来没有认真使用过 Linux 千万别先忙着下结论,否则未免会有失偏颇。安装这个系统,使用这个系统,解决你的问题,然后再看是不是对你的胃口。理论上说,使用一个为开发者准备的操作系统不会有太多的为难,如果你感觉困难,只有两个原因,你拒绝改变或者你真心对开发这个事情没有兴趣,反之,适应了这个环境以后会感觉舒适,安逸。
为了让你或者他们自己更好的使用 Linux ,我们的前人做了很多事情。
他们首先开源了代码
这是一个吓坏了封闭和专利系统制作者的决定。因为那些闭源厂商依靠贩卖专利和二进制文件获利,公布自己的代码,并且连带修改和发行权利也一并不要了,这在闭源厂商是不能想象的。相反在开源系统中,开发者求知的愿望被充分尊重了,他们可以任意阅读自己感兴趣的代码,获取知识,修补臭虫,甚至参与开源项目,结识更多其它有求知欲的极客,从而提高自己的开发水平。在闭源系统中,开发者只能依赖厂商提供的 API,文档以及定期的补丁包–这些同样是普罗大众不那么关心但是开发者所不能接受的。因此使用开源系统无疑可以增强自己的技能水准,并且在使用系统的同时有机会改进和修补自己的系统。
他们更懂开发者
从诞生之初起,这就是一个极客玩出来的操作系统。与其说他们是在开发操作系统不如说他们是在满足开发者自己的需求,这就是著名的“吃狗食“理论,需要一个开发者系统:1. 动手做一个 -> 2. 生存在其中 -> 3. 体会优劣 -> 4. 修补不足,增进优势使它更适合开发 -> 循环至 1. 生存在其中。所以这个系统会越来越朝着它的方向发展,那就取悦开发者自己。经过大约二十多年的发展,今天的开发者系统已经积累了无数提升开发生产力的哲学,理念和工具软件。几乎你能想到的和未能想到的一切和开发相关的需求都已经在开发者系统上被满足了,你需要做的就是学习,练习和使用。即便这仍然不能满足你,开发者系统上很容易对已有的存在做一个分支然后进行自我满足的工作。某些时候没人比你自己更懂自己,更多的时候他们比你更懂你自己,使用开发者系统的开发者时常就会想到要是有这么一个功能就好了,然后 Google 一下相关资料,接着自言自语 “哦。。。果然已经有了”。物以类聚,人以群分,如果我们的行为方式和思维模式相近,那么先前的开发者早就遇到过相同的困扰并且动手解决了问题。你仍然只需要学习,练习和使用,仅此而已。他们懂得键盘比起鼠标在大多数开发场合更高效,他们懂得软件界面首先需要的是命令行,其次才是图形化界面,他们懂得命令优于导航的哲学,你需要编辑器/编译器,他们提供了伟大的 Vim,Emacs/gcc, g++,你需要好用的脚本语言,他们内置了Bash Shell/Python,你需要更高效的操作电脑,他们提供了无数的实用命令行程序,幷为几乎每一个程序配置了无数参数来满足你的需要,一旦我们理解他们这么做的初衷,剩下的还是学习,练习和使用。
我们更懂自己吗?
不幸的是很多人接受了馈赠却开始抱怨:“这么多命令,参数怎么记得住?为什么没有像样的 GUI 版本,为什么没有像 VB 那样可拖拉的 IDE? 我需要一个开箱即用的系统,不折腾!”。实际上我们幷没有开发这些程序,其实我们没有资格抱怨什么,如果我们需要的幷不存在于开发者系统,那么停止抱怨,仔细思考,更大的可能是:不存在意味着不需要,意味着存在会拖累生产力,违背开发者系统的哲学。很多的误解来自长期使用普罗大众系统,我们是被惯坏的一代,普罗大众系统假定用户依靠鼠标和直觉去操作系统,他们依靠尽量压缩用户的学习成本去博得方便使用的好名声,很多系统在这方面确实做得很好,很多人不需要阅读使用手册就可以使用软件和操作系统。这同样也是普罗大众系统经过几十年“吃狗食”得到的回报。但是仔细想想这是开发者需要的系统吗?普罗大众和开发者站在两个各自的立场,有各自的需求。如果开发者觉得普罗大众系统很好用,这现象本身就很值得探讨,肯定有地方出错了不是吗? 何况这是一个开发者友好的系统,那么为什么还是有许多开发者并不适应?其实我们忘记了一个最简单的道理,技能是需要习得的。开发者不能按普罗大众的要求来要求自己,方便和高效其实并不是等价的,普罗大众系统的方便是依靠牺牲效率和可定制性来达成的,例如鼠标点击运行程序看起来比输入命令启动程序方便很多,但是如果你需要从上百个图标里寻找那个程序会怎么样?你又能不能启动程序的时候要求启动后最大化窗口?所以开发者系统开始不断增加命令,配置,选项和各类约定来追求效率和可定制性。而一旦我们认为效率和可定制性更重要的时候,记忆的负担,学习的成本就出现了,我们需要去学习记忆,熟练运用那些命令配置,了解约定,遵守约定。开发者需要不断的学习技能以追求更高效的使用开发者系统,这才是开发者和普罗大众的本质区别,这个世界上幷没有那么多好处全你占的事情,提升效率的前提便是增加学习成本,容忍一定程度的不那么方便。不想折腾又想高效的使用开发者系统就和没好好学过外语又想有流利的口语一样荒诞,我们所有的技能,除了本能以外,譬如:心算,语言,记忆力,专业技能都需要反复折腾才能获得,使用开发者系统同样如此。说不折腾的人,要么是普罗大众,要么被普罗大众系统搞傻了,要么就是身心老了,折腾不动了。了解这个事实以后,读者自行权衡,然后我们才能说接下来的事情。
Linux 哲学
为了高效的使用开发者系统,Linux 哲学中最重要的一点就是命令优于导航。
导航操作是指人类通过视觉定位,进而层层递进的操作方式,通常由鼠标完成。例如浏览网页,点击链接进而继续浏览点击。对于普罗大众有以下几个情形,我们会使用导航方式:
不知道自己想让计算机做什么或者计算机可以告诉我们什么,通过随意浏览方式挖掘我们可能可以让计算机做什么或者告诉我什么。最常见的案例就是在没有使用手册的情况下,所以点击菜单,看看某个软件都有哪些功能,或者是去门户网站,微博上刷刷有什么自己感兴趣的内容。
我知道要计算机做什么,但是我需要先在一堆菜单,图标里找到我需要的按钮,在告诉计算机去做之前必须例行的完成数次导航操作,例如我想卸载某个游戏,就需要从点击菜单栏开始寻找到这个游戏的程序组,点击卸载图标。又例如我需要安装 Firefox,那我得先设法找到 Firefox 的官网,从其中找到下载链接,选择相适应的匹配版本,然后点击下载,等待完成后,去安装文件所在的文件夹,双击安装,期间还需要确认无数条款,选择安装目录,删减可选插件,最后确认安装。
命令操作则无需付出视觉定位的成本,如果你会盲打,基本上你可以直接使用快捷键或者敲击命令行对计算机进行操作,这些操作通常只依赖于键盘。由于标准键盘上有至少100个以上的按键,可以组合出无数的操作手法以应对各种复杂的情况,所以基本上键盘是最重要和最强大的计算机输入设备。很可惜普罗大众很多时候没有意识到这一点,只是在码字的时候才敲击键盘,却不善于真正使用键盘操控计算机的其它功能。我们会使用命令方式:
在不知道计算机能做什么的时候,一样用命令方式进行浏览,除非某些 GUI 软件不提供快捷键功能。
在知道要计算做什么的时候直接给出相应的命令操控电脑,比如我需要安装 Firefox,基本上在 Ubuntu 里,只需要键入:
sudo apt-get install firefox
那么为什么说命令优于导航?几点原因:
导航操作从生理上增加了使用电脑的额外负担
仔细回顾一个最基本的问题:我们是如何使用一台计算机的?通过输入设备传达指令,计算机做出处理幷通过输出设备返回结果,这就是最基本的使用流程。无论是个人电脑,智能手机,平板都是这个流程。哪个系统更方便输入,哪个系统就更方便使用,普罗大众系统很清楚这一个基本准则,所以他们最小化了用户输入指令的成本,开发出了鼠标,触摸屏,甚至语音识辨,声控系统,光感系统。在公众视野制造了一波又一波的流行热。但是追求潮流并不解决效率的问题,如前文所述,方便幷不意味着高效。尤其对于需要大量输入的开发者系统而言更是如此。基本的鼠标操作是基于图形界面也就是导航的,我们通过鼠标传达指令,首先需要通过眼睛定位图形界面上操作对象的位置例如:一个菜单,一个按钮,其次移动鼠标定位位置,完成点击,并且往往需要重复一系列这个过程才能完成一个实际上有意义的操作,如果同时还需要大量的文本处理,那么双手还需要在鼠标和键盘之间做大量费时的切换工作。的确,每一次定位,点击,切换的代价幷没有那么的大,但是累积到一定程度,或者当你需要批处理一堆类似的任务,就相当的折磨人了。是不是时常感觉到右手肩关节有酸疼感?直接病因就是长期依赖右手握持鼠标,右肩无法呈自然下垂姿态。这个病俗称鼠标手,学名肩周琰。可见导航操作给身体带来了多大的伤害。命令操作的输入代价会大一些,但是让双手全程固定在了键盘上,对于文字输入者避免了切换鼠标的时间损耗,和注意力的被迫转移。命令本身,通过组合,也是对计算机系统最直接的指令下达,很多时候反而可以避免大量的导航工作。如前所述的 Firefox 安装。
导航操作容易产生视觉上的迷失
前面我们提到过,在一个有几十个图标的桌面上,要定位到某个想要启动的程序,或者在一个多级菜单里寻找某个软件功能是费力费眼的。如果你了解等价的命令,直接键入程序名然后启动应用程序会快上很多倍。也就是说如果你知道你想干什么,使用键盘键入命令或者执行搜索,效果会比肉眼巡视来得高效很多。搜索这个概念在开发者系统的很多地方都贯穿得相当彻底,find/which/whereis/grep/vim/vimperator 很多命令都是基于搜索优于导航这一理念的。时刻养成搜索的习惯能帮助我们更高效的使用开发者系统。
命令操作更容易被开发,组合使用,以及更容易地进行参数调整,脚本化批量处理
开发基于导航的 GUI 成本巨大而且容易出错,命令行则相反。这就让开发者在最初可以只集中精力处理命令本身需要完成的核心功能,而不是花费大量的时间在 GUI 的外壳上。通过几个小程序组合出更强悍的功能,通过调整不同的参数或者使用文本配置文件的方式进行随意的软件定制,甚至批处理一堆需要重复运行的计算机操作,这在命令行都是很自然的事情,GUI 想达成同样的目标就相当费力了。
便于远程管理计算机
在桌面上强调使用命令,使得我们顺便捡到了一份红利,因为我们惯用命令,可以摆脱 GUI 的依赖,我们就能更好的登录到远程的机器上进行各种操作,因为使用命令的传输代价远远小于图形界面的远程传输,时至今日,ssh 远程登入仍然是 Linux 系统管理员远程管理电脑的标准方式。所有你在本地桌面上操练掌握的命令,都可以在远程服务器上别无二致的使用,不至于在只配备终端没有GUI的服务器上会感觉手足无措。
通过命令优于导航这一条公理,我们演化出了以下理念,请在使用开发者系统的时候时刻牢记:
命令行优于图形界面
键盘优于鼠标
搜索优于导航
最后,使用开发者系统的前提是认同 Linux 哲学,理解学习,记忆的代价是用来换取高效使用开发者系统而产生的。你越多的付出脑力成本使用这个系统,就会越高效安逸的生存在这个系统中,也就越认同她的哲学,使得你付出更多的脑力成本,继而进入同时锻炼脑力和提高生产力的良性循环中。这种变化甚至可以影响到你做任何事情的态度:收起懒散的心理和涣散的心智,使用脑力来提升效率,最终让你成为一个务实,智慧和高效的人。
选择 Ubuntu
对于准备迁徙到 Linux 的用户来说,另一个头疼的问题就是选择发行版。所谓发行版是指在同一个 Linux Kernal 上由不同厂商,社区定制包装了不同桌面管理系统和附带了常用软件的 Linux 发行版本,通俗来说就是可以交付给用户安装的 Linux 系统。常见的发行版有 Ubuntu, Mint,RedHat, Fedora 等等,总数不下几百种。面对数量庞大的发行版,新人总是很难做出选择。好在每个发行版本都比较有针对性,有些是针对桌面应用,有些是针对服务器系统,还有一些比较适合初级用户,或者资深极客,大致了解各自的特性以及用户自己的需求也不难做出选择,另外实际上每种发行版之间的区别幷没有大到完全对立的地步,即便随便选择一种用起来上手,大多数的知识还是可以延续和继承在另一种发行版上的。只要不是三天两头换装各种发行版,也不算浪费时间和精力。
选择 Ubuntu 的理由:
1. 简单,易用,美观,默认软件齐全,适合入门
Ubuntu 在发行之初就以打造一个适合上手,容易入门的 Linux 系统而著称,吸引了大量来自 Windows 的用户。它的发行方式众多,包括 CD / DVD / U盘 等传播方式,用户可以自行下载 ISO 文件刻盘或者制作启动U盘,甚至可以免费向 Ubuntu 的母公司 Canonical 索取邮寄光盘。它的体验安装方式也很丰富,包括:
a) 试用体验:无论用户的电脑是什么系统,都可以在启动的时候选择从光盘或者U盘启动 Ubuntu 进行试用,不破坏原有数据。再次从硬盘启动后仍旧进入用户的原有系统,很方便那些想尝鲜的用户。很多时候,在原有系统无法启动的情况下,甚至可以利用 Ubuntu 的这个特性来进行硬盘修复,挽救数据的工作。
b) Wubi安装: 直接将 Ubuntu 作为 Windows 系统的一个应用程序安装,再次启动后出现双启动菜单,避免了破坏原有 Windows 分区的风险,如果对 Ubuntu 不满意,可以直接在 Windows 中像删除任意一个应用软件那样删除 Ubuntu,完全没有损害系统和数据的担心。如果使用一段时间以后决定将 Wubi 系统转移到物理分区也相当简单,虽然没有官方的方法,网络上有现成的脚本可以在几分钟内完成这个工作。
c) 虚拟机安装:这种方式则允许你在启动 Windows 的同时,试用虚拟机里的 Ubuntu 系统。暂时无法离开 Windows 环境生存的用户可以通过这种方式进行过度。
d) 硬盘安装:得益于良好的硬件兼容性测试和完备的驱动兼容,安装 Ubuntu 系统甚至比安装 Windows 的过程更流畅和简单,几次点击和设置以后就可以顺利的完成。天然先进的 Linux 内核架构也使得启动过程异常的迅速,几秒之内完成开机。硬盘安装使得操作系统在本机可以获得最高的运行效率,充分发挥硬件机能,也迫使用户在心理和生理上彻底隔绝对原有系统的依赖,更有利于提高自己在 Ubuntu 系统上的生存能力。在物理分区上安装 Ubuntu 是普罗大众彻底告别专利世界,走向自由世界,完成自我救赎的重要一步,笔者在这里呼吁更多的读者选择这种安装方式,开启心智,提升生产力。
综上所述,Ubuntu 在降低 Linux 的学习曲线上做了大量的工作,也因此一度成为最流行的 Linux 发行版。
2. 先进方便的软件包管理 apt-get
在 Linux 下安装软件有两种方式:1. 从源代码开始编译安装 2. 选择发行版自带的软件包管理系统。前者需要一定的开发知识,了解一些编译器,makefile的基本工作原理,如果安装过程中出现问题,要有一定解决问题的能力,能够根据错误信息做相应的调整,对于新手来说有不小的难度。后者则是由厂商直接提供经过测试的,和当前系统匹配的二进制软件。官方和第三方厂商都会提供相应的软件源,只要连接互联网,你就可以通过命令的方式下载需要的软件,例如在终端运行:
sudo apt-get install firefox
就下载了火狐浏览器,如果连接国外的网速比较慢,还可以通过选择国内的镜像网站加速下载。有人会说敲击命令下载软件有多麻烦?那么参见上一篇 选择Linux。一般来说,官方源里的软件很少有兼容性问题,因为他们都是经过测试的。如果对某个软件不满意你只需要:
sudo apt-get purge firefox
经过一段时间以后,系统还会定期提示哪些软件有新版本,你同样只需要运行一个命令完成所有软件的升级:
sudo apt-get upgrade
回想 Windows 系统,你需要在互联网上满世界找下载链接,还可能携带病毒,相当不方便,反倒是360软件管家提供了类似的功能。
大多数的发行版都有自己的软件包管理器,例如 redhat 系列的 rpm, Debian/Ubuntu 系列的 deb,哪个管理器可以更方便的使用,更少存在安装卸载问题,更好的理清楚软件之间的依赖关系都是我们选择发行版的重要依据, Ubuntu在这方面天然强大。
3. 强大的文档,社区支持
使用开源软件的另一个问题在于虽然用户有免费使用系统,修改系统,甚至再发行的权利,但是毕竟没有为系统支付过任何费用,因此除非你主动付费否则无法在出现状况的时候要求厂商提供技术支持。对于学习型人才不算什么太大的问题,对于迁徙到这个系统的新人就又束手无策了。正版的 Windows 用户应该是享有这样的权利,Mac 电脑同样可以通过苹果店一对一的专家技术服务解决问题或者购买相关技术支持服务。如果这个时候没有一个强大而且团结的社区组织,一群热心解决问题的技术专家,新人仍然无法生存在这个系统中。好在作为最流行的 Linux 发行版,Ubuntu 在这方面依然很强大。大多数的问题可以通过 Ubuntu官方 和 Ubuntu中文社区 解决。
生存下来
从一个世界进入到另一个世界后的第一要务就是生存下去,许多人因为无法适应和理解新世界的生存法则,选择了退回到旧世界。但是在此之前,我们鼓励进入新世界的用户扔掉旧有的世界观,用开放包容和探索的态度去适应新世界,用尽可能短的时间生存下来,适应这个世界,改造这个世界。
首先看看新世界为我们提供了什么?
1. gnome-terminal
我们在前面说过 Linux 哲学中最重要的一条就是:命令优于导航,因此一个好用的终端系统尤为重要,终端系统是用户输入命令行,查看输出结果的媒介,一个合格的 Linux 使用者会花费至少 20% 的时间在终端中,如果你是一个开发者,这个比例会更高。
2. 火狐浏览器
浏览器的重要性在互联网时代不言而喻,由于 Google Chrome 的强力竞争,火狐浏览器市场占有率最近有所减缓,但是笔者依然是坚定的用户,火狐浏览器的插件生态链时至今日仍然是最强大的,我会在后面的博客系列中做单独介绍。很多用户幷不觉得插件有多重要,坚持 Chrome 的渲染速度秒杀一切,这个观念其实很有问题,硬件机能发展到现在,在同等条件下软件优化带来的效果提升非常有限,反而是人类操作手法的差别才是成为速度快慢的关键,一次缓慢的点击,或者在海量信息前的视觉迷失往往拖累了使用计算机的效率,成为瓶颈,改善操作手法,训练我们自己才是提高速度,提高效率的关键。好的插件就是为了这个目的而存在的。
3. LibreOffice
LibreOffice 源自于著名的 OpenOffice 办公软件,用以替代 Windows 下的 MS Office。我自己虽然并不常用(本人是坚定的文本拥护者,见 极客的博客 一文)但是针对 Office 用户仍然值得推荐。Libre Wirter, Libre Calc, Libre Impress 分别对应 MS Word, MS Excel,MS PowerPoint。
4. iBus 输入法架构
和 Ubuntu 本尊最匹配,最兼容的输入法架构,可以无限扩展各类输入法。笔者目前使用的是系统自带的 iBus-Pinyin,并对词库做了扩展,今后做具体介绍。其它的输入法例如 fcitx 或多或少有一些兼容问题。
5. Rhythmbox 音乐播放器
作为音乐播放器没有皮肤,没有华丽丽的桌面歌词功能,提供本地音乐,网络电台,在线播客等功能,中规中矩,简单实用。
6. Totem Movie Player
系统自带的视频播放软件,由于许多视频解压缩算法首先是在 Linux 平台发明的,所以在视频格式的兼容性问题上,Linux 平台反而很少出现没有办法播放视频的状况,除非是微软的私有格式。
7. Ubuntu 软件中心
统一管理安装卸载,软件下载的软件中心,任何对软件的操作都可以在这里进行。笔者实际很少用到,大多数时候还是利用命令 apt-get 进行查询,安装,卸载工作。为什么使用命令,前文有详解:
至此,系统默认自带的软件已经为我们提供了终端,浏览器,办公套件,输入法,音乐,视频播放和统一的软件中心,其它的必备软件不再一一列举,基本上用户总是可以找到和 Windows 相对应的软件。从普罗大众的角度来说,即使把这个状态的 Ubuntu 当作 Windows 来使用,一样可以胜任等价的工作,并且没有花费一分钱的专利费用。更由于对病毒木马的天然免疫,无需安装价格不菲的杀毒软件和声誉不佳的360系列软件。
Ubuntu桌面的悬案:迅雷,网银,IMs,游戏,行业软件
自由新世界并不是完美世界。普罗大众在迁徙过程中集中抱怨的稀缺软件有:迅雷,网银,国内流行的 IMs(MSN,QQ),游戏,行业领域的特殊商业软件。道理上讲,这个算不上 Ubuntu 的问题,商业公司在利益驱动下,对于非主流的操作系统总是采取选择性忽略,疏于开发 Linux 平台的兼容版本。一些 Linux 极端主义者对此表示:不提供 Linux 版本的软件都是没有用的软件。笔者什么都不表示,默默的装上这个软件:
sudo apt-get install virtualbox
sudo apt-get install virtualbox-guest-additions
sudo apt-get install virtualbox-guest-additions-iso
也有同学喜欢用 Wine 的方式来运行 Windows 下的软件,我的意见是:对于大多数软件运行在虚拟机里是最省力的做法,Wine 实在是考验人品的利器,除非万不得已,不要轻易使用,笔者只有一个 PDF 软件使用了 Wine 这种方式,以后再做具体介绍。其它譬如:迅雷,MSN,QQ,行业软件,部分游戏都可以在虚拟机里运行。关于网银,支付宝有直接支持火狐浏览器,大多数带有U盘做电子证书的网上银行譬如招行也都可以毫无压力的运行在虚拟机里。但是需要为了使 Virtualbox 辨认出物理 USB 外设做如下设置:
对于 Ubuntu 12.04 系统安装(10.04系统可以省略):
sudo apt-get install gnome-system-tools
在 Ubuntu 已安装的应用程序中找到:Users And Groups,点击 Manage Groups,双击“vboxusers”后选择当前用户名,点击确认。重启计算机后运行 Virtualbox 启动 Windows,在底部隐藏菜单内选择“Devices->USB Devices->对应的 USB 外设” 即可。
高质量的生存,从桌面图标说起
写到这里,我们已经具备了基本的生存条件,千万不要高兴太早,失去前进的动力,因为我们至多还是“使用 Linux 的 Windows 用户”,我们仍然基于鼠标,图形化界面和导航这些低效的外设,理念来使用高效的开发者系统。这一小节笔者提纲挈领的分享一下如何高质量地生存在开发者系统。在今后的博文系列中则会结合具体的软件分享更多的高效使用开发者系统的经验。
没有图标的桌面 — 做正确的事情,幷把它做到极致
从这篇博客切换到你当前的桌面,数一数桌面上有多少个可以点击的图标。十个?二十个?或者更多?我们往往把常见的事情认为理所当然,没有人去质疑这个事情,甚至我自己在几年前也把铺满图标的桌面作为一种充实的象征,普罗大众系统也很鼓励创建桌面图标,几乎每次安装软件都会有新图标在桌面上(Ubuntu系统不会),除此以外,我们也常常按直觉把重要的东西放在桌面上。从短视的角度来看,确实很方便,但是日积月累之后,谁都会感觉在一堆红红绿绿的图标里找到自己想要的东西有多困难。造成这类视觉迷失痛苦体验的根源仍然是贪图方便,依赖视觉导航,没有花费脑力。
一来我们是被普罗大众系统的设计误导了,二来我们缺少真正的思考去理解如何处理人和计算机的关系,从而达成高效的目标。
运用心智并且乐于花费脑力的人会怎么解决这个问题? 参考我们之前的理念:“命令优于导航”,与其在一堆桌面图标里找自己需要的东西,为什么不直接告诉计算机自己要什么呢?在 Ubuntu 里通过快捷键:ctrl+alt+T开启终端,然后输入自己想要打开的软件比如:
jiawzhang@company-ws:~$ firefox
键入firefox,然后浏览器就打开了。我们付出了一些记忆软件名称和敲击键盘的成本,却避免了视觉搜索和导航操作的低效率。这是一笔合算的买卖。不止于此,为了最小化这个成本,可以尝试只键入软件名的前几个字母,然后按Tab键,比如:
jiawzhang@company-ws:~$ fire[TAB]
终端系统会自动补全 firefox,所以理论上我们只需要零碎的记忆住常用软件的前几个字母,无需任何图标,只需要一个终端,你就可以启动任何程序。有人会抱怨自己的记忆力不佳,没办法记住系统里这么多软件名,但实际上开发者系统比你自己更了解这样一个事实:大脑是一个用进废退的器官,你越多敲击常用的软件名,你就越没有可能忘记它们,至于不常用的软件,用的时候再找也好过每次要在一堆图标里找,还有一些软件,这辈子你也不会再用,更没必要去记住它们。
重要的文档,文件夹也是如此,随手用鼠标往桌面上一扔,不会有什么好结果,所以 Linux 系统有一个 home 目录的概念,每次你打开终端,当前目录总是你的 home 目录,你可以把重要的文档寄存在这里的某个子目录下,这样只需要打开终端,你就可以访问这些文档。Linux 还为 home 目录单独分配了一个叫做 ~ 的别名,无论你当前在哪个目录只需要:
jiawzhang@home-pc:~/Dropbox/backup/tools/YaHei$ cd ~
就可以返回 home 目录,一般来说,和你个人账户相关的所有重要软件,文档,配置都会寄存在这里,它太重要了,以至于你还应该把它挂载在单独的分区中,我们下节再做更详细的讨论。
现在,你可以从终端中启动任何程序,访问任何重要的文档,桌面上的图标已经没有任何意义,不妨把他们全部删除。如果参照本文最开始的截图,你还可以看到 Ubuntu Unity 风格的桌面,即在桌面左侧自上而下有一个工具条,上面罗列着常用的应用程序,它们的存在和桌面图标一样没有必要,况且还占用了宝贵的屏幕空间,可以在 System Settings -> Appearance -> Behavior 中设置为自动隐藏。
最后,我们得到了这样一个干净,整洁,终端常驻的桌面,它极致简约而又极致强大,在那个黝黑背景的终端上,闪烁着浅灰色的光标,安静而神秘,我们的先辈就是从这里开始创造了无数的奇迹,而如今这里又是充满了无限可能的地方,等待我们去发现。
未完待续…
(责任编辑:IT)
缘起 我大概是从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 Linux -> 开发人员,科学家,工程师的开发者系统 Windows -> 老百姓的普罗大众系统 Mac -> 上述两者之间,部分不明真相的群众,以及高端装系统 每个操作系统都有自己的用户,促成他们选择使用某一个系统的因素有很多,最大的原因是拒绝改变,这也成就了 Windows 平台的繁荣,但是这里不含贬义,拒绝改变的背后是因为普罗大众的生活重心并不全是计算机,他们更愿意把时间花在自己关心的领域,计算机只要够用,适用就可以接受。这一条不仅在非 IT 领域成立,即便在 IT 领域,如果你不是一线的开发人员,同样成立。撇开拒绝改变以外,每个能够存活到今天的系统本身都已经没有优劣的区分,剩下的就是理念,哲学,用途的区别,Windows, Mac, Linux 都有各自旗帜鲜明的个性,在那些不同的旗帜背后,都有坚定的拥护者,他们在自己的立场都做出了正确的选择。因此,不同阵营的旗手互相之间做无谓的争论幷无太多意义。但是如果你是一个暂时还没有使用 Ubuntu/Linux 的开发者,程序员,希望这个系列文章可以改变你的看法。 开发者的操作系统 Linux 是从极客的学生宿舍里走出来的操作系统,更是通过互联网完成协同开发的典范,汇集了全球极客的智慧。因此它也是一个开发者相当友好的操作系统,它的所有设计理念和哲学都是假定开发者作为最终用户的。从其它操作系统迁徙到 Linux 的时候一定要牢记这点,否则就无法理解很多事情。从这个角度说,很多争执哪个操作系统更优秀的前提就已经错了,比尔盖茨在1983年就告诉所有人他的梦想是人人有电脑可用。所以 Windows 注定是一个普罗大众为最终用户的系统,两个系统有各自的目标用户,那还吵什么呢?许多耸人听闻的报刊,杂志,博文时不时的就列出一些统计数据,然后吼一嗓子:“Linux 桌面已死!”,真心混淆视听。不过在一个商业化气氛浓厚的社会,即便是开发人员,我们也已经太长时间被 Windows 这样假定普罗大众为最终用户的系统惯坏了。我们习惯下载安装二进制文件而不是从源码开始编译,我们习惯使用鼠标而不是键盘操作电脑,我们认为没有图形界面不可想象,我们面对终端束手无策,并且经常分不清出方便和高效之间的差别。所以如果你从来没有认真使用过 Linux 千万别先忙着下结论,否则未免会有失偏颇。安装这个系统,使用这个系统,解决你的问题,然后再看是不是对你的胃口。理论上说,使用一个为开发者准备的操作系统不会有太多的为难,如果你感觉困难,只有两个原因,你拒绝改变或者你真心对开发这个事情没有兴趣,反之,适应了这个环境以后会感觉舒适,安逸。 为了让你或者他们自己更好的使用 Linux ,我们的前人做了很多事情。 他们首先开源了代码 这是一个吓坏了封闭和专利系统制作者的决定。因为那些闭源厂商依靠贩卖专利和二进制文件获利,公布自己的代码,并且连带修改和发行权利也一并不要了,这在闭源厂商是不能想象的。相反在开源系统中,开发者求知的愿望被充分尊重了,他们可以任意阅读自己感兴趣的代码,获取知识,修补臭虫,甚至参与开源项目,结识更多其它有求知欲的极客,从而提高自己的开发水平。在闭源系统中,开发者只能依赖厂商提供的 API,文档以及定期的补丁包–这些同样是普罗大众不那么关心但是开发者所不能接受的。因此使用开源系统无疑可以增强自己的技能水准,并且在使用系统的同时有机会改进和修补自己的系统。 他们更懂开发者 从诞生之初起,这就是一个极客玩出来的操作系统。与其说他们是在开发操作系统不如说他们是在满足开发者自己的需求,这就是著名的“吃狗食“理论,需要一个开发者系统:1. 动手做一个 -> 2. 生存在其中 -> 3. 体会优劣 -> 4. 修补不足,增进优势使它更适合开发 -> 循环至 1. 生存在其中。所以这个系统会越来越朝着它的方向发展,那就取悦开发者自己。经过大约二十多年的发展,今天的开发者系统已经积累了无数提升开发生产力的哲学,理念和工具软件。几乎你能想到的和未能想到的一切和开发相关的需求都已经在开发者系统上被满足了,你需要做的就是学习,练习和使用。即便这仍然不能满足你,开发者系统上很容易对已有的存在做一个分支然后进行自我满足的工作。某些时候没人比你自己更懂自己,更多的时候他们比你更懂你自己,使用开发者系统的开发者时常就会想到要是有这么一个功能就好了,然后 Google 一下相关资料,接着自言自语 “哦。。。果然已经有了”。物以类聚,人以群分,如果我们的行为方式和思维模式相近,那么先前的开发者早就遇到过相同的困扰并且动手解决了问题。你仍然只需要学习,练习和使用,仅此而已。他们懂得键盘比起鼠标在大多数开发场合更高效,他们懂得软件界面首先需要的是命令行,其次才是图形化界面,他们懂得命令优于导航的哲学,你需要编辑器/编译器,他们提供了伟大的 Vim,Emacs/gcc, g++,你需要好用的脚本语言,他们内置了Bash Shell/Python,你需要更高效的操作电脑,他们提供了无数的实用命令行程序,幷为几乎每一个程序配置了无数参数来满足你的需要,一旦我们理解他们这么做的初衷,剩下的还是学习,练习和使用。 我们更懂自己吗? 不幸的是很多人接受了馈赠却开始抱怨:“这么多命令,参数怎么记得住?为什么没有像样的 GUI 版本,为什么没有像 VB 那样可拖拉的 IDE? 我需要一个开箱即用的系统,不折腾!”。实际上我们幷没有开发这些程序,其实我们没有资格抱怨什么,如果我们需要的幷不存在于开发者系统,那么停止抱怨,仔细思考,更大的可能是:不存在意味着不需要,意味着存在会拖累生产力,违背开发者系统的哲学。很多的误解来自长期使用普罗大众系统,我们是被惯坏的一代,普罗大众系统假定用户依靠鼠标和直觉去操作系统,他们依靠尽量压缩用户的学习成本去博得方便使用的好名声,很多系统在这方面确实做得很好,很多人不需要阅读使用手册就可以使用软件和操作系统。这同样也是普罗大众系统经过几十年“吃狗食”得到的回报。但是仔细想想这是开发者需要的系统吗?普罗大众和开发者站在两个各自的立场,有各自的需求。如果开发者觉得普罗大众系统很好用,这现象本身就很值得探讨,肯定有地方出错了不是吗? 何况这是一个开发者友好的系统,那么为什么还是有许多开发者并不适应?其实我们忘记了一个最简单的道理,技能是需要习得的。开发者不能按普罗大众的要求来要求自己,方便和高效其实并不是等价的,普罗大众系统的方便是依靠牺牲效率和可定制性来达成的,例如鼠标点击运行程序看起来比输入命令启动程序方便很多,但是如果你需要从上百个图标里寻找那个程序会怎么样?你又能不能启动程序的时候要求启动后最大化窗口?所以开发者系统开始不断增加命令,配置,选项和各类约定来追求效率和可定制性。而一旦我们认为效率和可定制性更重要的时候,记忆的负担,学习的成本就出现了,我们需要去学习记忆,熟练运用那些命令配置,了解约定,遵守约定。开发者需要不断的学习技能以追求更高效的使用开发者系统,这才是开发者和普罗大众的本质区别,这个世界上幷没有那么多好处全你占的事情,提升效率的前提便是增加学习成本,容忍一定程度的不那么方便。不想折腾又想高效的使用开发者系统就和没好好学过外语又想有流利的口语一样荒诞,我们所有的技能,除了本能以外,譬如:心算,语言,记忆力,专业技能都需要反复折腾才能获得,使用开发者系统同样如此。说不折腾的人,要么是普罗大众,要么被普罗大众系统搞傻了,要么就是身心老了,折腾不动了。了解这个事实以后,读者自行权衡,然后我们才能说接下来的事情。 Linux 哲学 为了高效的使用开发者系统,Linux 哲学中最重要的一点就是命令优于导航。 导航操作是指人类通过视觉定位,进而层层递进的操作方式,通常由鼠标完成。例如浏览网页,点击链接进而继续浏览点击。对于普罗大众有以下几个情形,我们会使用导航方式: 不知道自己想让计算机做什么或者计算机可以告诉我们什么,通过随意浏览方式挖掘我们可能可以让计算机做什么或者告诉我什么。最常见的案例就是在没有使用手册的情况下,所以点击菜单,看看某个软件都有哪些功能,或者是去门户网站,微博上刷刷有什么自己感兴趣的内容。 我知道要计算机做什么,但是我需要先在一堆菜单,图标里找到我需要的按钮,在告诉计算机去做之前必须例行的完成数次导航操作,例如我想卸载某个游戏,就需要从点击菜单栏开始寻找到这个游戏的程序组,点击卸载图标。又例如我需要安装 Firefox,那我得先设法找到 Firefox 的官网,从其中找到下载链接,选择相适应的匹配版本,然后点击下载,等待完成后,去安装文件所在的文件夹,双击安装,期间还需要确认无数条款,选择安装目录,删减可选插件,最后确认安装。 命令操作则无需付出视觉定位的成本,如果你会盲打,基本上你可以直接使用快捷键或者敲击命令行对计算机进行操作,这些操作通常只依赖于键盘。由于标准键盘上有至少100个以上的按键,可以组合出无数的操作手法以应对各种复杂的情况,所以基本上键盘是最重要和最强大的计算机输入设备。很可惜普罗大众很多时候没有意识到这一点,只是在码字的时候才敲击键盘,却不善于真正使用键盘操控计算机的其它功能。我们会使用命令方式: 在不知道计算机能做什么的时候,一样用命令方式进行浏览,除非某些 GUI 软件不提供快捷键功能。 在知道要计算做什么的时候直接给出相应的命令操控电脑,比如我需要安装 Firefox,基本上在 Ubuntu 里,只需要键入: sudo apt-get install firefox 那么为什么说命令优于导航?几点原因: 导航操作从生理上增加了使用电脑的额外负担 仔细回顾一个最基本的问题:我们是如何使用一台计算机的?通过输入设备传达指令,计算机做出处理幷通过输出设备返回结果,这就是最基本的使用流程。无论是个人电脑,智能手机,平板都是这个流程。哪个系统更方便输入,哪个系统就更方便使用,普罗大众系统很清楚这一个基本准则,所以他们最小化了用户输入指令的成本,开发出了鼠标,触摸屏,甚至语音识辨,声控系统,光感系统。在公众视野制造了一波又一波的流行热。但是追求潮流并不解决效率的问题,如前文所述,方便幷不意味着高效。尤其对于需要大量输入的开发者系统而言更是如此。基本的鼠标操作是基于图形界面也就是导航的,我们通过鼠标传达指令,首先需要通过眼睛定位图形界面上操作对象的位置例如:一个菜单,一个按钮,其次移动鼠标定位位置,完成点击,并且往往需要重复一系列这个过程才能完成一个实际上有意义的操作,如果同时还需要大量的文本处理,那么双手还需要在鼠标和键盘之间做大量费时的切换工作。的确,每一次定位,点击,切换的代价幷没有那么的大,但是累积到一定程度,或者当你需要批处理一堆类似的任务,就相当的折磨人了。是不是时常感觉到右手肩关节有酸疼感?直接病因就是长期依赖右手握持鼠标,右肩无法呈自然下垂姿态。这个病俗称鼠标手,学名肩周琰。可见导航操作给身体带来了多大的伤害。命令操作的输入代价会大一些,但是让双手全程固定在了键盘上,对于文字输入者避免了切换鼠标的时间损耗,和注意力的被迫转移。命令本身,通过组合,也是对计算机系统最直接的指令下达,很多时候反而可以避免大量的导航工作。如前所述的 Firefox 安装。 导航操作容易产生视觉上的迷失 前面我们提到过,在一个有几十个图标的桌面上,要定位到某个想要启动的程序,或者在一个多级菜单里寻找某个软件功能是费力费眼的。如果你了解等价的命令,直接键入程序名然后启动应用程序会快上很多倍。也就是说如果你知道你想干什么,使用键盘键入命令或者执行搜索,效果会比肉眼巡视来得高效很多。搜索这个概念在开发者系统的很多地方都贯穿得相当彻底,find/which/whereis/grep/vim/vimperator 很多命令都是基于搜索优于导航这一理念的。时刻养成搜索的习惯能帮助我们更高效的使用开发者系统。
命令操作更容易被开发,组合使用,以及更容易地进行参数调整,脚本化批量处理 开发基于导航的 GUI 成本巨大而且容易出错,命令行则相反。这就让开发者在最初可以只集中精力处理命令本身需要完成的核心功能,而不是花费大量的时间在 GUI 的外壳上。通过几个小程序组合出更强悍的功能,通过调整不同的参数或者使用文本配置文件的方式进行随意的软件定制,甚至批处理一堆需要重复运行的计算机操作,这在命令行都是很自然的事情,GUI 想达成同样的目标就相当费力了。 便于远程管理计算机 在桌面上强调使用命令,使得我们顺便捡到了一份红利,因为我们惯用命令,可以摆脱 GUI 的依赖,我们就能更好的登录到远程的机器上进行各种操作,因为使用命令的传输代价远远小于图形界面的远程传输,时至今日,ssh 远程登入仍然是 Linux 系统管理员远程管理电脑的标准方式。所有你在本地桌面上操练掌握的命令,都可以在远程服务器上别无二致的使用,不至于在只配备终端没有GUI的服务器上会感觉手足无措。 通过命令优于导航这一条公理,我们演化出了以下理念,请在使用开发者系统的时候时刻牢记: 命令行优于图形界面 键盘优于鼠标 搜索优于导航 最后,使用开发者系统的前提是认同 Linux 哲学,理解学习,记忆的代价是用来换取高效使用开发者系统而产生的。你越多的付出脑力成本使用这个系统,就会越高效安逸的生存在这个系统中,也就越认同她的哲学,使得你付出更多的脑力成本,继而进入同时锻炼脑力和提高生产力的良性循环中。这种变化甚至可以影响到你做任何事情的态度:收起懒散的心理和涣散的心智,使用脑力来提升效率,最终让你成为一个务实,智慧和高效的人。 选择 Ubuntu 对于准备迁徙到 Linux 的用户来说,另一个头疼的问题就是选择发行版。所谓发行版是指在同一个 Linux Kernal 上由不同厂商,社区定制包装了不同桌面管理系统和附带了常用软件的 Linux 发行版本,通俗来说就是可以交付给用户安装的 Linux 系统。常见的发行版有 Ubuntu, Mint,RedHat, Fedora 等等,总数不下几百种。面对数量庞大的发行版,新人总是很难做出选择。好在每个发行版本都比较有针对性,有些是针对桌面应用,有些是针对服务器系统,还有一些比较适合初级用户,或者资深极客,大致了解各自的特性以及用户自己的需求也不难做出选择,另外实际上每种发行版之间的区别幷没有大到完全对立的地步,即便随便选择一种用起来上手,大多数的知识还是可以延续和继承在另一种发行版上的。只要不是三天两头换装各种发行版,也不算浪费时间和精力。
选择 Ubuntu 的理由: 1. 简单,易用,美观,默认软件齐全,适合入门 Ubuntu 在发行之初就以打造一个适合上手,容易入门的 Linux 系统而著称,吸引了大量来自 Windows 的用户。它的发行方式众多,包括 CD / DVD / U盘 等传播方式,用户可以自行下载 ISO 文件刻盘或者制作启动U盘,甚至可以免费向 Ubuntu 的母公司 Canonical 索取邮寄光盘。它的体验安装方式也很丰富,包括: a) 试用体验:无论用户的电脑是什么系统,都可以在启动的时候选择从光盘或者U盘启动 Ubuntu 进行试用,不破坏原有数据。再次从硬盘启动后仍旧进入用户的原有系统,很方便那些想尝鲜的用户。很多时候,在原有系统无法启动的情况下,甚至可以利用 Ubuntu 的这个特性来进行硬盘修复,挽救数据的工作。 b) Wubi安装: 直接将 Ubuntu 作为 Windows 系统的一个应用程序安装,再次启动后出现双启动菜单,避免了破坏原有 Windows 分区的风险,如果对 Ubuntu 不满意,可以直接在 Windows 中像删除任意一个应用软件那样删除 Ubuntu,完全没有损害系统和数据的担心。如果使用一段时间以后决定将 Wubi 系统转移到物理分区也相当简单,虽然没有官方的方法,网络上有现成的脚本可以在几分钟内完成这个工作。 c) 虚拟机安装:这种方式则允许你在启动 Windows 的同时,试用虚拟机里的 Ubuntu 系统。暂时无法离开 Windows 环境生存的用户可以通过这种方式进行过度。 d) 硬盘安装:得益于良好的硬件兼容性测试和完备的驱动兼容,安装 Ubuntu 系统甚至比安装 Windows 的过程更流畅和简单,几次点击和设置以后就可以顺利的完成。天然先进的 Linux 内核架构也使得启动过程异常的迅速,几秒之内完成开机。硬盘安装使得操作系统在本机可以获得最高的运行效率,充分发挥硬件机能,也迫使用户在心理和生理上彻底隔绝对原有系统的依赖,更有利于提高自己在 Ubuntu 系统上的生存能力。在物理分区上安装 Ubuntu 是普罗大众彻底告别专利世界,走向自由世界,完成自我救赎的重要一步,笔者在这里呼吁更多的读者选择这种安装方式,开启心智,提升生产力。 综上所述,Ubuntu 在降低 Linux 的学习曲线上做了大量的工作,也因此一度成为最流行的 Linux 发行版。 2. 先进方便的软件包管理 apt-get 在 Linux 下安装软件有两种方式:1. 从源代码开始编译安装 2. 选择发行版自带的软件包管理系统。前者需要一定的开发知识,了解一些编译器,makefile的基本工作原理,如果安装过程中出现问题,要有一定解决问题的能力,能够根据错误信息做相应的调整,对于新手来说有不小的难度。后者则是由厂商直接提供经过测试的,和当前系统匹配的二进制软件。官方和第三方厂商都会提供相应的软件源,只要连接互联网,你就可以通过命令的方式下载需要的软件,例如在终端运行: sudo apt-get install firefox 就下载了火狐浏览器,如果连接国外的网速比较慢,还可以通过选择国内的镜像网站加速下载。有人会说敲击命令下载软件有多麻烦?那么参见上一篇 选择Linux。一般来说,官方源里的软件很少有兼容性问题,因为他们都是经过测试的。如果对某个软件不满意你只需要: sudo apt-get purge firefox 经过一段时间以后,系统还会定期提示哪些软件有新版本,你同样只需要运行一个命令完成所有软件的升级: sudo apt-get upgrade 回想 Windows 系统,你需要在互联网上满世界找下载链接,还可能携带病毒,相当不方便,反倒是360软件管家提供了类似的功能。 大多数的发行版都有自己的软件包管理器,例如 redhat 系列的 rpm, Debian/Ubuntu 系列的 deb,哪个管理器可以更方便的使用,更少存在安装卸载问题,更好的理清楚软件之间的依赖关系都是我们选择发行版的重要依据, Ubuntu在这方面天然强大。 3. 强大的文档,社区支持 使用开源软件的另一个问题在于虽然用户有免费使用系统,修改系统,甚至再发行的权利,但是毕竟没有为系统支付过任何费用,因此除非你主动付费否则无法在出现状况的时候要求厂商提供技术支持。对于学习型人才不算什么太大的问题,对于迁徙到这个系统的新人就又束手无策了。正版的 Windows 用户应该是享有这样的权利,Mac 电脑同样可以通过苹果店一对一的专家技术服务解决问题或者购买相关技术支持服务。如果这个时候没有一个强大而且团结的社区组织,一群热心解决问题的技术专家,新人仍然无法生存在这个系统中。好在作为最流行的 Linux 发行版,Ubuntu 在这方面依然很强大。大多数的问题可以通过 Ubuntu官方 和 Ubuntu中文社区 解决。 生存下来 从一个世界进入到另一个世界后的第一要务就是生存下去,许多人因为无法适应和理解新世界的生存法则,选择了退回到旧世界。但是在此之前,我们鼓励进入新世界的用户扔掉旧有的世界观,用开放包容和探索的态度去适应新世界,用尽可能短的时间生存下来,适应这个世界,改造这个世界。 首先看看新世界为我们提供了什么? 1. gnome-terminal 我们在前面说过 Linux 哲学中最重要的一条就是:命令优于导航,因此一个好用的终端系统尤为重要,终端系统是用户输入命令行,查看输出结果的媒介,一个合格的 Linux 使用者会花费至少 20% 的时间在终端中,如果你是一个开发者,这个比例会更高。
2. 火狐浏览器 浏览器的重要性在互联网时代不言而喻,由于 Google Chrome 的强力竞争,火狐浏览器市场占有率最近有所减缓,但是笔者依然是坚定的用户,火狐浏览器的插件生态链时至今日仍然是最强大的,我会在后面的博客系列中做单独介绍。很多用户幷不觉得插件有多重要,坚持 Chrome 的渲染速度秒杀一切,这个观念其实很有问题,硬件机能发展到现在,在同等条件下软件优化带来的效果提升非常有限,反而是人类操作手法的差别才是成为速度快慢的关键,一次缓慢的点击,或者在海量信息前的视觉迷失往往拖累了使用计算机的效率,成为瓶颈,改善操作手法,训练我们自己才是提高速度,提高效率的关键。好的插件就是为了这个目的而存在的。
3. LibreOffice LibreOffice 源自于著名的 OpenOffice 办公软件,用以替代 Windows 下的 MS Office。我自己虽然并不常用(本人是坚定的文本拥护者,见 极客的博客 一文)但是针对 Office 用户仍然值得推荐。Libre Wirter, Libre Calc, Libre Impress 分别对应 MS Word, MS Excel,MS PowerPoint。
4. iBus 输入法架构 和 Ubuntu 本尊最匹配,最兼容的输入法架构,可以无限扩展各类输入法。笔者目前使用的是系统自带的 iBus-Pinyin,并对词库做了扩展,今后做具体介绍。其它的输入法例如 fcitx 或多或少有一些兼容问题。 5. Rhythmbox 音乐播放器 作为音乐播放器没有皮肤,没有华丽丽的桌面歌词功能,提供本地音乐,网络电台,在线播客等功能,中规中矩,简单实用。
6. Totem Movie Player 系统自带的视频播放软件,由于许多视频解压缩算法首先是在 Linux 平台发明的,所以在视频格式的兼容性问题上,Linux 平台反而很少出现没有办法播放视频的状况,除非是微软的私有格式。
7. Ubuntu 软件中心 统一管理安装卸载,软件下载的软件中心,任何对软件的操作都可以在这里进行。笔者实际很少用到,大多数时候还是利用命令 apt-get 进行查询,安装,卸载工作。为什么使用命令,前文有详解:
至此,系统默认自带的软件已经为我们提供了终端,浏览器,办公套件,输入法,音乐,视频播放和统一的软件中心,其它的必备软件不再一一列举,基本上用户总是可以找到和 Windows 相对应的软件。从普罗大众的角度来说,即使把这个状态的 Ubuntu 当作 Windows 来使用,一样可以胜任等价的工作,并且没有花费一分钱的专利费用。更由于对病毒木马的天然免疫,无需安装价格不菲的杀毒软件和声誉不佳的360系列软件。 Ubuntu桌面的悬案:迅雷,网银,IMs,游戏,行业软件 自由新世界并不是完美世界。普罗大众在迁徙过程中集中抱怨的稀缺软件有:迅雷,网银,国内流行的 IMs(MSN,QQ),游戏,行业领域的特殊商业软件。道理上讲,这个算不上 Ubuntu 的问题,商业公司在利益驱动下,对于非主流的操作系统总是采取选择性忽略,疏于开发 Linux 平台的兼容版本。一些 Linux 极端主义者对此表示:不提供 Linux 版本的软件都是没有用的软件。笔者什么都不表示,默默的装上这个软件: sudo apt-get install virtualbox sudo apt-get install virtualbox-guest-additions sudo apt-get install virtualbox-guest-additions-iso
也有同学喜欢用 Wine 的方式来运行 Windows 下的软件,我的意见是:对于大多数软件运行在虚拟机里是最省力的做法,Wine 实在是考验人品的利器,除非万不得已,不要轻易使用,笔者只有一个 PDF 软件使用了 Wine 这种方式,以后再做具体介绍。其它譬如:迅雷,MSN,QQ,行业软件,部分游戏都可以在虚拟机里运行。关于网银,支付宝有直接支持火狐浏览器,大多数带有U盘做电子证书的网上银行譬如招行也都可以毫无压力的运行在虚拟机里。但是需要为了使 Virtualbox 辨认出物理 USB 外设做如下设置: 对于 Ubuntu 12.04 系统安装(10.04系统可以省略): sudo apt-get install gnome-system-tools 在 Ubuntu 已安装的应用程序中找到:Users And Groups,点击 Manage Groups,双击“vboxusers”后选择当前用户名,点击确认。重启计算机后运行 Virtualbox 启动 Windows,在底部隐藏菜单内选择“Devices->USB Devices->对应的 USB 外设” 即可。 高质量的生存,从桌面图标说起 写到这里,我们已经具备了基本的生存条件,千万不要高兴太早,失去前进的动力,因为我们至多还是“使用 Linux 的 Windows 用户”,我们仍然基于鼠标,图形化界面和导航这些低效的外设,理念来使用高效的开发者系统。这一小节笔者提纲挈领的分享一下如何高质量地生存在开发者系统。在今后的博文系列中则会结合具体的软件分享更多的高效使用开发者系统的经验。 没有图标的桌面 — 做正确的事情,幷把它做到极致 从这篇博客切换到你当前的桌面,数一数桌面上有多少个可以点击的图标。十个?二十个?或者更多?我们往往把常见的事情认为理所当然,没有人去质疑这个事情,甚至我自己在几年前也把铺满图标的桌面作为一种充实的象征,普罗大众系统也很鼓励创建桌面图标,几乎每次安装软件都会有新图标在桌面上(Ubuntu系统不会),除此以外,我们也常常按直觉把重要的东西放在桌面上。从短视的角度来看,确实很方便,但是日积月累之后,谁都会感觉在一堆红红绿绿的图标里找到自己想要的东西有多困难。造成这类视觉迷失痛苦体验的根源仍然是贪图方便,依赖视觉导航,没有花费脑力。 一来我们是被普罗大众系统的设计误导了,二来我们缺少真正的思考去理解如何处理人和计算机的关系,从而达成高效的目标。 运用心智并且乐于花费脑力的人会怎么解决这个问题? 参考我们之前的理念:“命令优于导航”,与其在一堆桌面图标里找自己需要的东西,为什么不直接告诉计算机自己要什么呢?在 Ubuntu 里通过快捷键:ctrl+alt+T开启终端,然后输入自己想要打开的软件比如: jiawzhang@company-ws:~$ firefox 键入firefox,然后浏览器就打开了。我们付出了一些记忆软件名称和敲击键盘的成本,却避免了视觉搜索和导航操作的低效率。这是一笔合算的买卖。不止于此,为了最小化这个成本,可以尝试只键入软件名的前几个字母,然后按Tab键,比如: jiawzhang@company-ws:~$ fire[TAB] 终端系统会自动补全 firefox,所以理论上我们只需要零碎的记忆住常用软件的前几个字母,无需任何图标,只需要一个终端,你就可以启动任何程序。有人会抱怨自己的记忆力不佳,没办法记住系统里这么多软件名,但实际上开发者系统比你自己更了解这样一个事实:大脑是一个用进废退的器官,你越多敲击常用的软件名,你就越没有可能忘记它们,至于不常用的软件,用的时候再找也好过每次要在一堆图标里找,还有一些软件,这辈子你也不会再用,更没必要去记住它们。 重要的文档,文件夹也是如此,随手用鼠标往桌面上一扔,不会有什么好结果,所以 Linux 系统有一个 home 目录的概念,每次你打开终端,当前目录总是你的 home 目录,你可以把重要的文档寄存在这里的某个子目录下,这样只需要打开终端,你就可以访问这些文档。Linux 还为 home 目录单独分配了一个叫做 ~ 的别名,无论你当前在哪个目录只需要: jiawzhang@home-pc:~/Dropbox/backup/tools/YaHei$ cd ~ 就可以返回 home 目录,一般来说,和你个人账户相关的所有重要软件,文档,配置都会寄存在这里,它太重要了,以至于你还应该把它挂载在单独的分区中,我们下节再做更详细的讨论。 现在,你可以从终端中启动任何程序,访问任何重要的文档,桌面上的图标已经没有任何意义,不妨把他们全部删除。如果参照本文最开始的截图,你还可以看到 Ubuntu Unity 风格的桌面,即在桌面左侧自上而下有一个工具条,上面罗列着常用的应用程序,它们的存在和桌面图标一样没有必要,况且还占用了宝贵的屏幕空间,可以在 System Settings -> Appearance -> Behavior 中设置为自动隐藏。 最后,我们得到了这样一个干净,整洁,终端常驻的桌面,它极致简约而又极致强大,在那个黝黑背景的终端上,闪烁着浅灰色的光标,安静而神秘,我们的先辈就是从这里开始创造了无数的奇迹,而如今这里又是充满了无限可能的地方,等待我们去发现。 未完待续… (责任编辑:IT) |