您的位置:知蚁博客 » Linux » 完全用Linux工作——why Linux?

完全用Linux工作——why Linux?

作者: 发布时间:2012-02-19 分类:Linux 标签: 2,960人浏览

完全用Linux工作——序
完全用Linux工作——微软和Windows
完全用Linux工作——Windows和Linux能干和不能干的那些事儿
完全用Linux工作——到底用什么?

UNIX 是简单的–

  ”我相信简单就是最好,如果太复杂,我是不能理解的。” -Seymour Cray

  很多第一次用 Linux 的人会惊奇的发现,Linux 的程序居然不”安装”就可以运行,程序拷贝到随便那个目录都可以用,而不是一定要占用你第一个分区的空间。程序的设置只是一些简简单单的文本文件。你根本不需要什么”注册表修改器” 就可以改变系统的设置。这就叫做简单,但是简单就是美。虽然这只是 UNIX 简单性的一个肤浅的认识,你已经体会到了某些东西。

  但是简单并不意味着功能弱,并不意味着落后。相反,简单意味着强大,意味着生命力。

  我不会再继续阐述我理解到的”UNIX 的简单”,因为这个需要自己去体会。

UNIX 是永恒的

  有人说:”Plan9 会取代 UNIX,Mach 会取代 Linux 内核。”

  但是你如果是一个深入体会了 UNIX 的人,你就会知道:UNIX 的思想是永恒的,不管时过境迁,Plan9 是否代替 UNIX,UNIX 的灵魂都会在 Plan9 身上现形!

  我为同一个设备写过 Linux 内核和 Windows VxD 驱动程序。写 Linux 驱动程序时,我对 UNIX 设计的完美的一致性,远见性所折服。UNIX 用同样界面的 read(), write()系统调用就可以对不同的对象:普通文件,设备文件,管道,管道文件,socket,……进行统一的读写操作。我跟本不需要写一个测试用的应用程序就可以对我的设备驱动进行测试,因为 cat, cp, dd, 它们也使用了同样的 read(), write(),设备和普通文件在应用程序眼里没有区别。在那个还没有 Smalltalk, 没有 C++ 的年代,UNIX 的设计者已经使用了所谓的 “面向对象方法”。对,C 语言也可以实现面向对象。

  UNIX的系统调用几十年都没有很大变化,这非但不是顽固,不进步的象征,反而是UNIX 的远见卓识的体现!这就跟 TeX程序几十年都不变的情况差不多。这些才是真正的永恒的 master piece!你应该改变所有软件都必需从 0.1, 1.0, 1.1, 1.2, 2.0, …, 3.0, 3.1,95, 98, 2000, XP, … 不断升级的想法。

  Windows 就不同了,它在最开头只是一个 DOS之上的图形包装而已。后来为了兼容以前的糟糕设计,不得不加上很多累赘。我写VxD 驱动程序的时候就深有体会,Windows 95 程序对设备的操作只有用DeviceIoControl,我不得不写了两个应用程序来对设备驱动进行测试。Windows内核的不一致性和隐密性使我非常恼火。不过 Windows WDM驱动程序现在也有了 ReadFile, WriteFile,…… 那说明什么?那说明Windows 在向 UNIX 学习,或者有可能是某个 UNIX设计人员在微软打了几天临工,顺手加了几个UNIX的东西进去。这样做是没有用的,Windows从一开始就是非常糟糕的设计,它的历史的包袱太沉重了,缝缝补补有什么用?它只能永远的被UNIX 甩在身后!

UNIX 是强大的

  让聪明人干任何他们想干的事情。

  UNIX 的一个特点就是非常高的灵活性,Xwindow也具有这种灵活性。这种灵活性体现在哪里呢?

  UNIX 的程序一般都有很多参数,不管你现在用的着用不着,总有人需要某些参数。它们的行为很多都可以用配置文件来改变。比如GNU bash, 通常缺省的命令行输入方式是 Emacs 方式,但是只要我编辑一个.inputrc 文件,就可以把它变成 vi的输入方式,而且我还可以自己绑定键序列到某些操作。我可以用 shopt来设置它的很多特点,比如是否进行通配符扩展,是否可以把一个变量当作一个目录来cd,是否可以自动纠正某些明显的目录名打字错误……

  UNIX程序设计的思想是提供给用户“机制”,而不限制用户制定“政策”。这是一个重要的尊重用户的作法。

  我们再来看看 Xwindow。Xwindow是一个出色的设计,它把显示服务器和客户程序分开。一个显示上既可以显示本机上的程序,也可以显示别的机器上的X程序,而它们都遵守你的窗口管理器的统一指挥,它们之间可以方便的传送剪贴版数据,各种事件…… 比如有时我的 XFree86 上会出现四个不同机器上的XTerm,两个不同机器上的 GVIM,…… 它们统一受本机上的 FVWM指挥。

  Xwindow 程序都具有很多很多命令行参数和 resource参数。你可以随意的在命令行或者 .Xdefaults文件设置所有的颜色,字体,尺寸…… 而且如果你用 xrdb 把 .Xdefaults导入到根窗口,那么其它机器上没有经过配置的同样的程序,显示到你的机器上的时候也会遵守同样的外观规定。

  Xwindow 的窗口具有 Property,也就是一些可以自己定义的共享数据(原子)。正是因为这些 Property的存在,使得 Xwindow 具有无比强大的生命力。X的窗口管理器和其它客户程序之间并没有统一的协议,但是后来出现了ICCCM(客户程序间通信规范),这个规范就是通过 property定义的。现在又有人定义了一套“扩展的窗口协议(EWM Hints)”,使得Xwindow 可以具有某些 Windows 的特征,比如一个工具条程序可以告
