我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得, q: q9 ^( H" B0 \
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
3 Y: V& `: a0 g ]. @标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来' `4 ^2 f- a0 @; o: j7 p; E
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
" w8 c" m2 n4 `3 B; Z7 u; S) H" H+ z的先进。; G4 [6 X4 W/ u2 ?4 I
4 e& C d2 G$ E2 K/ ~ D: p- K: CLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
& B8 v) k9 C3 W, d1 e0 e2 V
$ f) d# A) R! [6 y0 z2 I& X& x) M' v看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
: y1 G3 }4 S- t7 B没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?; d- ~0 v2 w% Q3 f% n
难道它们的设计者就那么低能,连个图形配置界面也写不出来?. `' j& Y* Y- s" i
# l5 l. `# ^8 i3 a当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
. P) r# W0 K) j* _6 i能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需: }/ g, g! x T. G
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
x% L' | V" ?7 u' f1 u, _改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
5 O5 J: g% e, w6 I8 M6 z' G0 E置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, * S: G+ y" B3 ^. D) O6 Z
sed, Perl,你会觉得那才是真正的自动化啊。
/ O& r/ M2 ?7 A6 I
$ O9 q' _; i" P! N/ k- B鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
; X. W5 H. o. T明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱0 D0 A% [: c, y& G
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。- V" _# f- {1 M
5 C( _- [( c) S
各个小程序的完美配合! w$ W( Q5 X" {6 e9 W7 \
6 D: T, e S9 z W$ y: ]& ]% ~
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能: a7 E) f5 l1 ?
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
8 ^( q$ q2 s6 e3 F# O统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, # v6 t0 I! [1 X! @
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
) w. H) }' l8 f* B. K2 V一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
& r+ G+ n' x5 d3 c c) a% Pvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
) X% d- B" m- T8 j3 I0 f1 [: k设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等) B% ?* r5 p$ ~7 b
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
Z; N; p2 ?! A的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可, J% N7 I, A& G8 k& F! A' P1 [4 h
以在自己的窗口里“嵌入”另外一个程序。
" ]- V. A! ^9 \- C* B: U' S: N* d0 D3 [
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
$ ]# ? a' A" R2 g7 y下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
2 D6 \ K% `* K7 j# ^! X程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
1 j S4 N* O1 t' U你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。; h3 @: d8 f5 n3 L$ z: O
+ l0 i7 X; X/ l* L/ o7 tWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
- f- u2 x" z' w- W' H9 B己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
|9 Q4 b8 k. N自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为1 ?6 b7 n% k# }2 S) E
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器, @5 d! m# H" _* g
的键绑定,菜单组织…… 不能 DIY!
$ k5 Y7 v, [+ j$ h3 e) b2 l; x3 F. j& E: d
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
' @+ |5 I% z# D- T0 f2 n. A; O么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版$ i! K$ N: D, i5 ~
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
" R7 r* m3 @( W% {& L% T* n! M拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是9 v" u0 q! I& n6 r6 s% {9 a, A4 z
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和8 E) g, ?8 E: k2 y8 G. E
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
) w7 [/ M# s J- o种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,' V; K) L A0 O: n% z0 s$ ]' o
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
0 D4 A3 V5 z2 o" U8 D" z0 d3 r买全套配件!+ R6 c( u) ]9 h" j. k. i
9 u& ?4 H/ v6 R' [
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM ! B3 `% [8 u9 P3 k
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图1 U" K0 L s& S" l
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给3 S7 a5 Z& n& e- c" [! W" g
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
5 f+ r* B0 Q- R4 _+ S6 T$ e它 PGP 程序。
2 H0 h6 b! E& } X1 a, g5 V' G: j2 a$ T, s3 \2 Y a. q8 Z Q
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,( c) ]# O& ~! X) m! Q1 n
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可) g% e ~# y) e; U) ?9 w6 ?
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以/ ~* C7 z% V0 n* \
分别得到它们的好处。% G% Y- G6 M2 P& {
2 V" c6 t- ? y' `' W
学 UNIX 绝对不是浪费时间
0 N1 s# H/ N& L X. I) T: w$ E* _有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
, S6 j4 M( `" L个星期!”$ p- b: L3 @$ n1 b) C: Z- E
g8 i$ c" m V2 I5 L* D
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是1 H( W1 {+ p: y& @. s5 |
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
7 ~, T9 z: L+ G8 @6 n0 g的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为$ x# O0 K# i7 Q R5 @
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
% D% n) C. p% r机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
1 L$ W0 S' U X* Z/ P, B硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则6 R6 S. s4 [/ g. d/ ?
他们会在20分种之内帮你搞定。一个星期也太夸张了.4 ?% L; {2 U; |3 r# n$ [
4 X; \: b' S* k如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
* D- @! D# w# ^会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
! l O! D# @/ G) h8 A, ~7 o9 |. Q用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
) c( k4 e7 r9 K4 Y+ r0 G
. _% R) y3 _8 z7 H; S, q9 R最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。. I9 H# U. [+ d; v2 @/ l5 T
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模3 L0 V/ m, j a9 F
拟你现在的工具。" {/ l: v# W p) R! D! C' s
2 ~" k, w t6 j( R7 A5 g4 G- B8 A
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
' j( ~7 l! Y7 O, r1 n( y& u没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,2 ~9 u4 N; Z1 a
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,7 w7 g& k) A O, T3 K
现在完全不经修改还可以用。
1 z# R) b: z# L+ ~; i4 l$ O
, }. k w8 s2 M$ B5 G看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同& I5 B3 J. X- L$ b
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功2 `: K' H8 \' R5 ?# D6 N
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又; }! {( [9 C+ L4 t3 |1 f4 j
要换成VJ, PowerBuilder, C++Builder, ...
1 `7 |) q/ `; L+ Z9 o$ J0 e0 h# `1 ^6 N$ V3 J" o7 J' |+ T7 U
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ $ w- G- H# R9 z+ O
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
( {+ z( p7 n) r- Z& Z5 l% C+ G断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
) B/ l, ~% m2 d* a' V5 KPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
2 `% ^5 z7 f+ P I$ S2 V! w( _WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵! z) k. p) ^+ x" h* z
族的专业。” 这就是微软一手造成的。7 L+ c6 L' ^9 l5 O) E6 K* v# E
% [/ p6 ?5 O3 h; D4 ~. ^这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
# i1 ~& F( D" z使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
& U8 h3 K, N6 Z* e K' n `0 z) X具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
6 ]) l1 t$ B: o: t9 J6 O3 ~位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
4 |0 E0 L4 ^$ u. K" I7 Q车了。这难道不好吗?( [+ _+ Q: J. U# w& g+ ~
; \; ]+ O# I& Y1 o* T2 U4 A有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你3 f* @" U7 k% z7 \$ _+ u* g
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想! M9 ?- J' @- O& S l( y8 F6 d- N
要傻瓜型的“微软牌汽车”吗?我们来看看:
/ [! O; b- Z% s% y' e8 C2 Y7 o6 k4 R' T9 \
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
# O# o6 G2 c* M. O& T8 _8 F防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换7 S$ k1 z, H h" n2 L6 _7 g* @
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
: U. h/ n% z9 m6 L" n, K) N5 c: L油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微8 ]5 `6 Q# H5 x/ T4 P; S' g6 Q
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。) ~3 }; H) B4 d+ {% N
" ^ a. |: f) z+ ^0 F" @' D最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你* {9 A% A( c: u5 x. y* |. x
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
& Z) B( ?/ d( R6 M7 C2 F微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家6 W* @+ U& S, p6 b
人造成的一切死伤,微软概不负责。”
: _2 @& x2 m; q3 J5 i( D
9 o. r/ N2 Q" L9 w8 z怎样完全用 GNU/Linux 工作% ~6 d7 V1 i' v/ z; ^5 t8 \* R
1 s; e( s* H: m2 a, ], E
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。) f# L8 T( r* U; i5 S6 U
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理 z9 |+ f& d2 ?, l3 Y$ x
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
4 N) X: ], v+ Q% N5 J而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
2 w7 s* A8 t" b3 s+ g: X% R序,信件,网页,LaTeX 论文,MetaPost 绘图语言。0 F' d7 A5 Q: ]" l: X2 y
5 }6 @4 V! [" ^4 X: ~8 u我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
; {! v7 x" z: ~* Z的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简- R+ K' O& C8 I8 X' U" i" ^" P
单,而且效果非常漂亮。你可以看看我的TeX介绍。
0 K b1 {( |$ K) X M; c
* Q$ d' c' I! R) d3 B至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
1 q; a- _8 Z8 \" v视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了' f' w% L# D" N3 K" H. x
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 ' a% k6 V1 C3 n. V
MetaPost 画出来的。
% T [, [. p# n! ~- Z, ^( v, w v9 Z% w
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
8 B& r9 m0 y9 R% B现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
8 o5 @: x8 K, c. Y这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。5 A1 w# M9 H2 _; r- A
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
1 ?. Q9 c+ n) s: J0 X- `& bGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
% `4 d; X( M$ m/ [- W+ G% R: m: O还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运# w& h: G* L. Q3 G0 C
行的。6 g- g" ?. o2 ?5 Z
( l) D. M8 r3 s! w1 z2 e8 x3 fLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很# V, `$ b: Q0 A) w+ J i
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
6 g: P. V; z0 M+ _' l: r+ W( C% @7 N6 C
结论9 g* A3 U5 ?- s$ A6 O3 O
- C1 s8 \9 S/ D2 l1 O
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌7 S) T+ V/ L* e( ?
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
0 r% Q* z; H6 F赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
2 g3 H2 U, J+ Z* i
/ M% E3 Y1 C8 WUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
, c/ k! K' f* B1 i我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
7 e. q; x0 I9 ?' {7 ^- H4 _+ l" \0 S- N' N' }, x8 {- c6 T) \
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
! ?' V3 }5 ?7 t3 u/ K* u) X# @这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,- M* _$ g, ~& P4 G! ?
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方8 c/ ~' ~& x% _* {; j1 g' Z
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,# K, v3 f5 o3 Y# E. t5 y! ?
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
6 P7 k- I6 B. b! z# E1 O里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
. Y+ h, o- B" V [0 u; x) S8 T: v$ c8 K' Y$ n
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利- g& q9 d5 K/ l
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解! ?5 k7 E# o% h4 ?1 _" q, T( [
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
& ]6 P' r+ y1 g5 c; G; i
1 f6 B/ Y: ?$ p# @& p/ w1 B附录: 我用来处理日常事务的 Linux 程序$ @, x9 C/ t0 \1 Q2 v
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但" w( b$ f8 S8 W: W
是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。7 C Q3 p- ]8 p$ ?# s( K
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
2 {( ?+ i6 s9 z' Q6 A( j工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。, y5 D3 ?, P# B- T
% _( p- Q8 R% U9 V. C+ t3 P0 W
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那& E2 D+ s( N8 p+ |6 H) q7 r$ \
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
* Q- ]) m8 a, u: c' V员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的* {; {2 p& W% n$ S# x T4 V, O
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样+ Q y* `- d" ~* f+ T/ G" }
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省) U" a. _7 s: N7 f
已经很安全了。不过你有兴趣了解更多那也无妨。
! R" n7 T! |1 N7 p6 m2 v
]0 @5 z# k0 |: G, s9 @2 H下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工1 m5 l3 N" Q7 u
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
" r z! T; N- v- N. W它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
! q$ a2 b3 A7 d2 ^6 U0 _7 L h很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人; J n3 y4 Y7 a- k& `
辛勤劳动的产物,是可靠的程序,它们物有所值。; f/ Z) ^, X. ?& a9 r, Y% B
|