我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
2 O; s& [2 r, {0 [$ N7 CWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
/ I' w' |- _' C! @5 }) J- A, W0 A4 S标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
: A9 d Y! \% C3 c没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
9 N; p8 L n1 @7 M' w1 l的先进。
6 ?$ M) ^2 ^$ k; X0 |! w$ B! Z- d `2 k! [+ ^% C2 q. A
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”0 S1 @8 E0 R* `8 G4 r6 |
0 n. m" k3 y1 ^9 y2 k看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
1 s) s! ]6 }9 e: c: {6 w没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
8 e, j0 d$ i W难道它们的设计者就那么低能,连个图形配置界面也写不出来?8 k- m0 s! X; H- c
' ^+ s7 C/ M# X" z7 u/ N$ ~, s
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达7 s; F {. t- I D$ P: ~
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
4 {$ D h: w: B1 l0 K要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修% A7 H4 ?- M9 M. m8 p
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设* h" i3 J$ [# o' K9 | l$ B
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, 1 |; N, `- O' M' F5 b
sed, Perl,你会觉得那才是真正的自动化啊。- `: e6 x! e! N
1 Z8 S( O3 U+ {# U& |3 G
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
, z5 Y6 _$ |1 B. H8 W0 }明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱- N% X5 ^$ f1 U4 G0 z/ T: z
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。; o, z2 I. n j* E9 q6 f: d
! U. g6 g1 n& E1 E) V) }+ }, p6 ^- d
各个小程序的完美配合& n7 k; r, X5 |: L4 R+ D! K" J
8 v6 W& q6 V8 v7 }这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能" G: m8 Y4 `/ P$ H w' v. a1 I
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系" e6 K/ h7 v0 e- a
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
6 d2 M2 m3 E# {/ {" a$ Egrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有9 c( e+ Y; R. |& X2 G6 s' k6 ^
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了 " G1 C: F: R1 C ^
vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经! G) G1 r$ @4 a& T
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
8 S+ v; F" Q; j" q: g很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做- J r7 [; ?: Y0 C/ W8 P7 o
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
P. b% d- r( E- ?! i& Y1 c) I$ P以在自己的窗口里“嵌入”另外一个程序。0 u r h: g) w7 ^
9 h w# N% K/ N: l在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows 6 G Q+ l5 C0 m% s# W
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
# E* L7 N9 J, [1 {程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
5 F' U4 \- t6 i+ ^你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
- F4 d; V: {( e; k' s% `6 S& B* k* {5 \
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自( B- F/ {+ E8 u
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, 6 z0 C* s: r' @4 m
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为6 N' q* C; \2 f% A
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器, X9 y. V2 I/ x1 C
的键绑定,菜单组织…… 不能 DIY!" G# F& I" u: _3 S$ |3 S
0 b; S: x, i% Q! |* M9 l- l. |
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什& ]/ y a3 c6 W j0 d7 G
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版8 z4 q# e6 n% N# q5 e
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
: D: v( ~0 A( T! c8 H拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
- \" r( c' ~6 K" l' w# R/ ~0 m大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
/ p: v" n3 k2 s' f0 ^/ s服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
8 N5 z& R/ p6 C种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,0 N( a$ j2 S3 F. O
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新5 g0 D: T& F+ b( F7 q2 e4 K$ J
买全套配件!
3 [/ \6 d/ Q6 i* @ } B
* z. o* z+ F, A4 _( h) k而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM $ j: {# I3 _ |0 E2 D: Y
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图+ a. {' m4 S# {* S0 f: z- T D, V
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给) E7 d3 W, v4 R* R+ P! @/ J; r
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其. q+ H& L9 C' e6 J4 g4 f5 o, N
它 PGP 程序。' F0 L9 f p- X6 |9 [! M
$ e$ w k- V8 ^5 ~# e4 O1 p7 ?9 t7 |7 w
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,) r9 F9 q5 i; w
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
! i% U9 Y: _; C0 w3 R7 N5 T( ^以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以+ y; s4 U- j- \
分别得到它们的好处。$ ^+ X) f8 v }$ S8 [: \$ g0 M
J/ _; I, D" T- f. k学 UNIX 绝对不是浪费时间
' X; G& H u) \& N2 s有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一0 {8 d4 S9 g! U
个星期!”
. ?6 A* j# m3 i! B# h! p: J9 C- I% Z7 ]- l/ F
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
# t. Z) s& Y. G& ?+ p因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
g, z! G, U2 U6 ]3 _& h/ t4 O( D的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
' c( R. e1 d6 W( v8 ~2 N5 cWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的& o& Q# P; q5 A6 T9 v! s; e$ x! U8 W8 R
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于/ y, S& O. k! G! `5 E, J/ h+ b
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
) @) O" }' u F$ N! X2 h6 S他们会在20分种之内帮你搞定。一个星期也太夸张了.
! T' {. X+ V. b% P9 G
9 `6 L. p: G3 Q; o6 C) ?0 u如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
" m: C# F& @% L: O会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只: T! }/ w9 L4 u& O" ]
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
7 E" K4 U3 i$ h( R
4 P j9 w- d, X最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
- J/ I2 {# I- V- Q% j8 |5 U你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
/ Z v6 T+ W E8 t0 H2 }- c/ ^; B拟你现在的工具。
2 }2 q. c2 M- L$ l# |7 F5 l) M' X8 F6 [
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
/ l# _) L4 g h没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
* i$ J8 [" }5 V5 u8 t. ?/ |. B: Z直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年," i" `' D' Q( P/ J
现在完全不经修改还可以用。+ t4 W9 m8 t: ^
+ W4 C5 V! G$ R' I7 P- s
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同% M3 u H6 \8 k9 J: V+ V
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
' p" n4 W% M1 {( f+ u1 Y7 u能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又! i. W2 i: F- l& l9 I
要换成VJ, PowerBuilder, C++Builder, ...
% O6 u0 L% H) C3 f& g$ D" p3 m. ~. |$ S4 j2 ]6 {
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
9 M j* `) R: s! k$ uBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
# D- X' k! D" \' M# Q: T( Q断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft ! V' d: N9 T5 A
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
1 O6 Z0 M/ e# B: R0 uWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
/ k8 n* v$ \% U9 I4 R% I/ }: V族的专业。” 这就是微软一手造成的。5 C; e- S; X# f s) \7 u
& m# V% T; B% D# K
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
0 y& Q" v2 r( G9 [4 B使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工4 ~ ~2 q) T4 i1 Q% j* y4 b/ Y
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的3 G- y1 @; K3 [4 [- A
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
3 h( O' X* ?- q车了。这难道不好吗?& k. ^% c3 W' ^7 N9 ~9 Z: n/ f
9 a t7 g+ H# _& f0 }7 G有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
; u# i& l3 E, Z; Z去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想2 G% ]# }2 ~. N' E! y$ u
要傻瓜型的“微软牌汽车”吗?我们来看看:9 k4 ?1 }% j1 V$ _' B: \
; ]9 U; a. b# Q, s5 H; ?% R$ c你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
- J+ I3 S( {' C) k7 S; x防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
+ T, c0 \* T, R. D! t一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机& t3 Q6 _2 H0 V! g8 O4 U
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
1 g' T2 k& x5 y% @' F+ |8 Q软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
1 [/ q. B9 D) M/ q J) y2 c$ c: j$ h7 \( x7 g3 \" N
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你( |1 i& [: c4 J+ b
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告7 h! _: a. W' M8 d! W N0 a
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家, U3 H( c# T0 C% z* X6 f
人造成的一切死伤,微软概不负责。”6 E9 B3 F) ^6 M! a H8 Z( f- u- p8 l, @
1 N0 C8 G4 n' O怎样完全用 GNU/Linux 工作4 m' T/ } p% \, C
6 h8 r' V' V! R/ {; O说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。% W$ z. t Q) e* m
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理3 j) [' }& g; z" @5 y. B
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。 G$ D0 T0 S) O0 T
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程0 _( l9 h. n7 h* A3 R
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。7 M$ F0 K6 o9 H a+ `
0 X9 z* b/ E# E0 R4 i3 ^
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便$ q8 h, C4 B+ |# ]+ Y* g1 ^) Y
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
" Q$ I; w5 H* t单,而且效果非常漂亮。你可以看看我的TeX介绍。4 X, @- t7 S2 A- t5 S4 P
) }, u2 C0 `9 s' w. T至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
|# ]3 e/ U) g2 b8 I视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了: f8 a+ b, b0 i' e6 w1 _
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
; I0 k% @2 w) }" t. ~) V' _MetaPost 画出来的。! p. ]( Z! q8 w/ u: S
9 m9 t' k2 M# }- J6 f2 @我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
. K r2 Z& H; A( O; B. O5 V/ ]5 i6 o+ K现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用! T. k$ I' g% M; I
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
& [7 e) ?* `6 Q* |( ~我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,# _6 z5 {- Z5 b! n; I8 q1 S
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序* x$ {8 }9 ~/ d: Y
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
+ K( |9 k2 _2 N行的。" o" K1 c' F0 M2 O
9 U" S6 b0 M- L2 v% K% [Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
5 S" \ N1 V) ~+ \( r4 h差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
; t8 P8 }2 Z( J% A* y: k& r N7 u5 L3 D6 U8 B
结论
% ?2 j1 p3 X7 a
% U+ z6 m S7 {3 }9 ^我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌( Q7 k" m1 S8 _
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
, h) o$ }* Y% g9 X# {赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
; i( @& M: J4 B- A5 f) G
; S. A# t; H4 V& p; d/ pUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。, W; Q* \ u9 x( {8 m
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
' x& l& y5 B# Z7 R% D# r7 j: d3 _1 L1 j% b, H
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
U+ ]2 A$ Y7 _. y2 e这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,3 |) o4 _2 U% g- Q7 D
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
; e. C, B: o* U" \式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,( n2 k8 o. q" h9 m O, s1 Q3 c) Y8 z3 a
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
@" W+ [) D4 Q7 e, @. Q/ M里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.& t5 H5 h/ x3 i. q/ j" A
( h9 |! P% `! ~; g. W
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利" M# r) Y* g, n m( x) @
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
. N' z8 {) I& j! u决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。4 t8 S) [' O3 d4 G. P
, U0 A; s6 E* g: x
附录: 我用来处理日常事务的 Linux 程序0 _+ s. s3 X. K" s- U; \. r! `( j- m; t
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
* d8 o: a5 u* }$ o8 }是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
+ u W; D, ^$ o$ o你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。# k* b5 b; E% Z, [0 S' o9 L
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。 ]$ o ^# t7 h2 M5 a- G* |
& ]+ c' f& H8 r% Z, z如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那, M) i% q, i4 h7 Y
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理, P' L) v. c+ N/ S1 h: l
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
# |* @' @" Z& e- Q- G机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样! \9 |# l% I# U" ?/ i9 M
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
/ c) m$ w8 w! Q+ p+ k3 H# k- q# a' V已经很安全了。不过你有兴趣了解更多那也无妨。2 o( V/ \7 E+ r ?; z
8 d2 @# F1 d* J2 b& `5 w( D( ?下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
& P$ }" K ]. \1 l( e; k- |程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其$ h: k) l1 n: k2 y5 G: G% k/ z
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们+ ^1 T5 Q3 L( M8 S' n- V# o
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人% h- @9 k# r4 v1 O6 q
辛勤劳动的产物,是可靠的程序,它们物有所值。
+ ]$ O9 v p& z+ S+ Y |