诉窗口管理器:“这个屏幕下面被我占据了24个像素的空间,你最大化程序的时候不要越过这个界线。”

  一个强大的窗口管理程序比如FVWM,它收到这样的提示时,可以答应工具条程序的这个要求,也可以不答应。一切选择的权力在于谁?当然是用户了!

  你想想,是不是有些 Windows 程序常常弹出一个窗口要你选择 “Yes orNo”?你不点击它它就不下去。你觉不觉得你的程序在侵犯你的尊严?你是一个人,一个智慧的生物,怎能受到一个程序如此的待遇?

  还有就是很多 Windows程序把人当成傻瓜,而它是“智能程序”。比如,有一个程序就是喜欢把你的每句话第一个字母都变成大写,我不说它是谁了,你遇到的时候就知道了。

  如果连“一句话开头一个字母要大写”这么明显的问题都需要程序帮你纠正的话,人脑还用来干什么?况且如果你故意想要不大写的话,那就更麻烦了,我楞是没有从它那一大堆菜单里找到怎么关闭这个愚蠢的选项。

只有符号才能完全操纵计算机

  我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得 Windows 的工作方式好,他们希望 Linux 有一天能”像Windows那样”。你说:”我鼠标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:”Linux 从来没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows 的先进。Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”

  看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget,tin, … 没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?难道它们的设计者就那么低能,连个图形配置界面也写不出来?

  当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达能力却是无限的。用图形界面配置这些程序的话,如果你想达到配 置文件的效果,你需要成百上千的菜单,checkbox, radio button, … 到时候你根本没办法找到你需要修改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, sed, Perl,你会觉得那才是真正的自动化啊。

  鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。

各个小程序的完美配合

  这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能力,然后让它们合作。Xwindow也继承了这种好传统。

  这恐怕就是Windows和其它操作系统望尘莫及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, grep, find, awk, sed, make, Perl,Emacs, vi, tin, Mutt, … 它们是那么的具有一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了 vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可以在自己的窗口里”嵌入”另外一个程序。

  在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows 下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入UltraEdit 编辑器,你别想用一个 expect 脚本来控制 telnet 到水木清华BBS,这就是为什么 helloooo 诞生在 Linux 而不是 Windows。我曾经试图从Windows + Exceed + SecureCRT ssh 登录到 Sun 机器,然后通过 ssh 的隧道(X11 tunnel)把 X 程序传到 Exceed 上运行,但是搞了两天都没有成功!而在Linux 下这个事情根本就是不用怎么配置的,OpenSSH 和 XFree86 本来就是完美结合,只要打开 ssh 的 “forward X11″ 选项就什么都搞定了。

  Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的 Virtual Terminal, 自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器的键绑定,菜单组织…… 不能 DIY!

  你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的乒乓球拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用Windows 程序,你得到的是大杂烩,就像你去买”品牌机”,只有那么几种配置,而且附带很多你不需要的软件和服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这种选择余地!Windo ws 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新买全套配件!

  而 UNIX 和 Xwindow 就是高档的”组装货”。比如我用 Mutt 的时候,我可以用VIM 也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把HTML 附件交给 Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其它 PGP 程序。我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以分别得到它们的好处。

结论

  我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和Windows 灌输在你脑子里的谬论,别再相信它们所谓的”新技术”,别再追赶Windows,因为追赶 Windows =倒退。马克思有一个思想很重要,”新生事物并不一定是在最近出现的。” UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。

  勇敢的拿起像 bash, FVWM, VIM, Emacs, Mutt, lftp …… 这样强大的程序,不要再埋怨”Linux 为什么不能像 Windows 那样”,不要再浪费时间试用这样那样的程序,不要再忙着升级。是你需要改变而不是 Linux 和 UNIX,Linux 现在就可以成为你的好朋友。你需要认识它,了解它,信任它,才能完全的靠它来高效的工作,省出时间来处理世界上更加值得处理的事情。

(—全文完—)
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/fully-work-with-linux-part-four

相关文章

7访客评论 ,博主回复4

  1. 看不懂

    小俊02-19 12:18 回复
    • 可以当小说来看嘛,那些名词缩写就当是小说的主角了

      知蚁02-19 18:28 回复
  2. 很不错,你的Linux学的怎样?

    自贡SEO02-19 16:09 回复
    • 菜鸟阶段,刚刚入门

      知蚁02-19 18:27 回复
  3. Linux已经能满足大部分人的需求了,只是国内软件及网络平台依赖性太强了,还有那个教育环境—-交论文都必须是word格式…..

    DevPlus02-20 20:13 回复
  4. linux也知道很强大,也用了,就不知道怎么用,菜的很。

  5. 如果教育系统强制使用Linux,就像德国那样
    那么我相信Linux的前景是广阔的

    Louis Han02-28 13:59 回复
  6. 小小尝试了下Ubuntu 不是很方便啊!

    毕业生03-12 16:09 回复
    • 习惯了就好,刚开始的确会很不习惯

      知蚁03-12 18:58 回复
  7. 我一直想放弃window转linux系统,可是拖了这么久终究还是没换过来、、

    一阵风03-12 22:41 回复
    • 我现在也是搞个虚拟机在玩,还没敢正式转到linux下

      知蚁博客03-12 22:44 回复

我来说说

(必须)

(必须,保密)

你确定你已经看过文章了?
取消

无觅相关文章插件,快速提升流量