我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
3 ^, h3 q1 x- \2 \6 G# KWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
. a; v6 a& a7 O标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来5 a& `& l. g2 B6 F: Q8 s( o
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
, t# S2 c( R; i! k& q的先进。
# @: ?" R5 y5 y" h" j8 r
$ u A) U1 N: ~; K: GLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”1 |8 }" I( j- c
* f _3 g" w% j6 f) P0 [看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
( ^2 A9 B9 j1 v: B4 B没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
' B8 e3 z) K5 J$ c/ V难道它们的设计者就那么低能,连个图形配置界面也写不出来?1 M3 B# v s, R# P& X; G
5 ~, C' \5 k4 i4 N$ V) f8 R当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
: m" j e& u* @- @. W8 ^能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
1 w/ n# J% v8 H5 t要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修" D+ }7 p% y) c/ N. N {: P) X
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设6 R# L$ T8 A( I+ F* U9 N
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, 3 l& C. v5 s+ m1 y) ~' i) f
sed, Perl,你会觉得那才是真正的自动化啊。3 [6 R, o- h# \. Q1 n/ x
3 b g" z( c' b [# D鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全& q! X c' d7 B* H1 ]: }7 U- c5 }
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
) B- g( |$ l' h2 [) e8 H+ J* d; ^+ t点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。9 ]. D. ^8 @' f( k
( N5 D. C& I3 y/ }
各个小程序的完美配合
' E1 D3 G% }# b8 j9 D% i$ K5 O9 J w* e, d& p
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能/ O9 D1 c* e7 }7 y. O1 h+ |
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
) Q5 |+ c- ~6 l- P1 n! ]0 E2 _统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
# Z/ ]: ]+ x' M! kgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
6 H& i( i# m# y5 i8 K- a& ]一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
8 z" y/ w# y5 i/ S7 i6 Xvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
. V( d: y8 p9 j+ d* H" {# d1 n设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等8 ^) M$ Q) z. M1 A: q( |$ p: e! g5 h
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做9 b* L- h7 h* H
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
1 {2 I( n" H0 j5 L7 j以在自己的窗口里“嵌入”另外一个程序。* m' h+ y f* @& [/ {$ y3 ~
# Q6 Z! m C3 e. K& q) P
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
* R b6 I9 ?+ v. x% x! w: S! N下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,- [0 F0 p! }# b8 N) ~# G0 w7 H
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
' H1 ~. C* x9 N T$ H1 Z5 r, z你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。9 K" O$ \& H: ]$ p3 [3 S
9 f) D+ L2 X% |- Z( eWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
" y: P& d8 I% \- \6 ~8 @己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
- [' K+ R/ }) m& x0 ]6 J自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
; i7 t* \! Z1 A. L! g% h/ w了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
0 c- t9 [3 C' u ~9 C- F: U' h; H8 @; i的键绑定,菜单组织…… 不能 DIY!3 H7 [. d2 N$ H9 G% i& }. U
0 n8 V: I' }+ [9 z+ @7 B5 E$ X
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
! L, N; N: y; P& ?么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
; [, {' B" W8 S$ V1 D面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
3 B3 s* w& h o- R* T l拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
, m) K5 ^+ ]! o+ M大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
6 v( V/ j o! C6 f; ~5 d( m服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
" X# }3 A$ x( K+ P& n种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,% J' Z) x: U8 {
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
7 x: N) H& |, ^7 t: V5 ]' ]买全套配件!+ L2 P7 N# G( A6 A7 g1 e3 V* m F
& o" G g2 U9 o. N而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
6 Z8 z% Z& o$ u& K. W! k也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
& M" S: d/ L* o; Z片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给) T4 @" S! Y5 [/ m
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
8 f8 N' m* h4 |; K0 o) `0 r它 PGP 程序。/ _) X8 @# D0 Z
* P/ q# }* Z1 G4 I0 m! D" k
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
3 }% X1 k, O9 X& w- |转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
6 }4 u& e& G9 m7 H. w以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以
, ^$ t, k. \( v( ]% b: S分别得到它们的好处。
, V3 v1 S' z- D( Y' ]* }% T# N8 F: \# |! l, _8 W
学 UNIX 绝对不是浪费时间
- `) U3 N" I$ [0 _有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
8 F' \7 F ]' c0 U% B0 [+ \个星期!”
6 v8 N7 N' v8 w. Z' S. M8 A& i4 v1 ]' y
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是+ O/ M# J; D. B" f
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows 2 m$ a4 k+ r& I6 r) ]/ l5 M
的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为& U9 \5 m, s0 y) |4 A) d
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
- _$ n+ r2 c( i$ m机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
4 C. U% l% p! \硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则! T* C. N, f4 i
他们会在20分种之内帮你搞定。一个星期也太夸张了.7 r+ d3 T1 Z9 @2 N# c1 z
, z# t0 a5 _% |/ v如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定- U5 k: I7 i- r8 ^5 K2 M
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只$ F4 V3 }/ T" {: C
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
5 ] |( q4 L8 U- t
1 ~/ x+ R4 k# i: E, z7 d/ [最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
' g9 Q. K% P; O! k0 e2 j你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模0 r1 Y* e2 B& ?: x
拟你现在的工具。& p4 g) R( u C
* P( K8 z# b I/ o+ U5 c我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
$ o. t+ ~3 r, _2 C没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
$ s4 W* [9 f B- k- z0 b4 C% t# D直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,
3 N+ x! B7 ^) O1 Y9 w现在完全不经修改还可以用。
" [- Z) t; t! M5 H& x( \$ |7 n( P& {. X3 O- a1 i
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
1 Z* b/ N; b) ?$ U' A% r9 T了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
4 ?4 N2 l. Z% U1 @能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又, q* m. P4 \! o, [7 t! G
要换成VJ, PowerBuilder, C++Builder, ...
0 Z$ J' Q- x3 I, s( S; O9 x7 I' O, K5 ]: |/ S- v
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
2 d% b+ x& ^6 u7 jBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
% [4 C$ F* F2 Z0 M$ C断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft + ^( `0 n% n( }
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用9 w% A6 f8 z# Y3 T
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
& O, d9 |- m' _! G6 P族的专业。” 这就是微软一手造成的。, u; _5 c5 q1 F& j9 }3 n, {! O) j1 m2 @
- L% _6 e" G. s: K- L) P5 ? h这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
- h- C4 l* E4 C使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工5 ~& e M3 C g% X% o! c8 G
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
- V' ], F; L3 J. B6 ]& J+ L位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
8 y) ?) d0 C- B1 q, }车了。这难道不好吗?
( ^. Q% Q0 t3 K; H1 V" \$ C
# O9 g9 d5 P1 r有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
7 D$ I% ?2 C. l. Z去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
( t" S" y. ]7 n" H* K# J要傻瓜型的“微软牌汽车”吗?我们来看看:
4 \! }$ V; x9 E* j9 l! P& q( X' H0 y
( i; Q4 E- A% Y; `你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
# j! `6 u3 _8 { N8 F3 m. b9 @% o- ^防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
% s) z. f7 m+ y2 [# R一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机$ u! z! D- M$ [' b+ |4 e2 k+ u X
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
( B7 ?4 f5 `. _1 Q( s/ g软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
" X: y' z9 e& c2 S- r5 W3 {- f; R$ x# J6 x% z& ~4 X! P
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你1 O7 H( R' k' J1 w
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告4 U3 d0 n9 A& _7 \
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家4 i/ ?* H, ]* V0 o6 D
人造成的一切死伤,微软概不负责。”
5 L7 X0 a6 z1 X( |3 c% ?: a/ S/ k& i S: a/ q& b, U- b! T
怎样完全用 GNU/Linux 工作" R* j, N/ ?' G
9 K1 p' \6 p) @8 W
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。, M5 v. F7 {6 \$ E. [
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理7 m( a) n& y- {3 w6 E& b* g
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
# Z" I7 }# ~" M& ?% P而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
) S1 P; p6 M/ n. m f- p c序,信件,网页,LaTeX 论文,MetaPost 绘图语言。! s D3 L$ a% ?% ^9 o) o0 j% d4 z
0 b% o% @# H; \. ^) l我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便/ M7 j) ?: n9 ~ _# M. z: n* U, D( k
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
- j) d3 L3 w. [* v- _- c! U0 ~: O单,而且效果非常漂亮。你可以看看我的TeX介绍。1 y5 n u, t4 H0 j* [; i2 `
( H1 `. ]; {0 R% Z/ K! p
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
, a7 i! ]1 y x2 I视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了7 G, p: x7 e+ T, L$ n3 C
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 / L5 {, `" p! j: L1 v1 `- N
MetaPost 画出来的。. E4 J, Y% w6 w- ~4 k
# e( {# W$ H# X7 m5 S我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发# H g" x# E3 S. ?& M
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
5 X, D. M) P) S这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
3 l* b0 N3 v" J+ C0 D我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,) j* f: h& r: B' V
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序' x6 s6 r$ E' j# a& E d
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运& I' V/ ]% }, t
行的。
# ]6 j. g' P' `4 l
5 w3 Z5 j$ u/ GLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很& d/ [! `- C) [& j/ I
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……; K' q/ j9 \' o2 d. l6 s
: n, X* X* Y# Q& y ?
结论
( f8 b9 I( M: g) r9 W: G
: B, h- s/ S$ z3 ]) j+ r* _# ] L我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌9 O# F5 \9 R. B" A8 m
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
8 s# o" {) ]% k5 L. R赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
5 Z: u* ~2 L4 Y# y- J# `# r! e3 \9 ?) X
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
8 L( N3 l) v0 U/ d$ ~5 A4 P我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。- n, N3 \# y4 O1 F' O/ a0 {
0 w, N4 w1 x8 I2 D& q: V消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
9 P, x h! h# r$ |) \: K" T3 z E这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
( K; B! n; h1 Y8 `3 f不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方, x- K$ J% H) q9 u; y! a
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,- m3 P" t. C S! U
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑$ h; X1 b' u' p# }$ m: M
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.2 } E0 N D: ^& b4 W1 D9 ~ Y
, n9 b% v" y0 ~& h我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
; X$ K9 L# S, z; ?* ^用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解" t! [$ z7 R& `- h _( g
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
$ h3 M) F& e, f* X5 j) q
. h& }" J$ Y- L, O附录: 我用来处理日常事务的 Linux 程序6 E& z! r$ m; \! c, O: c" P
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
$ a# K3 T! [* D/ C3 O是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。* N4 q3 `0 ]" t+ n G
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
0 s7 `( R# d ^工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。! {" @8 K; d% p
3 S' [. [. c8 m# J1 W/ ~; l
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
$ ^% {6 L9 r5 O, K! x4 T就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理2 C3 | U/ c) [; r
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
" H9 Q; W5 A/ W" z* X4 w机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样, K' V. I1 x5 x0 l r
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省 ~6 M. h: ~$ J. w& D1 K! W/ h0 `
已经很安全了。不过你有兴趣了解更多那也无妨。
6 T1 \, {0 {8 ?8 M6 p( @: I* U# P- o: z
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工: ?# H5 q/ B0 `8 c' \
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其/ S6 |- H2 ^+ q. a- }
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们1 D" [- W- m3 S) \# v# |& U" ^: C
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
/ O% X! d$ D) A0 K- l' g0 @6 j辛勤劳动的产物,是可靠的程序,它们物有所值。
( N9 n2 r$ A8 P |