缘起

这两天我的 Arch Linux 系统碰到了一个十分诡异的问题,就是电脑无法待机、关机,也无法重启,更令人拍案叫绝的是,电脑在关机重启的过程中,当硬盘停止转动后,整个系统就 Hang 住了,而屏幕终端还在,只是不再响应任何请求。解决这个问题的唯一办法就是强制关机,但是这种方法实在有失水准,有伤大雅。在尝试了增删内核模块、更新驱动的等多种方法后,我终于在 Arch Linux BBS 上找到了解决方案

Google 了几个来回,再看一些关于操作系统 IT 历史的八卦,半个下午就耗掉了,从某种意义上来说,这是在浪费时间。而事实上,如果不算辞掉工作更换电脑被迫地系统调优的那次,我已经至少半年没有进行过 OS 和软件层面的 Tweak 工作了。这其中的缘由,大概是由于电脑折腾久了,就会折腾出一套适合自己口味的解决方案,这套解决方案,就是接下来一系列文章的主题——打造高效的工作环境。

打造高效的工作环境,Wow,多么宏大的一个主题啊,不过我见识有限,就这个话题,我只能谈谈电脑相关的知识,和我个人的理解,我不会讲到:

  • 桌上要放几盆草
  • 要不要听轻音乐
  • 开放式的办公空间

等与电脑毫不相关的话题。除此之外,还有一个前提,那就是我的文章主要针对 Linux 和 Mac 用户,对 Windows 用户的参考价值不大。

Why Not Windows?Why Linux?Why Mac?

我 100% 地相信,在中国,100% 的人是通过 Windows 系统进入电脑的世界的,我也是。但是我也 100% 地相信,如果你是一个程序员 Geek,用 Linux 或者 Mac,会让你的生活变得更美好;如果你只是一个普通的电脑使用者,用 Mac 或者 Linux,至少不会让你的生活变得更差。

说到这里,很多人会跳出来争辩,多数论调是:

  • Linux 的驱动如何如何不好
  • Linux 的桌面如何如何烂
  • Linux 下的软件如何如何不完善
  • Linux 下的游戏如何如何匮乏

我的回应是,对于一件事情,对于一件事情,我认为,人的认知有四种状态,分别是:

  • You know you know.
  • You Know you don't know.
  • You don't know you know.
  • You don't know you don't know.

"You know you know"说的是类似于 1+1=2 这类的常识,首先是你知道 "1+1=2" 这个知识点,进一步讲,你知道 "1+1=2" 这个知识点是一个认知事实,而你自己对于这个认知事实也是知晓的,所以归结下来是 "You know you know",说的通俗点,就是“你是知道‘你本人是大学文化,所以会算 1+1=2' 这个事实的”。

"You know you don't know"说的是我这样的 Coder,知道自己水平不够,功力尚浅,不懂得 AI,不懂得数据库,不会算法,但好在还有自知之明,所为“吾生而有涯,而知也无涯”, "You know you don't know",学吧,学到白头学到老。

"You don't know you know"的情况很少见,这种情况常见于某些天赋异禀而不自知的人,就好比练成了九阳神功的张无忌,明明已经武功盖世,却不自知,见到阿猫阿狗也会心底害怕。

"You don't know you don't know",这句话用来形容那些狂妄自大目中无人之辈真是再合适不过。不过对于常人,我们能否从这句话中得到一些启示呢?当然可以。*事实上,小到一个生活常识,大到一门学科领域,如果你对它不甚了解,甚至完全不知,那么这种 "You don't know" 有很大的概率是 "You don't know you don't know",而不是 "You know you don't know"。仔细想想,这句话揭露了一个可怕的事实,那就是,随着知识爆炸的进行,人类在自己探索创建的辉煌文明成果面前,变得越来越无知;另一方面,人类的的知识再以指数级别的速度增长,但是培养人才的方式却没有本质的进步,这也就意味着现代人才的培养会越来越难1。*

扯远了,说了这么多,就一个意思,在你对一个领域、一个知识有充分的调研学习之前,审行慎言。这也是“为什么上帝给了我们两只耳朵却只给了一张嘴巴2”。我个人曾经有过 3 年的用 Linux 做主力桌面的经验,其中有 50% 的时间是整个电脑上只有一个 Linux 系统,其余双系统并用的时间,98% 的时间也是在 Linux 上,所以对于 Linux 桌面的情况,我还算有些发言权:

  • Linux 的驱动确实是一个软肋,不过情况较 2000 年左右 Redhat 9.0 横行的年代已经改善了很多,在这方面,Ubuntu 绝对是一个集大成者,现在已经很少找到装上 Ubuntu 驱动不能用的电脑了,其余的发行版,经过简单配置,也完全可以搞定驱动问题。
  • Linux 的桌面已经非常完善了,Linux 并不是只有一个黑黑的令人敬畏的终端。KDE 4.8 的设计和整合已经非常完美,各种软件的集成性比 Mac 有过之而无不及。
  • Linux 下的软件如果不比 Windows 多,至少不会比 Windows 少。很多优秀的软件诸如 Amarok、Digikam、Emacs 等等,都是以 Linux 为首要支持平台的,甚至有的软件只支持 Linux,很多工业级别的软件,诸如 Hadoop、MySQL、Apache 等等,无一不是以 Linux 为最佳运行平台。
  • Linux下的游戏比较匮乏,这点是不争的事实。

So,说了这么多,信也好,不信也罢,接下来谈谈:

Why Not Windows?

