我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得, I3 r% D2 s1 m7 ]2 o9 z3 q
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠$ {3 {4 Q6 C: A0 X9 N" S. d0 m1 C
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
6 C# \/ h2 g4 W" v没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
. x: R% `* X/ |5 u/ l Z的先进。* `( Y! x5 x, s$ ~% e. a
, Z! P- N0 a3 h. x" x# A: fLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”1 @( p/ Q. o" K n# R# ~, {7 U
) v3 y, T& [9 \* q3 g看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
' {2 _, Y; H8 S+ Z9 ~5 I没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?, D8 p% e# l' _; F/ P
难道它们的设计者就那么低能,连个图形配置界面也写不出来?$ s3 V( g2 M/ H; t+ G$ i" w
% |) f; ~. a$ |4 @4 ?; W当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
/ B" G4 b' j+ E. m能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
# j: O# d8 P+ D6 H# n1 Z要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修* r7 s2 q" l6 O8 i
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
9 k' m9 D+ r- v/ b. A" i置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
0 `8 _9 S) L+ t2 `- ?: psed, Perl,你会觉得那才是真正的自动化啊。
$ j) p- b/ l) t3 | U1 \' ]) o4 s" W/ r( s1 K
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全3 b% n8 R9 r1 }+ @, `( L- U% m
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱# d" ~: _9 X# C# `, T9 Q: O" z$ i
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。5 `4 X) `2 d( Y: I+ o I
7 [ H c$ R( V, {
各个小程序的完美配合/ h: ^$ m2 Q9 Z/ l( f1 F. Q/ ]
" X3 y( [4 G4 Y1 d& i! r6 ~' r
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能' p! I. P8 J. z
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
2 y' w& p" u4 \: n0 _1 O统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, % H: w. q2 }- O
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有+ x7 B6 r5 ?$ O q; I/ e! D
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
9 ~; |' a- S6 ^# ~& j2 [) ]vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
1 }+ v) @( I) e/ N. ^% [1 j设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
3 U- P3 k; b7 g( t8 }很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
3 Y% O7 a$ R) n7 G) M8 W的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可+ j3 @9 j3 Z$ v
以在自己的窗口里“嵌入”另外一个程序。( S* A: W7 a: p2 u1 }
- S: I% p; ?' @* v7 q3 R" k
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
/ N$ H) t# c1 h% R2 `下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
5 n; @7 d( _& j6 G% _9 b& k程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
2 f. x) s5 ^7 Y) f" n你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。6 v0 ]$ y2 v: k+ g( P; n
( J0 s* ^ G: M/ |+ j
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
8 `. E* [. i2 ~+ U3 Q己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
& `5 e+ S+ m& F( H3 G8 }自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为2 K9 M2 p5 b. |' [4 U. R# p
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器' |. [+ D7 @9 K7 S: l8 B u
的键绑定,菜单组织…… 不能 DIY!0 R8 y* c& D. P
% [' }9 G0 c6 c p9 T4 g
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
, L! Z! n1 x" [- g3 T8 b u' L么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版! i) \4 Z7 D F- V1 D
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
+ r! ?' i$ F# P% V( J. x; _拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是8 N) a1 _% N4 ]! C, I- o! g$ p" D
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和) `+ ]& N/ N& [- g2 m" R4 S
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
/ N- `5 G/ O/ I8 E. W7 e7 {种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
5 c' w. ]0 E( N; D因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新! L8 Z' q+ H* s3 R/ |
买全套配件!
9 Z/ [+ x6 _( \& E5 ^1 M
" C& W& F& v+ w; R, Y& V1 B; L而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
! F0 E7 x3 C- C- s. {$ q; V也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
& l* j" Z/ ` r! t! S片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给3 R' W8 M7 T. m8 _* {) R: ~4 A _6 I
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其" |$ Q' w! G% O2 m6 R
它 PGP 程序。9 X! B. I# o+ }- W' o3 ]9 r5 [
; ^/ v3 M- N, s
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
6 c; K- i. C2 t: p/ s- u+ i1 ?转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
( b% F3 M+ w* Y( }. `+ a, H% B1 W2 k4 M以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以9 S ]! K! A- B- J
分别得到它们的好处。3 A$ i* X3 z" I) T
9 G/ O5 ?8 a( L, [学 UNIX 绝对不是浪费时间
" ~- y$ H, @" [+ t% T$ Q1 }有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
# u! w/ U& c- F+ o个星期!”' }& ~) o5 q6 e5 u
) x# j8 C3 Q6 z% }9 C首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是' }; R2 [6 `" O, \
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
7 P, S0 E* A, P0 P; i. U* n& d的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
! D7 g8 D# \; o9 W2 r/ x8 {! x$ XWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
; U6 I: t0 j( h' Y% L% e机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
5 [5 t) X2 G e2 w+ a$ _& W硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则. N+ P3 [, f, J. w/ p- H6 q! s/ V
他们会在20分种之内帮你搞定。一个星期也太夸张了.
& G$ m5 l% d# `. r& y! i
' e, [% Z$ F: ~7 c$ }) l2 X: |4 b如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
. f* _" b, A9 T0 \会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
% N4 o( I* A' S+ x' ]用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
# I/ V5 M9 o( I. q" r
+ n% B; z. _7 v最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。# ^' P, J& J) _1 X8 J/ _
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模, z, ~+ m4 J2 b0 O
拟你现在的工具。4 H) a5 {7 R6 D0 L/ ?" l: r8 X8 m
4 m. j0 x. a! e0 K0 A我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对, W, }* p9 k. o" f
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,$ R6 y, D1 Q1 D
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,1 D) T4 s) @! U: ]; N
现在完全不经修改还可以用。
! \' S; Z% [1 j) p5 W% D& R
8 Q7 s6 {) b( b9 b. p. u看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同% j7 k, l" S% G: S
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
9 h+ r) A6 r' w2 D6 K. @/ K7 @能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
% `3 g/ J0 k, |; N' b5 Q要换成VJ, PowerBuilder, C++Builder, ..." t7 {8 |8 @3 B
3 s" Z- L6 i0 J$ @% X
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
2 ~6 R% j) w" O. p( EBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
% V0 B9 S# M# l/ `6 B! F断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
; b3 R3 A0 C* ]3 ]. ePress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用. x$ H8 }8 M; M$ k6 `) A
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
, N9 p1 {6 n5 \( j; d族的专业。” 这就是微软一手造成的。1 w1 x( b2 k- ~- g. ~& S/ [
) ?0 M, Q, x4 k) _. s这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
! w# X" m. b* i; S+ R使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工7 F7 M; \3 j' l2 C: m2 S [( Q
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的) e- W5 {* Y5 u$ ^- c# F# Z2 O
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
" B M# S& C4 [1 g+ A$ b车了。这难道不好吗?
1 n" h* v# A* ]* [ d, a) C: ?5 A& ?2 U3 ]( N1 y. e' q' C! z
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你& z/ s% c [# r4 o' N. c
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想$ M! r6 a. ^) S# x, C) [
要傻瓜型的“微软牌汽车”吗?我们来看看:" n$ P. i( O" b" W% I
7 |6 i6 o; J m你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的) z3 b4 q0 U& A" K; k% w# x
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换' o* w0 S; D: r8 R
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机+ G0 n4 M: J& i, {3 X) C
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
& n+ i& I5 P& h) e( c软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
$ h' P: J- e, ], z; J+ ]8 t8 l$ `, L
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
# ^) w* @! j& N6 |: h- N需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告/ A+ K7 _% G& p; T% Z) P+ m8 \
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家8 C3 ]2 r) V7 v' E x
人造成的一切死伤,微软概不负责。”! K% }; j, a7 c7 l4 D2 Q7 D* Q
/ l& l- {, ^' @$ y1 u怎样完全用 GNU/Linux 工作0 T' B+ X2 V. N% P, {) u
+ {3 f( }. \' P( y+ s说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。1 ]" [* D6 B5 M4 ?2 q/ f6 B
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理3 \6 u" e# g5 l+ G1 ?0 j$ d( Q* b
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
B# i1 J- S/ w6 p( Q而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程- Q Y# u! s3 u! m
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
+ Q3 J2 V9 {! j! J" k6 c3 r6 M% T+ }. i3 x. u
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
8 I! X+ v5 ?' i的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简3 n, o6 F9 \( ^2 a2 C: N9 [
单,而且效果非常漂亮。你可以看看我的TeX介绍。
, w {, H" {# p7 N
9 M; v6 m8 S/ f4 L4 b+ j4 q& L至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
* ^! x0 r% _; A视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
" [3 s" y' t3 i1 XMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
1 H; P! @, E. N& IMetaPost 画出来的。
* j- l, D9 f5 W% \: e9 ~
' w. ]6 T8 @3 K5 g I7 g我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
% P8 Q6 K) u0 q现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
7 d( W- ^( O" T' h9 K7 K这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
2 \% z& O/ |( [5 I* M$ \# W我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE, J$ x+ e9 P9 T* ?& b7 h0 _7 _
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
) S' I8 I2 L$ r) Z6 Y' ~! B还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运. @/ {, r# ?) I- w3 z8 P, s. B- T, h
行的。! u( d; E8 M" k$ |" @
4 u0 D! X& [- u' sLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很' o6 M+ E, a1 g7 [; o
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……+ x* c9 J" X6 z7 V- p+ X/ {6 ] y, F( E
7 c/ T+ j, |3 h& d结论
6 H/ k/ K! C( @7 |
6 z% m% B& ]3 Y w u- W) [$ W我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌' k! ?" j+ }* y6 H5 ] K: C
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追0 ^6 U- l2 Z& Q: w: T6 M, N
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”) m/ U9 b" G& f8 d l
( m6 L3 ` q) ~. V }UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。. k# ?: E% T+ b& ~, R! J) U
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
. G3 q3 e5 j0 _# J; k0 G; j W$ }4 V- b- P# |
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
8 O Y- A2 g1 E8 Y' ~; e这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,9 q/ G; f8 i; ~! l. \3 `
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
& ^3 ~; V7 q: E/ D6 E式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,2 E+ u: [9 F8 Z; z
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑4 S" ?8 C4 z0 T( y4 X1 J
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.! U1 y; q: E n! g
}, s1 |! ~& H2 A' }- }我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利6 }& X) J3 k r9 d+ L
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解8 X! r- H/ [! t8 R# _
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。0 J+ W8 p; a( j7 L- d4 }5 T/ L
4 o2 X0 ]( g- X& z3 {5 Q+ V" |附录: 我用来处理日常事务的 Linux 程序# T# `1 |$ v- T( x& ]" s5 d) Y
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
- n) t9 ?" k% }/ S# ]" U- `是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
7 X# X& ] a7 E# Q- u) j: d0 q你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
- p3 I+ l6 b4 C1 M# `工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
$ c, W$ C# ~ A: s% x! J0 f$ z8 S3 Q
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那# ~9 z# x: F5 {6 F2 y
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
: D% ?# h; h u+ P员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
) A3 o- K" O0 f$ A/ |机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
- T2 s4 U' ]9 |3 c会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
* c1 f/ e+ z$ n8 g已经很安全了。不过你有兴趣了解更多那也无妨。
1 C! `9 i. _ P# P
' h. R# V% Q" i' i2 D下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工) L7 O; O( Q8 g
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
' _- e6 L/ m+ {( p它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
* [* T( r1 g% a/ f很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
7 L# ]) x( p; S0 _辛勤劳动的产物,是可靠的程序,它们物有所值。8 p" V/ f4 A/ Q2 y, O9 y6 t9 O
|