我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
$ x/ m2 n& ~- I: D/ N C9 ~Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠- m- [3 D6 b4 u) T+ A$ F) }( f
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来9 C: S) J1 y' R& Y- Y
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
) @2 _& k4 G7 c3 @. ^$ a的先进。1 Z" u& O% L6 ~: J/ f1 B" H
+ c1 g3 l( I5 A4 s3 |5 Z) b8 P4 H
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”& W, Z) \4 |, [# i) d2 }( Q) t
d7 d; l5 q2 S9 S
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
) q$ v2 J' d4 C% C8 i没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
r+ _, ]) u$ i8 J1 [: k' `难道它们的设计者就那么低能,连个图形配置界面也写不出来?0 X! R/ L/ H. I) E, P! @$ K
5 K0 ~ G1 v$ W, C
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
9 ]- `/ N$ V/ a# X" W9 x2 ]能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需9 Y: B* J( f5 m) m- b n
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
4 P% I. V2 O2 m3 U6 M& \& V: Z N改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设5 R0 z! d7 V7 x
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, 0 _2 Z, e6 ]2 ?3 S+ P
sed, Perl,你会觉得那才是真正的自动化啊。
! K/ F; d; B5 }& a; [) _) @$ W# A$ w2 `
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
- j% D% g4 S2 ~$ N5 D; K明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱+ [# Z9 w9 k9 p3 C' G( P
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
6 [6 U1 G% x7 ^/ w' o) v6 t+ a6 T
各个小程序的完美配合
* s6 c7 [* c# w; h
- E' r& [! `! i这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
% l( ]9 a/ z* X7 F( Q$ {" h: Z/ @力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系1 A5 }) [/ @2 j
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
8 A* n. x) A y* ]5 n1 N$ L9 ~. t; {$ rgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有1 G9 ]& Z. T6 ^, y8 u0 i- j7 y& g
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
/ f$ b/ U G, y+ Fvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
0 i Y: r. g$ y* R; B2 m设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等; ^& I& U5 M" F; V# F8 Y
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
! k% v1 ~, m$ N) f/ d的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
' A8 {3 D$ j2 {7 ^/ z& N: J1 \5 Z以在自己的窗口里“嵌入”另外一个程序。7 x+ D' E2 `# q& V+ T) B5 @
" L5 g% Q. o2 Z, \7 b
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
0 H' M; `- {3 G8 j下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
, W% p. W+ B" X0 Q程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
/ C) D8 m* h0 T% ]你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。# F Z- M8 L% o- d0 N% a, e) @
# k1 M7 z2 H% g9 T
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自" u% h, _: w$ W* G) \5 N
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
, D* c1 q6 ^- h9 s' t6 A自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为2 c& A9 ~1 i8 B& o+ M
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
1 d( y! Q7 {, y4 D% N% _5 V7 D的键绑定,菜单组织…… 不能 DIY!
' F, d6 \9 K- v' @" X
) [* J0 b0 Q% y0 J- a你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什8 Q5 A' z5 l2 ?1 q5 S
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版/ x y5 b4 ]' S" [" y$ h
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球3 Z' g, j6 X! o3 Z! J
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是& W6 }- j7 u3 }- s: m/ M5 C
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和, {3 C2 R/ S4 R1 O
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这( r! s3 h8 D& L- |
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
5 s& W1 J" ^4 r, A" d( D因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新) q" b6 ^& }- h8 X ~
买全套配件!
0 Q' l/ Z" q: d3 z3 Z; [% {8 l. S( u. w9 ]: f" u* D% X
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
" K6 S. E4 F- C- L* b) c也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
, I! k% u! H; i( e片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给0 o/ l. k- y% K" Y9 d- n
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其. t# ]0 ?/ ~& R8 o* P1 N/ O. }5 K6 v
它 PGP 程序。
4 y: M+ ~! |" [
1 e2 H. G7 [( n5 w3 D) |, F我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
9 ~1 g! p) g' z0 C/ m转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
. \# b) ?( A, g3 ?( n1 n& _以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以
1 M7 T: z( A' ^: d% D+ L3 x分别得到它们的好处。
$ d- g" C2 A$ A, y6 H2 u4 [4 B7 @* d3 R' n5 r5 b
学 UNIX 绝对不是浪费时间
8 U, A7 S7 F6 C; X3 d& l有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
1 t( D, F" j7 G+ l9 Y个星期!”. B' |) Y: T/ ?% w% \
9 n- y% {" r0 J2 h( w( \
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
: m8 l$ |9 n! W0 _因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows $ p! ~+ }: V/ P' Q b4 p v) R1 o# M+ V; M
的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为/ m e* ^$ K% }2 A# s* Z% x
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
: k, g5 O4 l. F$ @0 B3 \机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
* L9 E5 [" k; C6 O硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则3 l$ X/ h: a% F+ S3 w7 l4 k, ]
他们会在20分种之内帮你搞定。一个星期也太夸张了.7 @7 U; @5 g( d' J9 R
# L2 t) ^# N1 T6 S8 F; e如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
0 z. M) F3 A- o" j- z9 n会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只' g, g! g8 t, f1 |* \; m; w5 c4 p
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”, c# @3 f* g* X* _* A" q6 a$ N
7 H, \ z7 I" S# I' D最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。" f3 _ a% d& E) ]- t
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
. j! K9 w# k& m3 s. {拟你现在的工具。
( i1 L; J, l+ R8 n8 b' @& p u
6 b5 }8 u. b& t `' X我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对/ ]* H: T* i/ ]+ b7 Z, H
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,2 ^3 E. b) k5 t( Q4 X
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,+ k3 R. v: m9 G0 e% D5 F& U6 J; x/ u
现在完全不经修改还可以用。
$ s0 K# {* J8 g2 r+ W2 g6 M
s" _# G# J2 w' t+ z看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同+ ^- |; Z. ]+ q' v- o
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功6 c: A3 B. K4 u) e" [
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又& t! \- P6 D( d% J& \9 Y* e
要换成VJ, PowerBuilder, C++Builder, ...
) C( n. o0 }* k; X: k: g
% Q0 L: J' D8 O) B* T) c很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
8 S( p% Y3 [/ V: K v" h0 c! SBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不' X9 }/ H( B: V( p1 G6 O
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft ) ^/ s$ o" l. Q0 { m2 U; _% p1 ]
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
9 S1 u, a, \( Q: VWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵) t* e( l/ q: o
族的专业。” 这就是微软一手造成的。" B2 W8 k8 E) r, v6 z
' Q; j s3 Z2 L这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
* g7 e4 I0 P5 d3 @; t使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工- M) V+ r( o0 W( K$ E
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的9 ^5 w2 C! a1 r" ]1 D% Q
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修. Z# D, l, M( Y+ v! a' G8 U
车了。这难道不好吗?
; d" C* x# I; z' x- \7 L- L
% L: J- a1 Q5 K9 K8 y. m有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
- z% B, }3 N9 Q4 O去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
% A+ y. ~1 W; ^# g3 p6 t要傻瓜型的“微软牌汽车”吗?我们来看看:
4 d' v/ G3 m7 F
$ t D5 \3 X) k8 c你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
! \. v5 y1 u7 B) X# K; P防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
) {: C" A1 g: x7 ~1 u$ Y8 j, [一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机, m, `+ b9 Y) u# x
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
* L/ K3 N: p& V1 J& c软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。0 ~* _( Y; t1 Y2 I9 M
2 \0 M5 c( W/ {2 K( u( @+ t
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你6 C F3 o0 U/ K+ Y3 h
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告9 C/ t5 l6 h9 I) G P+ g
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
9 h: x- q0 `. j/ A% y- E9 V9 ]4 R人造成的一切死伤,微软概不负责。”5 m) g1 r8 L8 V# w* Q. c z
" C( o" i7 M5 K. q怎样完全用 GNU/Linux 工作
/ A- ]$ ?3 T9 }8 B) F: \4 G$ Z) [& Y
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。$ s$ F; e2 V- v6 z: ]
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理7 C: G& i( w% h2 p3 g8 g0 _
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。" _5 F% V8 _* u/ ?5 \2 T( ~
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
& C. v, ~$ r. k8 d9 j. V# u' }序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
& j' o* k, C4 s2 k+ l% \( V2 X% y/ ^3 }( _+ ?* g6 Y. F
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
+ y; ^6 [, u- n' O( k的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简 N4 {1 K/ R& _7 w
单,而且效果非常漂亮。你可以看看我的TeX介绍。/ H3 X1 G4 [, d( x: I
S( H! J$ g: C- {
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可 ] C j F {, X
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
0 N3 f7 j5 i7 d H5 t, J5 GMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
6 O* K [7 b7 H3 L- }, UMetaPost 画出来的。
* a! z0 G3 [5 F
6 g! T+ I: z& ?我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
2 o. Y4 J: d' F1 c- c' B0 B现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
. v. u' B0 o" z$ i% o; i: p9 ^8 N2 K N这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
0 ^% Q0 r; N' `" Y U" S+ ~我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,7 q9 W. J) h6 K3 m# W0 z; z% r
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
' Q U |% [+ F还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运3 y( F' d# z. c! \! e* L
行的。0 o1 u* R0 G* E( E/ G6 `
6 F- n8 I* d6 B% s9 P2 t- y: C4 ^
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
& \! J7 |3 b- w* ~差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……, X0 U* E% ~. o9 X" i/ L
+ r0 H$ N F2 h2 J" [; A结论0 r( s6 x+ ?( F. |
$ F0 X( F7 w% R( j$ r% B我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌) h8 H' ^/ C0 v
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
+ V x) G5 O( c0 e( q赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”: N$ Y) o. q" T
+ p9 d8 S x1 O7 o" H1 y: u5 ?/ \* l
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
6 {. ^) B2 O0 X1 G' k2 E4 Q; Y2 M我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
/ \* g1 h; F2 Y. M% W
1 u9 |0 i- Z9 I消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……( k0 `* {! `7 f6 ^) P& u) e v
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,% y- m6 a7 z! U3 u7 ^5 a6 c$ R' r) s
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
# K- J& P- c, R7 \3 b' c式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
' L! X8 c1 D! S! T: N/ }" A+ s9 C了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑8 e. Q# ^6 w {( B0 M; R" J; q
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
. @. A2 y* P7 @* P! H8 q# H, N& {3 Y: b
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利1 A4 V( u9 p V3 x
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解3 j4 m/ e9 R! U7 a
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。 j2 T& |; M4 j K! y1 U' u
- ?$ R D! r5 V6 ?. {* O附录: 我用来处理日常事务的 Linux 程序5 n& M( x, d ~& d: u: }2 G2 [* W
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
h, u2 J' m$ R. A8 H4 O2 g是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
5 G0 L2 [* p6 o$ T$ k, j你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
8 K2 ^, f$ }9 o) {: q工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
9 ]: {4 g; a S' J- d8 J0 P0 c v, Q+ l' i9 E! H. J
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那" A8 `+ k( Q0 p. Q4 a5 b4 p. b
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
0 u1 y( j. }8 X7 M% G0 K I员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
`4 T& f2 ~2 u2 b4 `) ~4 ^& R# a机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
) d1 p4 U# `* j% h会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
! q& j" T+ n" p& K( k已经很安全了。不过你有兴趣了解更多那也无妨。 _+ f) l$ k; Y, }( i9 Y1 e9 @4 @
" b7 l- U$ j& f" O0 M1 }) l下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工8 ]- E. j. A M1 T* }3 k
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其1 e5 y Z1 c3 t% G% w: d
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
* X: g+ k+ e# R i; d很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
8 x# R- O% A5 A辛勤劳动的产物,是可靠的程序,它们物有所值。
4 t9 x& r- D$ e7 H6 i( J2 ` |