我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
/ l2 t) t' e1 Z+ RWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
- }* Y7 E& Y9 g8 h# Z标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来7 {1 n0 h4 k& c, P; ~ P# k! _) J
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
# y0 ~8 H& o9 i0 L5 J) r& G的先进。
, K2 G* n, f; `1 r' V9 j N2 j
; e% Q0 ?1 T+ j/ t1 QLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”# u2 A" \8 a) K: }: H9 K1 V
1 o( R1 ?0 T6 m8 o6 Y
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
, Q) u/ l3 A4 |* c没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
4 l6 f$ _, A) E2 ^/ k难道它们的设计者就那么低能,连个图形配置界面也写不出来?8 L! L7 g9 m, y% }( f) _ v6 D/ |: S
: Z& q$ G7 O) c当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达" ]. H; \# p9 Q4 f0 j7 ?; }5 E7 O# [
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需, z$ \2 T+ j+ i# \% z ?
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
5 z0 c7 p5 D) X0 K1 k6 l( r3 l改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
9 G5 e8 q$ v, |6 j# ]2 `7 Z- b置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, 4 ] {7 p" f) h
sed, Perl,你会觉得那才是真正的自动化啊。
3 m) S2 j/ }1 ^7 x- Y% G' m$ M# j! `2 e
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
2 Q8 p; |4 m# e, }+ `1 |6 D明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
/ m+ A: Z( z9 c! Z点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
1 o! |' J1 n" ]0 R; Y) r: ]# k* ~2 B( q7 h8 _
各个小程序的完美配合( s: I7 @+ s+ v& j8 k% c! @! d
6 K. ]4 Y; O' L, G6 M这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能% X4 s! c6 _% ^& g& z1 O, S/ t. d
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系; F; _+ F+ J& w6 [# {. h6 K
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, ) k7 _; z2 [6 E7 U) {
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有; [$ @9 @, J5 k& o. y+ o
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了 3 C& z( o* L' n3 d
vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经3 n1 i" @2 g1 g. L- M" V' }* _
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等1 m+ x3 b/ n c; y, l" o
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做; b. m$ [8 F" V5 U7 K4 l; `6 |- C
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
# z9 R$ }$ m# U以在自己的窗口里“嵌入”另外一个程序。
/ o0 k; P0 E. [9 J( w
7 J, f! x8 G: t* [* ~' }% A在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
8 g+ g( W0 R- n2 w" Y5 }+ _( U$ W下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定, \% q H! f' m6 i! a
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,3 z6 ~1 t- q/ y6 [
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。9 K3 ~: E' t7 w& a4 G
/ N3 c4 D# Q& A( C
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
' N9 c6 F, F' p1 F) @4 C( }己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, , d# w2 T! A' F: O
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为4 W0 ~/ y; k# |2 l1 @. E I( k7 I
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器0 J6 X: K6 D' R: H1 ]; e# X& n% }7 q+ T
的键绑定,菜单组织…… 不能 DIY!
0 ~8 ]2 s) N' G3 Y! Q1 m% E( ^* \; c1 V( }* w7 R3 W
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
# |7 Q( X! ~4 A3 p, r1 U1 O么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版8 y) ~, {6 m% i- J- M3 b
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球6 A% n ], M; y$ u; _) u. j3 Q" x
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
1 E9 h- {0 M: v- K& v大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和4 o/ h6 P- ~, i' P8 H
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这* }, u( n5 {3 I! ^8 A+ S* G; @
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,, z) T, J3 J0 u0 X
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新" Q. Y1 q: q$ u
买全套配件!
' r$ i0 M2 s) j& u; u# _
* [1 [4 Q& [& e, e% K6 E* W o8 p! l而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM ; }: k6 o0 q! ^% x
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图9 g% s$ Y i, j) H% }) N) ?
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给$ t% b; W) z5 ]$ a5 H4 k! r
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
0 t! P: S5 S7 K4 s2 g, k它 PGP 程序。
) X" v1 O" P ?9 e& B. j
4 W& l7 D# S( Y我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
0 F. N% m X/ a2 i转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可, X1 _& I, n* `; P5 Y9 ~, D0 {* f
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以. _7 T) L* |4 A8 m
分别得到它们的好处。
! N! O' F, l" e9 f8 G* M" ^5 ]% E- q0 s8 N& J
学 UNIX 绝对不是浪费时间
( p( ?4 X) I7 k" Q有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
3 K ]9 L1 k0 b个星期!”
8 {6 X" U4 z0 @
' x% b. |3 T0 Q7 H5 U4 m1 t首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
3 j3 P, w/ l; g因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
9 _6 K- U6 L5 ^* p( p5 F+ A的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为$ ?$ |4 B4 O& l$ B; I
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的$ i* M8 m6 a/ X; l! {$ l6 a B: V6 }
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于4 S" H' U! w; y, U F
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则' Y" |. R J; Y" [& _
他们会在20分种之内帮你搞定。一个星期也太夸张了.
; p0 D x2 u% b' R9 O- u7 S' w8 p0 g9 d+ B4 W3 d0 @# O' E& d) z
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定4 f1 j9 J8 i( a" ^; e: D$ n
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只# Z3 ~9 D* d& f3 c
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”" j! f8 q- H, Y3 w- m5 o
) N/ ^9 U9 D( B9 G# u
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
! Q& O" p' X4 t+ U j) d" q$ ^你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模7 C3 u1 l. U+ V. A: ?, p
拟你现在的工具。9 }' t9 \# ]5 C/ l- w% b4 V
9 S$ e2 b! @0 d$ O1 p1 X. V- }我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对9 }% ]0 R# B# ]9 V* K% b
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
T- y8 |! v0 p' J/ N0 N直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,
6 ~0 d2 d2 Q3 D" _; x5 T5 P( f0 [现在完全不经修改还可以用。* Y4 E9 M- P! w3 {8 W" Z3 m
# c1 i* W: s8 d0 C$ `- C
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同& Y" e+ x/ a) B0 o& [
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
( ^" {9 w3 h1 i2 |4 c能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
) ?& Q9 T1 D% Z, c( R/ D- f" X要换成VJ, PowerBuilder, C++Builder, ...$ d0 z3 q; U" _) }
5 @7 f( A& \8 n3 X' m5 C; W q5 B+ `
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
$ K* R' N& w( Y' g1 t0 JBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不3 N. `. y' u- o* U& }
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft $ ?5 l* K% h6 `; a5 I' C3 E: S2 K+ `$ w
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用! Z) r8 E- R' w2 v; ]! }& u
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
: f- k6 g0 F1 ^4 \# Q9 u族的专业。” 这就是微软一手造成的。
$ Y% S7 t; e7 B6 ~
& i* O9 Y& L8 x$ ^这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不, n* P# Q# q2 m* j
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工5 L j* v) @) X1 q
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
* s. ]* g: z3 d; Y8 e位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
/ M/ s6 |: K4 v2 t4 m0 o车了。这难道不好吗?
( U; I/ g F7 X3 o4 `5 g" X. \; M
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你' X z0 e& |9 E! Z Q. ]5 P0 q
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想- x# [9 `* c8 C. ]
要傻瓜型的“微软牌汽车”吗?我们来看看:
+ S7 _1 n8 q1 i, d/ {/ E; r. |3 p$ g. t1 U
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
2 P2 j$ P: X1 h5 H( G! l# |8 B防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换9 }9 S4 H3 ~/ n1 H w
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
& s* v5 K8 T' |/ k6 k油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
3 D6 f$ c( c5 ^: Y% c软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。! q( U @# n7 K, G$ M6 m& o; \4 Y, {
, s- V' A8 x* u+ N9 x- `
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
/ t$ A: T+ \" O3 q* g需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
7 W1 u) O; m {, H4 g" b0 n1 n微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
0 _8 ]* Q6 F8 }* g5 _5 Q3 G4 V人造成的一切死伤,微软概不负责。”
$ I0 Z! R8 r' N e, l: V- |. [ ?% X* z" B
怎样完全用 GNU/Linux 工作
6 C* G4 I1 B- Y3 c5 s0 n% f& n$ @( i) Q0 C H
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。9 V( q& e4 C9 q6 S
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
6 q/ L; `! [+ r" F汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。 ^, n `) k i4 U
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程# A+ M8 d6 D" H3 D
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
) d$ f& v: }& \1 F& M& [/ u. W) H% U" J$ n
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便8 ]! S' K( m; r9 H
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
( l1 @8 u q% b- e5 O- F单,而且效果非常漂亮。你可以看看我的TeX介绍。
' E/ g4 e1 Y' p' C# Y
- C% i$ d% {5 g& t至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
$ v+ J9 @6 @0 k+ o, O; @/ M2 g视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
$ k& l. H; F: E) GMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
* \& I% R) ?0 _7 JMetaPost 画出来的。- s) e, N+ O Z) k2 ~& f
1 z. D2 i6 A# r1 q& e
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
H/ P0 i* z7 k7 R% ]现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用8 M) c! j2 I5 I- B
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
; h3 d- w" X, s2 m3 c我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
" ~' ^/ ^* M. X; c6 E( ?Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
* X- C" m& v7 ?2 u还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
9 J* M9 H% |+ E! ~, N- F' z" O行的。
3 `# d* v7 W. M2 ?/ V3 W9 ~: m N% b+ J6 b" u) d- x
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
9 U6 ~ S* e1 T, V差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……8 y- a! t+ y" z
1 B5 q* J, u" e( D7 A2 H结论0 F- ]' b4 I7 U% a
& @# G+ |$ \! d
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌# c! B! u5 i, L, S6 U* r2 ~$ v) A
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
- D7 l( e( q/ a5 N( H赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
- |3 }/ G* |/ Z/ K: {" d( t, U
2 I4 F& c' T, b/ |8 AUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
9 D( }7 J4 m5 m& F H: ]" i+ A$ i我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。9 H. j9 @+ ^5 `# @
* @# ]- r) L8 c4 e1 G
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
( W5 J" q/ q* v9 B/ e这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,; `) ]& z, M8 W8 [
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方 ~/ u1 P' R' Q
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
- |( A4 k4 ~: J; }/ N" D; @了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
& ^) h8 F4 Y% J* Z# d里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.9 n7 m6 L! F5 z& c% ^
v! u, |- j" W+ Z5 P4 C
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
* h# O0 W( q2 g6 D4 Y$ U用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解) s; {3 ~; l; h
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。& N9 Z* w- k0 F
# r9 a2 W% {% L6 G4 {
附录: 我用来处理日常事务的 Linux 程序
5 K' C/ u' ?: G4 a1 r$ A好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
1 `; K4 H. \2 @! F" O2 i是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。5 j; H) _& q- Z6 ` [, `. P( R
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
2 x1 L9 z* }$ u, j' D工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。# U f2 R! [5 }; h. _ r
6 J& t c6 X Z( s0 ]# Q0 B* t
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
8 j# e# l- R, Q r# T, k就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理) R1 y' ]* e0 r/ T
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
6 y1 G# Y' X" H' z& h机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样% c& n( b6 T- Y/ `( w) I& N
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
/ _) ]4 V. ?8 w4 G4 n4 [6 W4 C已经很安全了。不过你有兴趣了解更多那也无妨。4 @) d$ ~2 z. I9 A
/ P' d. B, P; G3 W) [下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工0 F4 ~: e# ?, b, O+ q
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其) [9 |/ ^2 l% d0 x' r
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们5 T2 u }3 R7 \) B% X+ @
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人, r* q) ]) k; r8 F& I) P1 ]) \6 C1 e; Z
辛勤劳动的产物,是可靠的程序,它们物有所值。, B) B4 k& y& M+ S$ w: v7 H
|