作为一个 Coder,每次用 Windows,我都有一种想要砸掉电脑的冲动。所以毕业设计时,在 Windows 上运行 VMware 里面跑着 Mac OS X,启动 Xcode 写 Win32 Style风格的程序,那可真是痛不欲生、终身难忘的事前黑暗时代。我搞了首打油诗:

  • 文件系统多盘拼,文件命名大小混 – Windows 是多根文件系统,每个根称作一个盘,而 *nix 的系统是单根文件系统,新来磁盘只需要在文件系统树上新增个挂载点即可; Windows 文件的命名和组织从来没有任何规律,而 *nix 的文件系统则有一个统一的 FHS 标准,并且,在 Linux 下,几乎所有的文件名都是小写字母,并且不含有空格,这对脚本批处理是一个大大的方便之处。
  • 权限控制小烦躁,命令终端很废柴 – Windows 下的文件权限很困惑,我从来没搞明白,好像获得一个文件的某种特殊权限,还要去点击属性窗口;用户权限就更加混乱了,一个 Administrator,后来 Vista 和7又加入了貌似“家长模式”等等,太乱了;*nix下的权限控制则非常简单明了,三条命令如 chmodchgrpsudo 就可以全部搞清楚; Windows 下的传统 cmd.exe 简直废柴的不能再废柴了,谁能告诉我为什么 cmd 窗口无法最大化?真不明白这到底是哪门子的设计。
  • 弹出窗口满天飞,后台进程到处藏 – 在 Windows 下还有一点非常让我难受,就是无论是搜狗输入法、迅雷下载,还是 QQ、360 等,这些软件无一例外,都有一个爱好,就是首先把自己加入系统的启动项,然后呢,在你写代码看片练葵花宝典乾坤大挪移到了关口的时刻,“啪!”的一下给你整几个弹出窗口,放几条八卦新闻……还有那废柴的任务管理器,从来都是杀不掉进程,自己倒先莫名其妙地卡死了,哪里像 *nix 上的 killall -9 ,手起刀落,快刀展乱麻,痛快痛快。
  • 一家独大搞垄断,格式兼容已败北 – 在格式兼容方面,从来都是 *nix 下的软件想尽办法兼容 Windows 的软件,但是 Windows 一家独大,对于兼容别的系统的软件,从来不屑一顾,举例?OpenOffice,ntfs-3g,数不胜数啊。
  • 病毒木马禁不止,杀毒软件赚钱忙 – 每次我去帮别人修理 Windows 系统,别人的第一想法都是让我先替他们杀杀毒,可见,病毒和 Windows 故障一样,在人们的心中难解难分。
  • 硬盘整理除碎片,系统臃肿找管家 – Windows 系统有一个特点,那就是任何系统装好后,都需要“深度优化”,然后才能用得比较舒畅,其中的优化包括但不限于硬盘碎片整理、软件增删、装机必备等等,这也是为什么各种优化大师、超级兔子、碎片整理等软件“屡禁不止”的原因吧。
  • 万年 IE 不升级,银行网商耍流氓 – IE 7.0+ 新增加了多标签的特性,但是呢,这个多标签特性默认情况下是只启动 20% 的——除非手工指定,否则点开的链接依然是在新窗口中。退一步讲,就算是手工新开个标签页,但是这个空白标签页的打开简直比乌龟还慢,至少要 5 秒钟,正是让人“屎可忍,而尿不可忍啊”。至于万年不变的 IE6,已经国内众网商网银流氓们的 ActiceX 插件,我已经无力吐槽了,历史会证明,一个不支持跨平台浏览器的银行网商,绝对会是软件史上的一个笑话,或者说,这是中国银行业的奇耻大辱。
  • 多情自古空余恨,聪明反被聪明误 – Windows 下的很多软件都喜欢自作聪明,典型例子就是 Microsoft Word。且不说各种软硬回车,最简单的一个列表,回车之后默认又是一个列表项,但是如果我想新开段落呢?很多人就不知道怎么办了,于是就各种暴力手段地搞排版,排出来的东西,可想而知。我只能说,这种自作聪明,有时候不是真的聪明,是蛮横的自作主张,是对用户意志赤裸裸的强奸啊。

个人吐槽到此结束,详情请进一步参考:

Save your life

在接下来的系列文章里面,我会分门别类地介绍我在 Linux 桌面使用上的一些日常经验,分享自己的一些心得。这些经验之谈对于刚刚踏入 Linux 大门的同志,以及对于初级 Mac 用户,甚至部分喜爱折腾的 Windows 用户,都有很大的参考价值。我觉得,在信息时代,电脑将伴随着我们的一生,高效地使用电脑,就能够在更短的时间内处理更复杂的事情,从而为自己节省出宝贵的时间,去做更有意义的事情,这是一种正向循环;而如果每天纠结于杀毒、木马、弹出窗口、软件破解,则会使你的思维受阻、降低你的工作效率,这是一种负向循环。

这一系列的读者群将以 Linux 用户为主(重点是 Coder),高级 Mac 用户可以作为参考,对于 Windows 用户,理解起来可能会有些困难。不过话又说回来,“不经一番寒彻骨,哪得梅花扑鼻香”。我给自己定下如下两个目标:

  • 在键盘上舞蹈
  • 思维不会受阻

至于主题,我初步想了分为如下几个

  • 高效的文件管理
  • Just Find it – Findutils
  • 细谈文本配置
  • Shell 之魂 – 管道
  • Screen – it not a screen
  • Zsh – 终极 Shell
  • VIM – 键盘上跳舞
  • CLI Tools – 把玩终端
  • 时光机 – 版本控制
  • 抛弃 Office – LaTeX
  • KDE 系列
    • Kwin
    • Dolphin & Konqueror
    • Konsole & Yakuake
    • Krunner

敬请期待!


  1. 阮一峰博客:什么是博士

  2. 这是西方的一句谚语,寓意在于告诫人们要多聆听,少说话