我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得2 |+ B% y6 R& \3 T' j2 \
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠3 d4 N' _# H3 B# G) T4 x
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
2 a; z4 F# \ p6 I D3 n" Y3 U没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
2 V* q1 Q* I2 Z ?的先进。& L/ A7 F: E0 w
; @. a* Z z. m
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
% r; N/ Y' w& }# I/ U v. t+ d+ f5 |8 y& \$ z6 L+ q- x
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... ' `; \& R9 E' E" z
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
- a' [- y+ ]8 r" N5 n4 {难道它们的设计者就那么低能,连个图形配置界面也写不出来?1 ?9 E5 m) ^( c h
; z" j3 X% e" Z2 k5 G7 m( L
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达6 s& \: R/ U t" [
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
2 a8 r5 C) C& `" ^( q, c: [要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修; t0 ~8 p' ?4 O% m
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设1 l# G. ^- j _9 `! ]1 Y8 j
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
# z' G0 ~4 o. s( B. W( k# E- z v# lsed, Perl,你会觉得那才是真正的自动化啊。6 g% {0 e5 K7 U
! A0 s" T( B1 \4 q3 r1 B
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全7 l3 _ b/ o. q+ L: c
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
$ p/ @' F1 o- j3 C# i点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。5 T4 c& {1 c/ W0 H- A8 J: Z
) ]; ?4 i. G, S! }% t7 l+ m5 h各个小程序的完美配合
9 D! y) p2 Z7 @* q: \ _
, J/ U9 U) p! s% ]1 |这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
, p/ i8 R0 b6 r力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系* A. Z( `3 l1 u$ } a
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
* Q+ U5 `7 z* \) Y: ]grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有4 D) n$ P+ u" ^) Q$ G
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了 5 y1 q) b3 l- t) n6 M1 s; R
vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
% \2 r5 U5 h P设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
" X5 ]7 d5 f7 Y( w5 h很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做# o; @+ R3 P; J+ Y) K7 |: ]2 O7 i
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
, G) T& a' Z" k以在自己的窗口里“嵌入”另外一个程序。2 q1 U4 F- e/ Y7 u" V" y
- H+ v+ a* B! O. M. \7 K/ n. S
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows ) @0 M6 S# s- a' N
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,6 {7 Q( P& p6 b; B( N
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,1 \: x& N0 x# h- [4 f$ [
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。# D; _$ w+ f9 `3 x+ E6 X2 s! d% I/ J
6 b7 ^7 U9 R: @+ p1 i& W
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自# G9 [1 |5 ?. O6 Z: O! A' Y
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, 1 C: w: {7 v, ?3 O6 h, e
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
6 }: ?8 {! p. h8 o了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
( r" G# D# q- f& m# ^3 n的键绑定,菜单组织…… 不能 DIY!0 ]5 ?% Q9 i) U: ~
" C( E8 } D2 Z8 M你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
& O, W5 h( B: n么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
# i w1 W. r# y3 r# P面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球2 F/ X) L! ~9 G, w4 e
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是 g: y H& z/ J/ a3 `3 ~" W
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
) r5 Z, O, L% a服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这9 Q/ H' t% @+ A$ F4 l
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱, D' J; W" d5 n5 E
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
. k. `+ G) u9 J" D9 A5 T+ X3 T w买全套配件!
, A! |7 d2 e7 u+ ~! ^9 W- M" W
9 ~! X. j/ A( _+ ^' c而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
% ^* s2 _" T2 q9 \8 I也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
/ n L- o+ @" \片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给6 @# ]" U, u6 s9 C- b/ D, D- p
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
; p6 R$ _$ W8 I; S7 Z它 PGP 程序。
$ A+ i( s7 Z `' G1 Y
. W! ]2 j# a) f; P我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,' t6 Z6 D* o$ c6 q; e; G6 \
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可/ U0 W( B |* i+ |, m
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以0 C: k' V) H" t% X( b
分别得到它们的好处。
/ ]' p, L8 |8 N% Q- v: o) m' f/ N% t/ U9 \6 n
学 UNIX 绝对不是浪费时间
/ P) g3 M4 [! V/ E3 E1 D# s5 n有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
4 n, C3 U; V0 D+ Y: I) T N个星期!”5 ?7 [# a6 G& f! {2 j* y8 {) I
( ?: s3 h/ [ c. F, s# o首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
2 L8 q1 D. ^! ~: U) Q因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
0 R, s {" Y, J8 D- ]& \$ {7 G的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为; ^- C1 F' c! }6 B9 d6 z% s9 a* g" }
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
0 d0 A0 V+ G/ S. w机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于- d/ A2 L! Z+ N& X2 G' ^ Q% M
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
( `% j0 R0 W7 _' v9 _1 N% R他们会在20分种之内帮你搞定。一个星期也太夸张了.! r# y* z: Q; ?0 z4 V5 `
0 Q: m/ D- t# l/ m7 F
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
- W" y9 @ l! q1 h/ R! y会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
; y, { ^& E" d9 ]( X- `用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
& I- W9 U: i1 P) h2 Z
x9 H! s# G( @/ A% o$ e最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
0 h4 f. f) L" p, N1 M你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
. V/ Y6 x1 k9 D$ Z( A8 a拟你现在的工具。
D2 o- i9 y9 k O7 e) X, a0 j" Z% B$ K' g- H% y7 Z ?9 I+ i; k5 K
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对4 S/ o( d$ Q. z/ {5 B+ b" z
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
+ s5 M# \+ l' s: v& g: X直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,+ {$ N3 M2 R8 b3 ^. _
现在完全不经修改还可以用。# Q7 T) Z: k: d
n a$ ?, B' G* f9 R7 H( O
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
, \% j6 i0 P: ]$ W了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功9 [ d4 o0 P; c
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又# {7 S7 P( M) k4 F# m
要换成VJ, PowerBuilder, C++Builder, ...
2 g4 o+ ]2 B9 S: Q& q1 ]+ m
" b5 \; u4 E, l) D6 Y( C% ^* K/ F很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
! D! E! n s+ t& b+ s# N- B6 { LBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不7 f2 l- D+ C$ q! R9 m3 X
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
/ H3 U! R0 _" a; y7 xPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用0 _ Y, m' m# B7 N
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
( F3 U, m+ m* M7 m3 V) k族的专业。” 这就是微软一手造成的。
( \) Y. R9 z& ? z+ c8 Y, y5 M
% D* v' D9 Z( c- ^7 D$ W% B8 P8 p5 o这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不9 i m; o6 g v: H1 U7 n
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工. F, K4 `, c4 @ R5 F
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的2 g9 K, Q4 n" c! W* n2 S+ {" g3 }
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
. J. M1 _0 J H6 a车了。这难道不好吗?6 L3 ]) H1 s' q
1 B( `5 k6 [/ C0 _
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
- F, |# k( P; F' P5 n+ C去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想4 e1 G' j; M! y' O
要傻瓜型的“微软牌汽车”吗?我们来看看:. a- i& t) o$ Q' B7 c1 J/ y+ T& s0 {3 L
6 E* x! k4 c3 L3 |1 u' @
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的/ Q. Q- G( X! b) ?
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
/ k9 K2 B+ R( C$ C0 r3 A5 A7 S一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
: @+ ^) W, J7 G E- R油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
1 Z" t9 H/ ]8 ^* X" X& k9 a( |软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
1 J i; @% ]7 C0 R' J3 b0 E5 R6 b$ F" n; B4 O L, L1 @
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
% E; Y$ D( M. M8 J# D0 P' Q& A. R需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
; T: w3 w. `) P* r3 K3 Z9 F' F3 _微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家( }1 n$ v* q; A1 r; ]8 c9 a6 @" J
人造成的一切死伤,微软概不负责。”
) C# W5 n! \- X! w* V* V
. Z( }6 t2 }/ r' d3 i: G* R怎样完全用 GNU/Linux 工作, v2 R# n$ C1 B
% z8 |' y% x9 Y) `9 p
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。1 ]7 S- ~* `2 m C: Q
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
9 U+ \* V' h. `2 B0 J汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
0 R9 l/ s6 V1 r2 G' W( I而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
) B9 r# u7 P2 Z* E序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
/ Z U6 s. Y! Z5 J- q8 ^
: J# k ?7 h3 n& n; f: N我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
$ Y5 d- V% V# K的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简" ^9 q& L, Z5 ?6 \6 n' M
单,而且效果非常漂亮。你可以看看我的TeX介绍。
! d* c3 m: d* Z: l8 ~) [* m
s4 J" p5 V( G+ k至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可, s% ~# t1 }9 ] X
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
% \8 ]2 g- W% E$ yMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
! L1 w! [/ J3 f4 B; U" n q& vMetaPost 画出来的。3 N7 \4 f* ~7 ?0 H* I
/ t2 p; t, Y" t0 x' J我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发9 E& j' V* l6 p6 E# d
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用9 e. M2 ?3 r/ w; A
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。 c- o# T( {' T) f& I
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
3 J+ o* U& A( i ?* X3 OGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
9 V' ^$ l1 X' Y) K5 d' N7 u还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运/ X! |( B" O O+ z) s
行的。
0 S9 {7 |0 `0 ]. ?! G9 k
, R# ?' x) z0 c5 n) XLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很6 ], @' Q+ I+ L
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……6 }7 {2 t8 X+ ?/ w7 Q3 W
a& R: G/ @! v W, `7 n9 a
结论
0 z4 m. e$ Q8 v K
7 v4 N' p: `; Q& l我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
1 R& g! y9 J5 I N0 v; N1 ]输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追1 R7 ?# s( s6 K3 B2 s' h
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
. }( A5 _* L! K: i
: z) b9 I3 G$ NUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
; {3 \4 z# }" h) E/ J: _我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。2 K7 n1 w$ G( N8 b z! U8 h
9 v O7 u% j- |, V/ d M
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……- H1 w5 \9 {) \
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,; C! L2 V3 B4 N4 w* U0 z4 \3 ]
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方# I! w1 j3 J4 v+ {+ g- c$ I
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
5 Y- |4 Q; g' s+ v3 }9 H" \了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
3 G5 N3 |$ W. a+ U& Y1 |) S里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.' v& }3 K, ~4 c' r7 N
+ `! y0 V+ E& M( t( d我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
1 m1 X) {) h/ Z6 p5 [& l7 D3 D' s# X) J用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
1 p) `/ T( l4 v+ I V% E: S决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
$ s; T: Y* M4 Y$ d5 k I; l( n, c7 C) z* \
附录: 我用来处理日常事务的 Linux 程序9 t+ L. i4 ]9 b+ g1 x. G! w
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
}/ y- b% V9 l/ }是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
1 C% z8 p+ v( K( P你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
" ]+ _2 u( h2 q8 _工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
0 }" \. _& a/ {0 l) x' x f5 u6 L6 J# r* G
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
6 q3 x/ b/ r" H1 o7 i, d' D就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理5 n5 z2 d: j* z Q0 t7 ^5 K/ S- B
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的& y4 z* R9 z) ]' q8 e
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样 H% V* @; t! ]# j( m* m
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省5 _5 P+ J2 y9 b& i2 y) |9 z* A! S* R( L6 L
已经很安全了。不过你有兴趣了解更多那也无妨。. l ^& T9 P; e4 t" E8 y
, H; p$ y! ^& q下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
* }+ o1 k5 L. r7 h; S' ^: ~9 [+ @程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其9 c) x c6 p3 k3 L/ U" J
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们6 A) |/ x! y, ?& S! h+ x: L- }, M0 F
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人% `2 f7 Z: {2 ]% g! r# `8 m. L
辛勤劳动的产物,是可靠的程序,它们物有所值。
# l8 C% ~! l4 g( P) I- \/ p9 u |