电影中一个超级黑客坐在电脑面前,从不摸鼠标一下,几十秒就能入侵超级安全的军事系统。这是因为电影制片人意识到,作为人类, 我们应该本能的知道让计算机圆满完成工作的唯一途径:是用键盘来操纵计算机。

我从2016年10月,开始完全使用Linux系统(Ubuntu 16.04 & Gnome3)工作。

其实在此之前我已经在linux环境(用的虚拟机)下编程了,原因有两点,命令行的技术是值得学习的。

另一个原因就是,我要参加的ACM/ICPC的编程环境就是Ubuntu,所以就算是提前适应环境了。

图形用户界面让简单的任务更加容易完成,而命令行界面使完成复杂的任务成为可能。

学习命令行会获益匪浅,不像其他一些计算机技能,一段时间之后可能就被淘汰了,命令行知识却不会落伍。因为命令行接受住了时间的考验。

我现在挺喜欢linux系统的,现在最新版本的Ubuntu17.04所使用的桌面环境是gnome,在此之前都是Unity,Unity我不喜欢,所以我当初安装系统之后的第一件事情就是 更换桌面环境。

现在主流的操作系统有微软的Windows,苹果的MacOS,和开源世界的Linux。其实对于Windows,只能说盖茨先生非常有商业头脑,容忍盗版系统的存在。 所以现在才能占有第一的市场份额。不过微软公司,他们的Windows系统是真正为用户设计的系统。因为普通用户不需要做那么复杂的事情,他们用电脑无非就是office和上网之类的罢了, 所以桌面系统可以让简单的事情变得更简单,这就足够了。

不过我毕竟是一个程序员,而且是想要走的长远的程序员。对于linux来说,Windows系统能做的事情,它也都能做,而且能做的更好,虽然有两大硬伤--图形处理和游戏。 而且林纳斯作客TED的时候也说过:如果被困在孤岛上,前提是你作出一个精美的GUI才可以逃离,他宁愿选择孤死。不过对于后端程序员来说,这两处硬伤无关痛痒。 其他的,linux系统确确实实对于程序员来说是很方便的。

比如,linux系统比windows系统流畅的很多,而且对硬件的要求也不是很高。我家储藏室初中时代的那个电脑。我寒假搬出来,给它装了CentOS,在虚拟终端下生活一点都不卡, 挺流畅的,不过估计换了win10,硬件这关就过不了。(当然我当时没有用浏览器,仅仅是尝试生活在虚拟终端下是什么感觉,firefox,chrome用起内存来都是大手笔。)

而且,linux占用内存也是比windows小的,虽然你通过top去看你的内存使用情况时,看上去linxu"吃掉了"你的内存,但其实是做了swap。

我很清楚的记得,小学时候,我家长培养我良好电脑习惯的时候,其中就有开机之后不要着急,用360之类的软件去清理一下垃圾,每几个月用一键还原精灵去还原一下系统。

不过前不久去看了Minix之父AndrewS.Tanenbaum写的那本操作系统之后,了解了一下这是为什么:windows系统在内存的最低地址和最高地址区都有,会有内存泄漏。 而且微软的白皮书里确实建议到每半年重装一次系统。(逃

有一点我其实觉得不错,我在linux系统上从来没考虑过安装杀毒软件的事情。也就是说系统本身是比较安全的。毕竟开源了嘛。那么多顶尖黑客去阅读代码,去修改系统bug。 而且黑客们也都使用这个系统,怎么可能不把它变得安全。而且windows上的病毒在linux上是不起作用的(是时候病毒也要夸平台了。

最后,想说的是linux安装东西问题,在windows下,基本都是从网上下载一个.exe的安装包,然后双击无脑的下一步就好了。不过这也有一个缺点。 就是它不具有原子性,也就是说如果你安装软件的时候安装到了一半,你用任务管理器结束进程了(自己闲的没事),那样,你先前安装的文件是存在在你电脑上的。 而linux却不一样,它有软件包管理,如果你用命令行去安装软件,及时你中途按下了ctrl+c终止了安装,那么它之前安装的文件是不存在的。 也就是说,它要么安装成功,要么就没有安装。而且,对于一些编程所需要的环境,框架,也可以轻松的一行命令行解决,而不像windows那样去各种配置。Linux系统还是挺好的。

另外说一点,有不少人问过我怎么去学Linux系统,或者说怎么学命令行,其实回顾你对于所有陌生事务最初的接触,都一样的,多去使用它,慢慢你就熟悉他了。

如果你想学好Linux系统的话,那就直接在电脑安装linux吧,也不要使用虚拟机或者双系统。因为虚拟机或者双系统,当你这样做了之后,你还是会在大部分时间去 使用windows而不是Linux。永远不要畏惧Linux系统,因为它也提供了桌面环境,你去使用Linux,完全可以不使用命令行去操作。也可以像windows那样靠 鼠标点来点去的操作。

对于命令行来说,其实记住那几个常用的就好了:rm, mv, cp, ls, cd, touch, mkdir, 以及软件包管理(debian是apt,red hat是yum)。