在 linux 下面工作已经有一年半的时间了,最初只是被它简洁的外表所吸引,抱着玩一玩的心态,没想到几个月之后,windows 便被删掉了,linux 或许更适合我的工作。记得之前看过一篇报道,好像是说使用不同的操作系统,会对人的大脑结构产生不同的影响,我不知道这个是真是假,但我知道 linux 确实带给我一些不同于 windows 下面的操作习惯。

1. 使用命令行。

当我还是一个很菜的菜鸟的时候,我是那么讨厌命令行这种东西。如此多的命令,每个命令下面还有如此多的参数,哦,老天,我还是去睡会儿吧。。 这种感觉,就如我初一时刚刚接触英语时,英语老师指着书最后面的单词表说,“这些全都要背过!” 我当时的第一反应是:You are kidding me?! 在我最初的印象里,我认为应该不会有人可以弄懂这么多字母的排列组合吧。我讨厌背东西,或者也可以说因为不擅长,所以才讨厌。

现在,已经是一个不太菜的小菜鸟了。随着对命令行的深入,它的威力已经远远超出了我的想像。我可以用 less 轻松地打开几个 G 的大文件;可以用 vim 方便的写程序以及编辑;grep、awk,sed 满足了我很大一部分的分析任务,shell script 在处理小文件以及与系统交流方面,功能独到。这些命令是如此方便,它使很多需要人力的重复劳动实现了自动化。

2. 配置。

linux 下面的程序大都需要配置,而配置才使得计算机真正成为 personal computer。对于同是使用 windows 的人来说,当你使用其它人的电脑时,你可能不会有太多不舒服的感觉,因为 windows 的可配置性太低了,不同人的电脑基本上没有任何太大的差别。

但在 linux 下面,每个程序都被使用者按照自己的偏爱进行了不同的配置,所以每个人的系统都是千差万别的。比如,我在 linux 下面用的是 awesome 窗口管理器。awesome 与其它窗口管理器最大的不同是,它是一个平铺式管理器,而其它大多为浮动式管理器(包括 gnome、kde、windows等),有很多博文都给出了介绍,在此我就不赘述了。在 awesome 下面可以有很多个桌面,你可以在不同的桌面上营造不同的环境,比如桌面1是工作环境,桌面2是看小说的环境,桌面3是游戏的环境,桌面4是编程环境,等等。当电脑开机时,不同的程序便已经被分配到了不同的桌面上,你可以很方便的在不同桌面间切换,每进入另一个桌面,一个不一样的环境已经展现在你的面前。

3. 键盘党。

在 windows 下面,我很少注意自己在电脑下的工作效率,因为基本上很多操作都是用鼠标进行的,我没有感觉使用鼠标有任何不适。

直到切换的 linux 下面,我已经开始频繁的写一些脚本了,忽然感觉到手在键盘上飞快操作的感觉才是最爽的,一旦需要不时切换鼠标,工作效率将大打折扣。为了扔掉鼠标,我尝试了很多有趣的软件。比如,开机时,我使用 awesome 平铺式窗口管理器;用 firefox 上网时,我使用 vimperator;在 chrome 下面,我使用 vimium;在终端下,我使用 byobu 分屏工具,这些都极大的减少了我使用鼠标的频率。另外,还有一些工具,比如 基于 vim 操作的 pdf 阅读器 apvlv, 基于二分查找的鼠标工具 keynav,也都是为了减少鼠标操作而设计的,不过,这几个东东我用的比较少。

4. linux 会引导你思考计算机是如何工作的。

我接触电脑非常晚,直到大学的时候,宿舍几个哥们共同集资,才组装了一台机器。windows 确实是一个超级易上手的系统,也是一个很好的娱乐工具。。在我那时的印象里,电脑只能算是一个集游戏机、文本编辑器、影音播放器等的超级聚合体,我甚至不太清楚计算机是用来计算的(囧)。

当我完全切换到 linux 之后,每次写程序,我都会很好奇,自己写的东西,在计算机里面究竟是如何运作的,怎样才能写出高效的程序。这一方面,top 的确是一个相当好的命令,你可以查看很多与程序资源占用相关的信息。此外,程序中的IO操作也是很重要的,大多数时候,在内存允许的情况下,我都会先把所有东西读入内存。当你处理一个很大的矩阵时,你也要考虑矩阵中的数字在内存中是如何分配的,按行分配还是按列分配呢,这些都会极大的影响程序的效率。

在此,我只是想谈一谈 linux 带给我的一些操作习惯的改变,而没有任何讨论操作系统好坏的想法。如果你想要对计算机有一些了解,那么 linux 将会是非常好的选择,它里面自带了很多方便编码的工具,而且可以潜移默化的引领你思考计算机、程序的工作原理;但如果你只是为了方便自己的一些非编码性的工作,比如文本编辑、表格、图片处理等等,那么 windows 将会是更好的选择,对于这些工作,linux 没有太多的优势,相反,可能还会给一些初学者增加不必要的麻烦。