|
各个小程序的完美配合
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能 力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系统望 尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, grep, fi nd, 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。
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自 己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, 自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为了使 用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器的键绑定 ,菜单组织…… 不能 DIY!
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什 么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版面, 什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的古球拍,木板, 胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是大杂烩,就像你 去买"品牌机",只有那么几种配置,而且附带很多你不需要的软件和服务;就像你去买组装 好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这种选择余地!Windows 程序 就相当于最廉价,最次的滑板。但是它却会花你更多的钱,因为一旦一个部件坏了,或者你 不喜欢了,你不能另外找一个好的换掉它,你必需重新买全套配件!
而 UNIX 和 Xwindow 就是高档的"组装货"。比如我用 Mutt 的时候,我可以用 VIM也 可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图片,我 可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给Mozilla 图形 显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其它 PGP 程序。
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,转 发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可以选择 我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以分别得到它们 的好处。
学 UNIX 绝对不是浪费时间
有人告诉我:"你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一个 星期!"
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是因 为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows的时 候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的机器的时候 已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于硬盘上,又增加 了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则他们会在20分种之内 帮你搞定。一个星期也太夸张了.
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定 会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只用过 Linux,你第一次用 windows 时恐怕也会问:"/bin 目录哪里去了啊?"
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失 。你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模拟 你现在的工具。
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对 没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,直到 今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,现在完全 不经修改还可以用。
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同 了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功能也 不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又要换成VJ , PowerBuilder, C++Builder, ...
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ B uilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不断变化 ,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft Pres s 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用WDM 了。你 不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:"计算机是贵族的专业。" 这就 是微软一手造成的。
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不使 用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工具就像我 们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的位置。用惯了的 话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修车了。这难道不好吗?
有人说:"你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?" 你去问 问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想要傻瓜型的 "微软牌汽车"吗?我们来看看:
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的防 撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换一次引 擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机油。你的车出 了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微软汽车公司指定的维 修点去,需要付相当多的钱才能修好一个小毛病。
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你需 要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告微软汽车 公司,因为你买来汽车之后必须签一个合同,说"由于微软牌汽车对你和家人造成的一切死 伤,微软概不负责。"
怎样完全用 GNU/Linux 工作
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。 半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理汉字。 后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。而且 VIM 和Em acs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程序,信件,网页,LaT eX 论文,MetaPost 绘图语言。
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便的 论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简单,而 且效果非常漂亮。你可以看看我的TeX介绍。
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可视 化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了MetaPost。 它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是MetaPost 画出来 的。
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发现 mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用这样的程 序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。我曾经为 Gnom e 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,Gnome也能和 FVWM 一起 工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序还不错,很多 gtk, Qt 的程序 也很不错,它们很多都是可以独立于这些桌面环境运行的。
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很差 劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
结论
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌输 在你脑子里的谬论,别再相信它们所谓的"新技术",别再追赶 Windows,因为追赶Windows =倒退。马克思有一个思想很重要,"新生事物并不一定是在最近出现的。"
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。我 们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt …… 这样强大的程序,勇敢的面对符号。不要再埋怨"Linux 为什么不能像 Windows 那样",不 要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方式,因为 那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,了解它,信任 它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑里,或者在用电脑来 娱乐的时候,用一些"傻瓜软件"还是不错的.
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利用 Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解决世界上 的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
附录: 我用来处理日常事务的 Linux 程序
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但 是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。你以 前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。工具的东 西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那 就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确 实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的机器当成 网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样会省去了解很 多没必要了解的东西的时间。不用过度考虑"安全",因为 Linux 缺省已经很安全了。不过 你有兴趣了解更多那也无妨。
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工 程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其它物 理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们很多不是 免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人辛勤劳动的产 物,是可靠的程序,它们物有所值。
下面列出我常用的一些 Linux 程序。一个列表里可能有很多,那是为了方便你来选择 ,我列出了比较信得过的。但其实很多只有第一个是我真正在用的,我不喜欢试用程序。我 不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,那样可以省去我很 多麻烦。
Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,你可以随意绑 定自己的键盘。
编辑器: VIM, Emacs。
程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ...
论文,幻灯工具:LaTeX, ConTeXt
绘图工具:MetaPost。这个语言太强了,以至于我只用它了。你不熟悉的话可以用xfig , dia 来画一些流程图之类的图片。
图像处理:ImageMagick。其中的 import 程序可以屏幕抓图,convert 程序可以转换 图像格式,display 可以显示图片和简单编辑(缩放,换质量,转格式,简单绘图,简单虑 镜)。通常我就这么点需要。如果你要更强大的图像工具可以用 Gimp, 它几乎和Photoshop 差不多。
自动管理工具:make。我可以用make来自动编译程序,自动编译文档,自动更新插图… … 全自动,而且不会重复劳动。
数值计算程序:SciLab。这个程序基本上可以代替 Matlab。
代数计算程序:MAXIMA。这个程序基于世界上最老的计算机代数系统之一: 由美国能源 部(DOE)发行的 MIT Macsyma 系统。它是用 Common Lisp 实现的。很多现在的符号计算程 序比如 Maple 都从 MAXIMA 身上学到很多东西。它现在经过 DOE 批准以GPL发行,永远是 一个自由软件。
加密程序:GnuPG。我的 PGP 密钥就是它搞出来的。
打包,压缩程序。什么都有: tar, gzip, bzip2, zip, rar, ...
虚拟光驱程序。Linux 不需要虚拟光驱程序,直接 mount 就行了。
ftp 服务器:proftpd, vsftpd。proftpd 功能很强,但是我只用了最简单的一种设置 。
WWW 服务器:apache。(我一般没有开)
ftp 客户程序:lftp,ncftp。它们都是文本方式操作的,但是比起图形界面的方便的 多。比如 lftp 几乎具有 bash 的所有方便功能,Tab 补全,bookmark, queue, 后台下载 ,镜像…… Linux 也有图形界面的 ftp 客户程序,但是大多不稳定,有很多问题。这就是 很多人抱怨 Linux 不如 Windows 的一个小原因。还有很多人用 Wine 模拟 Windows 的lea pftp,其实 lftp 比 leapftp 好很多,你需要的只是适应一下。
自动下载工具:wget。它非常稳定,有一次我下载一个程序,用 IE 和 Mozilla 下载 回来的文件都是坏的,最后还是 wget 可靠的传输了数据。用它甚至可以镜像整个网站,比 起WebZip 这样的 Windows 程序强多了,而且不会因为你不付钱就在下载回来的网页里强制 插入广告。
虚拟终端:rxvt, xterm, gnome-terminal, mlterm, ...
X server: XFree86
窗口管理器:FVWM。编译加入了 libstroke。
中文输入:XSIM。被我修改过以适应 FVWM 的需要。另外推荐你还可以用 SCIM。
email 处理:Mutt + Postfix + fetchmail
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和ne tscape 插件。
看CAJ文档。我从来不看CAJ之类的文档,如果找不到PDF或PS,直接去图书馆借最好。
看网页:Mozilla, Phoenix, lynx。Mozilla-Xft 的显示效果比IE 好很多。
英汉字典:IBM智能词典,星际译王。
编辑网页:我用VIM 直接写 HTML。你如果想要图形方式的可以用其它的比如screem, B lueFish。
登录其它 UNIX, Linux 机器:openSSH, telnet。 我喜欢用 openSSH 把其它机器的X 程序通过 ssh 加密的隧道传到我机器上显示。
登录 Windows2000 server 的 display service: rdesktop,...我有一天试了一下, 不错。后来就没有用过了。
同步程序:rsync。我用 rsync 通过 ssh 来跟某些机器同步数据,或者做自己机器上 不同目录间的同步。
上BBS:rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的程序)
QQ, ICQ: 我没有 QQ 或 ICQ。不过你可以用 Gaim, 它同时支持 QQ, ICQ 和很多其它 的即时通信方式。ICQ 用户也可以用 Licq。
放录像:MPlayer, RealPlayer。MPlayer 太好了,直接就可以放 VCD, DVD, divx, wm a, wmv ... 用 Windows 的同学都很羡慕我,说 Windows 要放这个需要大堆插件。rm 最好 还是用 realplayer 放,它也是免费的。
放音乐: xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放ogg)。mpg321 不如xmms 管理音乐文件那么方便,但是有时我还是用 mpg321 放 mp3 作为背景音乐,因为懒得开一 个xmms窗口msn_smiley.gif
游戏:我觉得 KDE 的那个 ksokoban(推箱子),很好玩 msn_smiley.gif
看 Word 文档。请 Word 用户把文档全部转为 PDF 或 PS 再给我,文档里没有特殊的 格式干脆就用文本吧,何必那么麻烦。以前很奇怪的是,通知里本来没有什么特殊的格式居 然还要发doc附件的email。现在好了,我们系发通知都用文本,PDF,甚至图片了。
其它程序:还有很多我需要用而你不一定用得着的。比如,Doctor Scheme,
Scheme48, Scsh, kawa...这些程序只有 Doctor Scheme 有Windows版本。还有很多幕 后工作但是你一般不察觉的:xinetd, telnetd, sshd, crond, atd, lpd, ... 他们都比 W indows 的对应者强的多,或者根本没有对应者。
附:
写给支持和反对《完全用Linux工作》的人们 作者:王垠
在一阵阵唾骂和欢呼声中,《完全用linux工作》被转载到了天涯海角。很多人支持我 ,也有很多人唾骂我。我不知道它是怎样流传到那么多地方,其实我不知道它都被转到哪里 去了…… 我知道现在这篇文章又会罗里罗索写很长(因为我计划写这样一个东西已经很久 了,坐在Emacs前面总是有一种巫师在炼丹的感觉……),所以先提出中心思想吧。中心思 想就是:
我只是一个傻瓜。看《完全用Linux 工作》的时候请用你们自己的判断力。
几乎所有人都承认,那篇文章很偏激。当时的情况是这样,我用 Linux 的时候被一个 同学鄙视了,说:"你怎么用像 DOS 一样落后的东西,真土!看我漂亮的 Win2000..." 这 跟当面嘲笑别人老婆或者妈妈有什么区别?我义愤填膺啊,就几乎跟他吵起来。然后就写出 了这篇文章放在主页上,叫了几个人来看。接着我珍爱的 TeX 又受到众人鄙视,于是我又 写了一篇文章打击 Word,然后把 TeX 捧上了天。道理很简单,鄙视我喜欢的东西的人就是 敌人 --邪教徒或者恐怖分子--他支持的我就反对,他反对的我就支持。为了使人信服,举 例必用大科学家,世界一流大学,一流实验室的名号,虽然我不跟其中任何一种沾边。还好 那时候我还不认识上帝,要不就打他的名字了。论据不管是实际经历还是自己推测的,先写 上去再说。扬眉吐气啊!隔壁微软研究院的哥们居然都被我打动了,开始写 Linux 程序, 学用 LaTeX 和 Emacs。不过几天之后我就把它删掉了,因为我自己都感觉到偏激。
于是就没管那篇文章了。可是没想到它竟然已经被转载到那么多地方,似乎引起不小的 波澜。有段时间每天都收到十几封email,国内的,国外的,问技术问题的,夸我的,骂我 的,讲道理的,鄙视我的,想交朋友的,语重心长的,号称要删掉机器上的 Windows 的… … 我的主页居然也占据了"王垠"在 Google 上的首选位置,把那个日本的什么王公贵族"李 王垠殿下"都挤下去了。大家似乎都知道我天花乱坠的本事了,有人就想找我写文章向别人 推荐商业软件,我很后悔没有趁机狠狠赚一笔。走到图书馆,亮出借书证,管理员张大了嘴 说:"哇!你就是那个 Linux 牛人啊!",也不知道他是褒是贬。甚至有人把他的 BBS 昵称 都改成了"坚决拥护精神领袖花生" (花生是我的外号)。为此还骗到了好几顿报告"报告" 是清华专用动词,意思是请客吃饭)。虽然我觉得自己身上没有什么值得自豪的东西,但是 又有点为自己兴风作浪的本事感到惊讶。虽然我一再告诫自己要谦虚,但是不由的有一种毛 泽东,甘地,甚至摩西的感觉。我更加体会到"网络上没有人知道你是一头猪"的真理性。其 实,不但网络上没有人知道我是一头猪,实际生活中也没有人知道,其实我是一头笨猪。
这么长的时间之后,还有人写信给我说"深受鼓舞","提壶灌顶","对不起我还在用 Wi ndows 给你写信","真想删掉Windows 啊" …… 我很好奇,我的文章真的有那么大的威力 ?我再看这篇文章,觉得有点惨不忍睹,看了开头就不忍心再看下去。我告诉同学我很后悔 写了一篇这么偏激的文章,可是他"徼枉必须过正,你没有错",所以我也搞不清楚自己这样 写对不对,这样自责对不对。就像我从来不敢看自己照片,却有时被人称为帅哥,就让我无 法判断自己是否帅一样。所以现在我就开始怀疑我自己是否真是一头笨猪。也许多年以后, 我会正确的评价我的想法。就像我现在觉得我15岁的照片挺养眼一样,也许我会发现自己其 实是一头聪明猪?
写这篇文章不是为了让自己免得被骂,也不是为了显示高深的猪的哲理。只是因为我深 深的感到人应该有自己的判断力,不要简单的接受别人说的 DO's 和 DONT's。怀疑一切, 同时又敞开心扉去了解一切。
看过《完全用Linux工作》的朋友,请仔细检查里面的 DO's 和 DONT's。 -------------------------------------------------------------------------------
i copy this article and paste it by linux -i first use this system,hehe,and i do not konw how to type Chinese characters,so sorry ,i am a "cainiao"in Linux.hehe
----handsony -------------------------------------------------------------------------------- 2005.10.6
|