我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
5 s5 O4 ^% ^: {# X6 wWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠4 S$ M( Y* D. k. F/ U( T2 \
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
P- v" E7 ?' J没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
/ u7 y4 \4 D4 [# H的先进。
6 Z. ^' Q+ i6 C# l; {) }( Y1 u% O& s
! a4 p: ?7 d" HLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
' ^6 t9 l* ~9 L u& e- D4 i, b Y V0 k
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... ; C% ^, w+ D P- S
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?/ P; Y. H/ Q7 j( E% `$ r8 ?3 a
难道它们的设计者就那么低能,连个图形配置界面也写不出来?5 t3 p$ a5 E9 b7 W
7 l* e( W7 }4 U! r3 B3 b
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达1 l2 [! o# n2 Q! v
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需8 \, @( s/ b0 I+ |/ [$ N% Y5 A% m
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修- b! h# `; _ G. E" p; f7 k' G- j
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
% }, Z3 o. X I4 o; A置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
. |% d1 M, ]0 Z, `5 z% p$ Nsed, Perl,你会觉得那才是真正的自动化啊。
3 R4 l2 N: @) M* G1 F7 t$ ^; c: R* [* F n1 |$ L9 F
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全4 u0 D0 j5 L, K/ l
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱3 L2 v7 e, I' ~5 a% r8 q6 ?0 ?
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。" b' d& B. ~) D9 A* p& o# Q
# w# N4 S( Q& F, v0 J/ m: {2 c7 h. x各个小程序的完美配合
. M& {6 }: I5 R$ f1 f0 H+ e! K0 U+ I: r# b' s
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能/ Z) L) m+ K8 ?" |1 t. h9 X! ^0 f/ k0 W
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系1 t$ c. ^6 D+ _- s o
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
: W) x0 l' y6 rgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
9 p) z. Y! D Q# P6 q1 e1 L一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
1 l2 l! K8 J: @& N- Dvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经1 j6 r% C. w$ r) d4 i/ [5 F# U
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
# U1 v" V; L# |& B) q很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
+ @! ^5 I$ @3 U9 m的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可6 R* k, }8 u7 n
以在自己的窗口里“嵌入”另外一个程序。+ @9 _/ I4 _! ?9 _5 u
. m7 |7 I$ j) I2 T, F% @在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
" @% \# S% V3 a% p! ]5 I, L下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,3 z- U+ w+ v6 E5 P8 R
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
9 F R3 P+ u3 U1 n/ ]+ L你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
: b5 q, ]! _ c, C2 Z; z5 E2 {9 |9 B' a
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自8 q. Z+ b8 I% r: J3 T
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
% l/ E* y" F; ], l2 ?自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为, ^- \+ f# A# G& _8 D
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
+ J! `6 e# G3 e. N; r" Y的键绑定,菜单组织…… 不能 DIY!
# v) i5 m2 | z! c3 `# t- j
' A6 l. |8 l& [# M% z( x2 q你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什' B0 {1 m8 E9 ^) K$ N9 u
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版9 w3 }6 J+ e" q- t" z
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
% c7 h' g3 K$ b( c6 u拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是& b( V: m5 S6 [& ~3 p$ ]. @
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
- n& U( S6 @8 \/ o" O服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这5 |1 Z. U8 h% Z" e7 g; K5 A' C* N
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,, K" h0 K- {9 l- P$ g# @
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新& j, w+ K& Y/ o* p) |1 K y( C
买全套配件!6 {. F+ y3 i6 P1 |( o, A! B
& `# y; v8 K# u, X8 i5 a
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
0 i- u, c7 n4 {6 |' ?也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
: a5 W3 q4 H- Y片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给
0 M$ v8 W# r7 ^* X$ b* ?, }Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
5 U) X* v7 o' R' _ N' N! U. ^" F) s它 PGP 程序。6 |' e2 m. m2 {6 H; d4 W7 r' S
5 K [- s* C" \2 `1 J1 x我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
4 d% a& L9 W9 g+ c6 s4 H( G转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可8 J/ z; b; A* [/ ~- M
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以+ ~6 }4 W2 Q6 [0 ?3 Q
分别得到它们的好处。
6 J/ N _% c# q6 [5 ]: _# c' s' \, M+ _
学 UNIX 绝对不是浪费时间
! d+ k6 Q) S5 U" U0 k5 `" E有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一& d: [' e( ~6 |7 g
个星期!”
+ V7 j1 V) i; O0 ^9 s0 `1 C
; h0 h7 N$ G5 x: }, G0 `" b首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是9 R; `6 _1 l+ V* @1 T' r3 o5 [
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
* z7 e7 S$ K* k) n- L, ~* e' `. s) ?的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为* \8 A( {4 U) O% a% V3 g: c
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
$ c9 \7 L. v! k+ A机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于* Q5 b; {3 |8 O/ d+ W6 r# G
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则7 a6 P, a7 w9 V6 ~6 d+ N. N' f7 T
他们会在20分种之内帮你搞定。一个星期也太夸张了.
% I3 n2 b) ]# m( d4 \/ L/ t4 ? V) k- J' m
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定0 b3 w& N! q7 m0 @3 z
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只. w8 N- T; N' _" C
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”) A2 {$ ~5 |1 ]% X
& Y2 @$ F9 ^8 E; W$ ?最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
# h; T" g j- B) e& C) o你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
' e- G4 M# k+ g t2 G9 q- x拟你现在的工具。
+ M6 `% h d+ k; ]: @3 J
$ C6 Q; k% \- `# U, Q) E A) q我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对; g% p% @3 n8 m) q/ d9 A* Q4 P
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
" g' ~! P5 l6 c8 ^1 V: y直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,' ^7 {- R1 ]' o
现在完全不经修改还可以用。
1 S. y8 V( X, H6 ^% B0 r
2 k) g* f# s: u" x. ?( @) R看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
, ?1 F; \% E" ?5 @, t0 E* v# k了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
! H, L5 a: ^6 W; _0 ^; l* W能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又3 z; r$ J! F) X; z% O
要换成VJ, PowerBuilder, C++Builder, ...
! `4 C/ O6 N; Y+ H3 [8 U
: H7 T% \- s' H& a' k& ?. n' y% ]很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ / Q; i7 t8 t1 {. C( U
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不1 e1 k c6 W c9 T) @+ x$ o
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft 0 g5 b; N" v3 D1 h l) ~. q
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用1 P- x* d) }; X+ n
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵& ?7 ~2 N: T3 `3 D$ Q: ?5 E7 ]
族的专业。” 这就是微软一手造成的。
2 |/ W0 H- y3 }8 y/ _/ b4 a" x; f8 E
# w4 }% y8 A l. ^6 x& P这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不' s3 [4 ~2 c0 H& T
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
4 v, C% A" q, B3 h具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的" E8 |( X5 S# U4 W8 j, k& x
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
1 M8 j6 |/ Y1 s. ~/ P车了。这难道不好吗?
3 T7 u9 C8 d% }- T; B
/ @6 m4 A% f7 d5 O" r: V* `0 T有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你, N- F2 }5 t6 ]' |* C: ]7 r6 C, L) W
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
* F+ l" F' _" c% m; m0 F' W, @要傻瓜型的“微软牌汽车”吗?我们来看看:& W( \" }3 j% l; m" d9 Q( l
$ i+ v! L# c. {/ z- w1 ~4 q1 h
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
0 q) T$ [5 S7 A$ `7 S5 P( s5 ]防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
2 s" A& P' p Z# }) h' `, J1 R一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机! n. H. s: a4 p0 w0 x" y
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
( i# \. ~' U! \3 ^7 c) c软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
2 B& S4 l- I. [% W4 V [0 C: ~' d2 E9 E" C( ~# @
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
+ u7 w, ^5 J4 d6 m j! B4 N需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
/ o( z; W/ B& ]5 o" V$ b微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家* m/ k8 i6 d0 _, z9 n- u. T9 L
人造成的一切死伤,微软概不负责。”4 g8 M n6 L0 w6 _/ Y( ^1 U
3 a6 x2 F9 b" L4 A4 H怎样完全用 GNU/Linux 工作* i' C6 ^; O( m( L2 d
/ {. R2 k7 v* C+ m. a, \. r
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。' L* |- i8 _, C0 M" g7 m
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
* n4 S. K' m& Q! B7 `; }- n2 |汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。% A8 L. h7 D g3 M
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
; s. q0 G0 u; u% A5 o序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
5 Y1 r, g6 |7 o. g8 ?
1 ~) H$ k4 x) ` l我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便( u+ {/ ^) [/ e! A
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
. j% d% M8 u4 m3 z' N7 E# u. t单,而且效果非常漂亮。你可以看看我的TeX介绍。8 Z, S2 b: }$ A1 K7 x2 _
5 y ^5 { C. h' [至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可2 }% o4 k0 k3 U2 C
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
1 N& F5 t2 T3 {; Y, c$ M8 Q4 S$ [MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
' e" J& f6 I1 f3 q; J! jMetaPost 画出来的。
( H" Z% s# H6 S
# X" C, _& Y% @3 K# l& o: y我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发; J7 \4 i$ `, c3 ?$ f# ]
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用# u% z3 c" e. u" R
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。( M0 q2 [8 _; b( e. X
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,) e& q* j% `$ |& q
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序7 k* T2 F8 e; J b2 \, [$ {! o+ [# p
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运* D3 M$ _' z1 E; w2 Q
行的。; G1 Q. y$ c5 I' w* \- G
. g: Y# t4 f$ p6 `9 {% v
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很% x( }# e1 g& p2 E1 r
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……4 d- E; I2 Q s1 c5 Z. T H
9 D! J! c9 d6 e6 f! G
结论
: Y& O/ H i( Z6 B+ I& h1 A' W: y: C" v9 x& L5 M# F7 M7 a+ a
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
' M% }, e/ K' m8 p# ~1 J( P1 e8 s8 s输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追8 p& ~( e, z, C K
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
/ }4 `. K" U& r( X. H Z3 ?! c% s' N7 Y2 D' d+ \- F7 E
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。# T( J% g6 v' v; u
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
& A$ x, g+ V- X/ {$ k5 w2 |3 q. f$ M% A4 b' d! E
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……; i9 [3 S$ o/ [1 ~- Z+ ~! |9 o4 }
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
6 M/ [8 `% \7 {" k! b2 Z' u% U不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方/ B: Y& _- b; J8 M1 j
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,# X) A3 o( {1 }& o
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
6 U6 i' q* \$ D# `# U. I里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的./ P3 O1 F) F" H5 E0 J
. W4 \* r8 W" ]( a% J9 a
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
. G! [& h$ M" s* T( O& e用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
0 c, U4 n) G. l( A6 K' E决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
6 u) l4 @, K$ X
9 Q8 x T5 d. \" D2 | c ?' G附录: 我用来处理日常事务的 Linux 程序
4 l4 J* B8 W1 k; G4 }好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但* O( k! |( t/ P( i, r/ s8 D
是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。- n# \4 N# T' B x
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
, R5 k) B' H! `% M工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
; v) h8 F7 V7 }8 ]( F, a; x+ u( O9 \* p% e4 z- D2 D8 f
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那- C' C2 {4 J: w2 x
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理- i1 L; c6 i, P
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
6 O+ }6 f& `; ^5 G' s6 K e机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样( R) S: z& n& p8 ^0 A3 Q
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
. |1 w4 u6 u& i% U; o! Z2 v已经很安全了。不过你有兴趣了解更多那也无妨。! }. F$ {" {* r% g
0 J) F8 t) Y4 v9 ~( \下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工4 `! [. ?+ j! F& m, V7 ^& k
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其$ ^: Y# G) r2 W% O$ {8 J6 Z3 B
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
* e9 e* e( Z9 \& |7 t很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
" E" _4 r2 f _7 t3 A$ P/ I辛勤劳动的产物,是可靠的程序,它们物有所值。
- [: m! ?) R R2 A, { |