我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得# @9 U! l* @) @, L
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
" ^. O. r6 r& @3 k9 k4 C标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
6 \- U! r4 B2 }2 q' e没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
0 e1 j t y+ h* x8 t) x的先进。
. U6 j+ S' H0 a. j1 G0 X
( g/ M: K2 x' m8 ^Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
2 D9 F2 ~+ _( z7 Y0 k% V
0 @4 C9 X. ?1 m. G. ^4 g看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... % z2 q$ D/ p- Z8 e/ K1 Z% w
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
" {9 F6 P! n* Z ], P$ K: v难道它们的设计者就那么低能,连个图形配置界面也写不出来?
+ p2 @8 X8 p7 J( y7 ^. n3 u
3 Y, x+ R. v. o1 V. e. {当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达$ v* \; L1 H! m
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
! z C! m2 d# ^- |! E* u要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
0 J; K; Z% V0 V改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
* _# u; ]. X6 w. H) @3 v. C置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, ! E7 K* q- E4 r
sed, Perl,你会觉得那才是真正的自动化啊。7 O, \+ l P+ O, n
0 k8 q- t6 j8 U* e7 b鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全! {$ U/ {2 q1 ?: e
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
/ |0 @' M2 h% E, r' b点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
6 h9 i$ ?2 H9 H* a
4 F& u* X3 h* J7 J! S p) S2 D各个小程序的完美配合5 {2 F1 v' E# E( b( h) i
! Z6 ^3 s3 O) I% C* z. C
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能# M2 J2 _+ q% {" V( z% ?7 J
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
/ { E- X" B4 c v; A/ c1 w: r0 J: B7 a统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, $ f% C" \/ r) Q8 f
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
2 ^3 B# t' E/ j7 j: ^一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了 1 V. R J* \- p8 L
vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经! `' K3 w+ {0 ~1 p; c( o) V0 I
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
2 g+ e% [( f8 O$ F, F很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
- m1 Z/ |6 s8 X+ T) O. `的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可/ u8 q5 ], f, f
以在自己的窗口里“嵌入”另外一个程序。
3 }7 `" \+ h' l0 N+ R0 G, }2 l: W5 ~! f ^$ F8 f7 G
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows ' q* V6 u* Q' H+ G; T4 G
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
5 r5 b/ W7 s6 _ x程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器, J1 p' f# @: P9 [
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
6 y0 u4 e7 p2 a5 O9 |9 {- W5 X6 v F3 n
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自1 d1 f# B9 B( z0 c
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
9 h9 U8 T2 b5 k- S7 }$ y3 ^- B$ L自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
) q8 g2 Z+ \; ~0 ]2 N6 E了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
& \4 b- y$ y8 T6 N% x3 x3 B的键绑定,菜单组织…… 不能 DIY!9 E, \4 O2 g5 Y0 b" x* o% t `. K4 o
6 L' g* a( h9 X% q. h
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什' J5 i* ]0 x8 U# P: z
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版" e9 z6 j+ ]3 @( [, Q8 k* z; t( j
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
+ e- e/ o. S1 \$ |拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
' ]: i1 s" a. B. h* p& H, |大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
7 s7 N: j ]( o- o服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这4 u$ ~+ N. b2 a' k/ S8 y
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
$ Q3 y9 O/ J: Q& S! x4 F因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新3 r3 M% \, g4 c6 U5 K, a6 O
买全套配件!% U) ?$ d; z! Z
# p# w- z+ e% Z) C6 g" N而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
% J$ G J) v( s" d也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
; C- _3 M- h+ e! N$ e" ]片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给; ^( L3 U- J( k; g+ q+ l j
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其; V- v+ H4 m8 G; |& B9 @, N
它 PGP 程序。
7 N/ j5 _7 P7 C- X! ^( O5 U( g6 {7 J" t+ z* C
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
5 I6 l/ S8 l( [2 E转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可! C# K K) ~) i5 f& F. I
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以
2 l+ a+ Z2 `8 i7 j0 t分别得到它们的好处。
" c/ b+ p4 b8 w ?2 F& ]2 P) i( X: w& m. ?
学 UNIX 绝对不是浪费时间' z1 L, o+ a, ]) t5 x
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
$ c3 h4 ]# F% s; Q, w. @个星期!”" u8 r0 `! D T- w& \
% Q7 x/ J1 E1 F5 b* F0 G首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是$ |" b! E$ G" C1 W4 `, }6 t
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
1 c( \( X# t$ b7 N- V. u的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
! k: z$ H7 P) `" w/ p7 v. P KWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的- T' g) G9 o! Q2 X) _1 s
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
* C5 F' ^8 p# N' F5 J硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则5 p: \0 [- c; t% S/ L G
他们会在20分种之内帮你搞定。一个星期也太夸张了.
2 Y- S! G, k v& t( p& {
e8 \' \6 M) v) V0 G如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
0 C& @9 G) F; U" e# N, B1 J会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只; r2 E6 H; ^, B
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
6 j3 H( h0 c b: u8 }
9 Y7 R: j& N' v( }- i x最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
, V9 \: z$ K9 Y/ x/ R" M你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模6 g9 g3 H/ o" \( u1 w
拟你现在的工具。
( A; G) M. k6 B/ C, q7 u' m, r, {: V
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
6 r7 m7 `3 j9 J/ t! I没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
7 ?. T, y$ o/ M直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,$ g1 }6 D8 O$ s; ~3 h3 }* Y
现在完全不经修改还可以用。
- Y! q& x N" C% z! V9 q9 X4 R: {! x' T; N) _1 ^# [; Q
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同8 H {- u L- G2 Q+ t [, p
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
$ C5 o( U) M. v' r+ G9 o能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又! w. Q# k% L# U6 y4 N) K
要换成VJ, PowerBuilder, C++Builder, ...
1 V, m+ B2 _* L I" q* F. ?3 [! D2 D" ?: ]' d
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ ( o% S; j5 p( U3 Q/ ^2 }" L
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
& n s4 }" S( W6 o7 J) A断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
3 `3 q7 w, }. s: F4 zPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
: c6 E2 a/ _! c1 O- l' H; Z- kWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵5 o7 V* ~$ k8 m8 k+ Z, R, T% ~: u
族的专业。” 这就是微软一手造成的。
, M8 F$ U. f z3 f/ ^! c7 R, E+ a/ l0 e/ h, v+ Q: Q1 h
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不7 k0 i' M" e# d" g
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工; |% _" l% S, E4 _
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的4 e2 x0 _' e8 ^# t- n, @0 Q
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修$ x! _; Q6 A/ [6 w3 S; J
车了。这难道不好吗?
4 [) r: W( ]' m; J; J& i4 G; H$ @ Q1 \, C3 U; H
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
9 t+ E v" c+ c去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
' ~4 g' w1 e5 a* i# W2 F5 Z( T要傻瓜型的“微软牌汽车”吗?我们来看看:
( v: B+ j: G/ c2 k8 ^2 x* ]2 b' s/ C8 u: t t/ m
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
6 k9 [+ ^% B% Z2 j# R防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换9 I8 G; N2 t8 _) S
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
* F$ K q- J, v' ~/ X9 Q: I油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微; J6 j! ]; N8 Q3 z2 t; @3 j) I
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。) m7 p7 N* o$ V7 X. _
5 n& B+ G8 x& V
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
?6 g9 [! \0 @4 E& `需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告( H: s( G" u4 O( U- S
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
$ W1 z8 [7 Y! T+ T+ @6 ?( \6 h+ y人造成的一切死伤,微软概不负责。”8 [$ E A6 [$ _& V# B* R% z- @( Y
0 p3 O+ {; {5 o; Y5 y
怎样完全用 GNU/Linux 工作3 b4 X# `% i3 Y$ o& M
, O* j6 d( e' q" \" f' w
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。+ }& w/ J: ]$ z# X5 z2 F+ e2 L6 j
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理& g: B/ \' P+ s! @- B8 }
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
V8 f( t$ ]9 l* _而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
5 J0 U i4 N8 H' j/ `序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
+ ]$ B& \& g: S! G; G a& k
" j9 V* y% r2 P, [我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
; h, I2 Y! ?2 H的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简! h" S" F. u& h- U2 \: s
单,而且效果非常漂亮。你可以看看我的TeX介绍。
7 R7 G& r2 [" ^* X- Q" T+ y$ s
, K; P7 Y1 {. {1 {6 r- d$ v' ?至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可/ l1 c& B2 P/ s0 D" J! @
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
0 O) z+ N" G! M- A" h$ J$ r! ?MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
2 R" M6 E& j4 uMetaPost 画出来的。+ D5 q V) ~6 v) B' `
( M1 y1 l. t, A( b3 K( P
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
T9 s; P! t& K! ]# q3 k现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
+ L3 e. C% D. d a! l这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
* x5 e! Z0 ~/ S# R, j4 H+ Z我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
1 ?% K' n6 V' AGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
2 `; G2 `8 O( z7 z! l还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
5 ^7 f* T( p y行的。4 S4 e9 U7 O2 j; p" e6 `3 B
: N' v& I" F4 \( ?2 Q, x
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
+ V) B# c; n5 E7 U6 c$ y* [差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
9 O: V6 L$ `* }6 b* f& ?# L
- a( V) X! H( s$ z! P; T结论
0 t9 R) O1 H% f" J2 d$ T' W& x, a! ]; l
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
' O$ e% c8 O3 z1 x' ^/ ]9 G输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追2 {0 E) S8 | j& u
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”3 d0 M0 ]" s2 k
2 `) w4 z- G; f, @8 y
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。$ z+ B5 U& w' a
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。2 Z# ^- ~7 i# L" {- |6 R# Q
% L" A' `: H* s. S) J% d7 ?消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……6 Z" t( F0 T, V+ Y. b
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,9 s' z% H) t9 b
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
9 I5 o+ G; f8 ^( N# k式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,& [! g! l' ]6 j+ B" o
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑6 r! Y- ?# d; d. T, f6 X
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
" z5 T: |: { y; }& ~5 F# G, v2 h- f
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
1 f% X0 S' ]& g6 K8 t用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
- L# L+ d* l$ u* a4 ^* S, H$ J/ I决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
8 p, v6 \4 }" a& c1 M7 A* K- C) X1 p/ D! p5 B/ e+ v! q
附录: 我用来处理日常事务的 Linux 程序
% `1 |5 \3 e! l U好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
, u9 ?" N7 v$ L" P: ?是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。( ^/ g0 g! K2 {* }0 j
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。4 @+ g6 n( i! \/ Q4 w0 b
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
. B7 b1 o3 T& u$ e/ [" D
9 {2 |2 i6 h0 D8 F( O如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
3 ^5 n. Y6 ` z: N( y2 G) q就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
: k5 i" D8 o1 P0 ]员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
7 W' [0 |% i! {6 h* A机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样7 A$ S$ U( q* I4 ?& o" `! f) c
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省$ d% Y5 O- R% f, L( X( A
已经很安全了。不过你有兴趣了解更多那也无妨。+ T( J, O+ _7 r) J# m4 ~, f7 X
4 P" ?' ?0 n% m c
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工6 d( }4 M7 [; s: J6 E' l8 N( F( d
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
- W& B J3 Y# ]) b( B它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们* G2 f9 @+ X2 w
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人: K% Z: f+ x$ Q7 ~/ `" l
辛勤劳动的产物,是可靠的程序,它们物有所值。
1 I T* g6 p- i! ~* a9 A% W8 z |