我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得$ X; ~0 _* O9 L' `* X
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠6 p- H5 H6 A1 L! \+ o
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来/ G! t" q! }1 X% {
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows ! k) W9 Z+ y& W8 M4 Q
的先进。
: V7 r8 U% |( l( V$ v& s6 @5 v! [1 T( F$ t2 _
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
7 o9 v# A6 m) U" o- w9 g
e* B1 c7 Q' m8 X8 {看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
% C& B. S- y0 x$ ^没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?$ w3 m- `9 v. E8 }1 l# l
难道它们的设计者就那么低能,连个图形配置界面也写不出来?7 h" @: ?4 \0 E7 @' t2 N
9 w7 P3 a. c! h7 r/ B0 {" i当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达8 @, z2 L1 w" ^1 x/ e6 C; X
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需+ f4 S! f; B) M* C
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
3 [: J9 Z; J4 ~8 g: [改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设& g& U g; z% A
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, # S" o- Z; o* {: h4 b& Q
sed, Perl,你会觉得那才是真正的自动化啊。& H ?, A8 ]7 a' _' u2 o; {
4 w7 k3 o% G! Z5 N9 z
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
( o# L% B/ c( s- T% _( u明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱5 F w6 B2 ?2 q4 k- S. C6 I
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。, O. \, Y+ u+ }5 b$ N
; M Q) x- K+ ^. M" ^% W
各个小程序的完美配合8 u: a+ c. ~! v: D8 u e8 D0 z) p0 g
2 O. E% u/ N7 K# u" M1 U" i
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能# z! T# P6 j% T. {1 n! _+ O' j0 r
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
) }: u; F& o4 U& `( ?; B* O统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
* g& P. b' ?# L K% p0 dgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有! y! r4 k+ |1 h, ?; B
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
: t8 y, F2 K# _* y3 ovi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经" C# q! W3 K! d7 d3 o
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
; [: K) U& \9 J- A, m4 [很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做" h. `1 B* K* Z z. T( u# s/ V
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
8 X j/ E& q/ K8 k; W& q S以在自己的窗口里“嵌入”另外一个程序。2 A( f. j& b" z" V% Q' X
# Q8 C- y" C. s1 f& @0 M在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows , l5 d5 w' E; d8 h* f
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
; \; ~: N: a4 {程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
- b- S4 j$ y( ]' T# g你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。1 h* r; D) _! S( [! j
$ H. x# }& j$ B
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
1 E2 D: u1 ?1 K" V* K己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
9 I/ L# V, X# d* I自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为. a$ P2 `$ ?+ [/ J, n/ r" o* A/ E8 g5 C
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
0 @& T5 f, q, h2 x# m的键绑定,菜单组织…… 不能 DIY!
0 p# }: a$ k' b( t: u! l) ~; u7 c# ~7 g
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什! a4 e# R1 o m2 D3 H. F. m
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版, [* X! _. ?' W0 p
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球/ X: g# |4 G+ l; }
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是- V4 y$ Y+ B# g$ M& f8 M
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
! C* {3 X* L K8 J服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
& w, t" d7 D2 q2 @种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
- d. H4 ^2 J+ w K9 P# i, @因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
5 o. s; x0 Z5 G; C+ X# k买全套配件!
2 F, v+ U; e/ l, k; Z
`- A1 J0 n. e* t% d而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM 5 e9 P8 g! [: j7 D* d4 M t
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
; ~5 z' X; I5 l2 v! G9 W- h片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给) |8 H" v0 F' [& ^' {5 H3 ^
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其1 Z, u: [9 P4 y y9 S
它 PGP 程序。. l% b' a4 u' w
1 n. T" R4 h' H5 ]. Q我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
* G" M( W+ V4 C* \4 j5 I转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
4 p( M8 h$ [. e- E! @8 N' w以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以# |. g: I- g; d: E$ T, x; B
分别得到它们的好处。, e) p& n% a8 w4 t" W9 r: B( H
& i& I0 S+ |& U8 r+ ]" t- O9 W学 UNIX 绝对不是浪费时间 `% d& s1 v. T3 z
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一' c/ g8 Z. F, p6 u% ]
个星期!”0 A; a9 R( W' M9 T: |/ r6 D/ d5 K
( v3 B% @) `$ v# Q9 p% v首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
- e7 L" w% B& O8 G/ @/ A$ ]因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
" I9 i4 ]7 r" s4 T的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
+ S5 g5 ^: K0 xWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的& ^$ \5 l ~9 l1 j" Y1 o( E) T
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于2 v, B4 s8 L! ?& v7 F* r
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
, t$ d0 ~8 Q/ G' ~0 f( M! n他们会在20分种之内帮你搞定。一个星期也太夸张了.9 M4 P$ a; V# E( D+ N* Q. B8 k
& j& U5 Y5 L9 a' f, {4 b
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
9 M8 V, O, v8 c- T* C {% U* F, n会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
0 Y! r8 K% k2 o& [" {, g用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
4 M* o4 F1 Y: U$ A- b* b7 }* x: C/ |9 V
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
0 u: H7 O! k c4 y& @: V你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模 W7 u* N% Q/ L2 U2 _
拟你现在的工具。
- s7 y) D8 t) Y3 L4 d+ q+ C# u! I
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
* H; D* h' G3 B; ]; r没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,/ J4 W8 m: U$ Q
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年, n0 ^" j0 b! u# H9 {( A
现在完全不经修改还可以用。$ k* [+ t2 `3 C
; m5 K: L) k. {4 A" i
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
( u5 O* B$ [) j了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功* m- z( L3 B+ r6 Y
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又; Z( i6 P3 } A! U- x) s6 I S
要换成VJ, PowerBuilder, C++Builder, ...
5 D p. |" N) B+ r Z, p [
4 H- X2 r7 K, O& q1 h很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
! b% h7 N: W" C. qBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
9 w8 V# F9 r& Z5 w3 V1 f) X' x断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
# y8 a2 R4 |3 _ F% R8 z+ ]" K# d( {Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用+ Z. I& j; l1 @ V0 z8 [& t/ N- C
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
% f) a! W3 [3 I# [ i* Z族的专业。” 这就是微软一手造成的。
! |' {2 e$ v( n9 n0 n3 ^7 V" q8 z* N7 p" w$ H) N
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不6 W- ^6 O# g; J2 Z, }
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
/ X- N3 Z2 m, @, O5 W8 E+ g具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
1 Y/ l2 d* M' k6 R位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修7 D/ P( F+ N* ]' K f
车了。这难道不好吗? b1 ~$ m8 T f0 C* G! E7 b5 L
1 _. |: }5 Y5 j) A/ w/ g有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
4 X7 c8 V6 z- |& J/ A2 G9 F' M/ @去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
2 N3 c& s8 E7 w要傻瓜型的“微软牌汽车”吗?我们来看看:' C0 t8 Z* n w* R3 A+ M
$ q5 i3 W% p( B7 D# i
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
0 \& N0 H1 x0 q9 e防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换4 r" o% B5 l, G G
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机6 M9 s, p! t! s
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
2 N8 `$ B4 H3 s软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
1 h6 p6 ]6 k; Y4 |) n1 O- |1 W- ~! u! h+ {6 H) F9 Y
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
1 O# E' G) l3 i; j& H2 l/ i需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
- `5 t9 M5 [6 _2 q2 A8 n微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家, C* g. M7 w% W. u, i% O4 l: X) z
人造成的一切死伤,微软概不负责。”6 m: M: I! I H2 l
) S9 }2 B3 H0 Y5 Y- E) @! M
怎样完全用 GNU/Linux 工作
% J6 A% s" Z2 T2 v! F* u i/ p2 M% c2 m, \# J7 a5 Q
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。
1 Z# x' k' Z% g半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
# n6 S1 n) k# @汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。 ?8 {0 y$ V ?4 R6 ]
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程' Z- Q2 ]- R+ ]
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
" I$ k6 }' X* p$ Y& k, f: l# e
" u- o a/ W6 _: H# z# Z我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便2 I$ x7 x9 L; N' y( S1 K( J
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
0 [1 J3 Q" L( {0 {; t单,而且效果非常漂亮。你可以看看我的TeX介绍。. M* B7 G1 g& ?
/ _* a2 B5 T* p* ^至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
6 o3 H8 O* M" u6 _- ?5 a视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
' F2 O' f0 A- }* J( e, QMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
* s8 }. T7 E7 [; {8 g8 _MetaPost 画出来的。
$ u/ U5 [( B3 B
9 P2 y1 c1 R+ U6 ]我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
. {' J$ _' r- e4 C' @. j! f1 B* f7 y: [现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用* ?* G. R) @, c$ l! }8 N
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
/ J2 n* S ]9 `' E1 I- Z% o3 M我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
! [7 A, R1 d( F( [# ~Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序3 u6 W+ \1 z% N
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运$ t# e, ^9 ]2 x5 t
行的。
1 m8 p% L' Q, f' U: Q; ?; ^1 i1 G' M" J5 I, m' S6 X4 \; l
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很; B. |# J X" p! T. h! B1 T
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
$ q) n( j1 J4 n9 h/ i- Z. E" d/ j, @
结论
1 c5 ]3 l+ M% u+ s$ e
/ w9 c" E1 G: j @ @' X7 x我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
3 |. q8 ^. t5 v输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追3 `1 `( R6 a1 r5 c: }1 t! ]& `( H
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”+ u+ A. [# P: a+ j9 }$ n: l. k0 m
, w/ M( Y+ v7 N A3 V& dUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
4 z2 h0 g, r* C. o- i0 f; i7 I我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
0 Y2 c/ O9 l5 G/ P6 M8 \' I& U- B2 E" m: R* {
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
; ]" B) n5 J( P这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,7 k' K0 A+ A" Q( @
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
8 k% K6 J2 T+ t' d2 C式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
2 s: J; m) }) D, H; o了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
) F/ `+ m$ E/ `+ W; ~里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
0 C9 v! ]7 s1 [
: y- g/ A) _, ~/ x我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利2 _8 D. W4 s8 C) d! A+ x4 t
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解& t" B) S8 m2 W( j% L
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
( N# G' {, g+ Y
- e$ o1 H$ {( Z, H附录: 我用来处理日常事务的 Linux 程序: N% i2 z3 a# l T; x9 e4 @
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
8 a, O: J, K0 o是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。9 j- T# g1 b- f8 H/ O) P
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。4 B6 Y1 }. C# ~7 M
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
' n+ \% h' j0 G- q! }2 l* i
7 O* J. l3 g! z7 x1 W如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那( Y7 F$ M" a3 @( H# K( O
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理3 N" T: q8 g0 G
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
3 P U3 D1 ^; {7 _+ v/ I4 M* n机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样# R% j8 n" J. t! x+ Z6 }8 j% O
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省7 K; Z% O4 {+ R6 }
已经很安全了。不过你有兴趣了解更多那也无妨。5 e0 M: `* j2 D4 t& W; z- w
) q* Z' @ p" ]' j& \' ~
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
" U$ y+ k8 X, u- ^$ k程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
( U) \9 y# w! b/ _; |它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们; U/ b6 @( G& }
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人+ K+ O7 K( a/ I2 a, s2 k/ b
辛勤劳动的产物,是可靠的程序,它们物有所值。6 M0 k3 }. [) F/ p) R0 m
|