我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
6 X: j5 e; E# h3 gWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
4 U( T' G" M) w9 t" I" j( G9 v标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
* T" Y: z8 S( h没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
0 s& x, z/ E) R9 K$ e z的先进。
2 m+ }$ x% U; K8 f$ }/ N1 x
. Y# G: ~* t9 p% K1 MLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
+ D; T, ?* F+ D; i* b& R W1 M- R* X5 Z: A3 N0 @8 w; |1 n0 ]/ F
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
, p d$ D8 \$ q: U7 h没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?8 k/ d0 j$ E/ [5 K( o
难道它们的设计者就那么低能,连个图形配置界面也写不出来?
# D/ f! ^- ]7 v3 g
9 s7 P0 g* B# Y8 m7 E2 ^当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
$ y; p; _8 @( [- ]能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需2 S* T" ^, n, F; R* P% z, ?, ^! }+ w
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
6 U3 {' i, M' N- P7 J改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
1 z) F/ l+ b2 h+ @. _; c' K置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, 0 Y7 v3 s U2 j/ Q9 B. f& y1 |
sed, Perl,你会觉得那才是真正的自动化啊。
: l' r* {8 G* W$ V U U/ G5 M: z; X
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全2 C' F- Y- a9 ^+ V0 z4 u" N$ z
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱1 V2 D# R: x% L5 J
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
0 M* O- I8 `2 N" h" c) [$ I M# c6 C' O/ }# C' A1 A9 x, C
各个小程序的完美配合3 L% Z" K# F; a/ o/ K$ j
! k* }. Y1 U. k0 Q R4 N- t这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能* k0 @. G( X7 I
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系3 [* r& `; w' E; T2 |) h" G) m
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, " l7 k) q4 b! W% }, x6 l5 {
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有9 r0 r% z% i( z
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了 7 D" {/ \4 L4 j; g+ |
vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
. H0 S. O# d/ E- h+ R设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等* d7 y4 Z4 @1 b Q0 M6 T4 m; w
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
X- u; i7 ~% }. `" u0 K1 q的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
' C) f: T2 H8 N以在自己的窗口里“嵌入”另外一个程序。7 n5 _- |8 H' X3 Z
' x o6 S; \& G" ]9 y在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
: X+ N+ n+ D% o$ v! l; k下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,% r& Z4 X0 O" J$ o
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,8 v. I' K" ]% M) d: @2 l' r, I* N! L- V
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。: m8 z! \' X \% |
: o5 M% z( |2 L
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
8 n8 a% p1 M3 H4 ^4 K# s: \己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
& g- K$ A9 T2 g7 L) e3 K3 @; f4 `; A自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
0 G7 L# }; `/ X" x' J. R, ?了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
) ]3 s3 M$ C, i# G2 B+ S, N的键绑定,菜单组织…… 不能 DIY!7 F6 h, l7 f' I$ K4 T4 A
1 a" y/ {' T8 }" b: c6 B8 v8 E
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
' v( Y2 i. L7 d1 h/ y5 K9 ?么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版" g; W2 |# l+ O% G8 X6 ]% y1 K
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
) L! ~8 c4 R& m拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是! i( k. H, k2 l" H9 [ P* Y
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
; ?% H8 v0 ~; t5 V( |服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
* C' B- p2 }# ~3 a: {: i种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,$ A7 C) h6 _9 |! W6 b g
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
5 i4 h1 u. p) p# l/ R+ m" e3 n买全套配件!
- }+ g8 w* E4 I- a' f
0 |, r J% c. E, O5 ^0 h0 |8 u而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
8 B: G" o" a) f+ y/ c! ]也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图; [' z3 I" f( y' T* m/ d8 O
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给* Y" {( }/ s C# A Y& U/ \* h7 y
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其0 Q% P- \6 I# z( \/ v
它 PGP 程序。4 M; e/ r- H' U# u
& v; @3 i2 S" ?( |. ^9 u5 O) D
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件," G8 [' G9 p" C, Y/ i# w( z" l, O
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可8 l8 t( I$ c, m0 W
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以
, j* `! G+ y3 j3 F分别得到它们的好处。
/ h3 y; H" R; C+ ?$ B
' f3 z4 R# p% a3 z学 UNIX 绝对不是浪费时间
* C: u! e7 d% Q z# \' @# E有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
; y/ V! C' K( D* u# S" W个星期!”
, u1 c; @ h9 x( }% b
7 D8 T% q% \) k. \ w6 i首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
" c1 F [* L4 w3 E4 T因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows 4 G; L( }" ], j6 x( X$ n
的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
4 ~$ z4 G1 A4 w- jWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
; q6 L+ F" a# |# U机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于; Y# u3 r0 q- j( A
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则9 q3 Y, g' a/ Q) I( Y3 }
他们会在20分种之内帮你搞定。一个星期也太夸张了.6 }: K" _7 U' j0 H* I- m* O% ?
( n1 ^$ d" O9 i
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
, [% Q/ V6 K* o" o5 R! f会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
% k5 F' h) D; S( q/ e9 B5 L用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”) a7 S0 B0 Y" M, [, v/ F
" f( U: Y2 A8 W4 z! Z0 w* ^
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。( X- r k6 A0 ~9 p" K& r3 Z8 E
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
2 _, f) l- f( m! D# J拟你现在的工具。
; v! s9 f* a' P, e" F' I7 }& P% c7 l+ h. [! F2 M- k0 |
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
( D" G Y2 N# v0 m0 m- {没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
% n( E% y& t8 K直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,8 I2 t5 i1 i, N/ o9 S. ^
现在完全不经修改还可以用。
; \& Q! Z: z5 W
. S1 c6 B" x8 c8 x( e1 {看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同# D @/ a2 m j" n, S6 J. S
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
$ O/ g8 A4 y. t# u: P能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又, L# F- X' X1 ?2 F. B; p, u) i
要换成VJ, PowerBuilder, C++Builder, ...
' m! ?0 e- h% `4 `: E
) l9 R8 K" ^! j7 e很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
, C# X5 F! N8 j8 B: K! l: k% `/ TBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不" \& y5 ?8 H% u; t8 Q4 W3 q
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
. {# p; p+ ?( J: o9 D$ q% w2 kPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
! v) v6 H0 {, A$ V4 B3 tWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
& ^ M3 y! \$ Q# Z. W" F族的专业。” 这就是微软一手造成的。/ G4 w: W/ B1 k$ Z- d. L
$ f3 s E$ g+ i4 g5 Z这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不* g) m X1 M0 _) g4 R/ j, b: v
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
2 J: U# t: n* q具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
, c! i3 z5 k! P! T2 U- Z- D8 v+ H位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修 R& _* y. D$ p' L! ?8 u% r
车了。这难道不好吗?
- l) g9 ^" }0 ~
$ z0 C; Z5 K( _! l5 _5 @有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
$ g( s" Z# V# G1 [+ V* P去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想4 H) g& z: I( a5 `! o& y
要傻瓜型的“微软牌汽车”吗?我们来看看:6 F6 v7 d. r3 g2 B- o' j
; h% R3 @/ U/ P2 P+ Z$ T你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
# X( z+ m- k. L: N, Z防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换' J! z1 Q4 y8 E9 {+ @6 I
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
& l; Y$ D% o5 g4 P) [油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微! o+ s# i \% }4 z
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。- E0 k, R% V5 V1 ^7 j
# \/ F& R3 g; L, j" ` X
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
3 |$ `9 ^1 z$ e! h; X需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
2 `+ D/ R8 Z7 s9 A5 g8 A V7 t微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家 E, @5 u7 V$ e) _& O: b m+ G
人造成的一切死伤,微软概不负责。”, D9 [, I4 p8 `2 ]" I. A
" v8 p* r& }% }/ A" d* J+ U2 T怎样完全用 GNU/Linux 工作
{+ ?$ V: ~( V" H/ z0 }5 ?6 H# ?; T9 {9 e0 A
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。7 j' y; w* c! u2 [7 }6 p
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理7 L# k$ |; H$ e3 ]: ^5 X
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。6 R2 @- l0 I$ @8 i1 f" G- e/ e
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程 x; `6 x+ E" S8 U4 a: S+ i& b
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。2 i6 w: Z; L. a* o& S ?7 E. B
; m. E W5 @+ \4 {$ y3 ]6 `( w我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
1 l, f5 T/ {3 Q6 @1 t的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简2 v7 F1 f' { ~: m: D9 S# |2 O
单,而且效果非常漂亮。你可以看看我的TeX介绍。1 z$ x I; ~- V! {3 u8 D
4 S3 F2 l- g( G2 E( e7 f5 ~至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
! s. [: l( V7 c/ z6 ?视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
8 m: ^6 g Y) G/ m4 |1 M8 |MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
) I ?( G: _/ N1 PMetaPost 画出来的。
" g3 [# z: m* z1 t1 k' f' y
, I5 G' |% }0 t+ A& `. j+ D我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
4 [0 Y& U( @- C+ O# M现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用5 K, G/ g1 Y- |; H
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。8 |% h) H: d- a/ A" Q% x
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,* `: Z7 |9 F3 Q
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序' \3 ]3 u+ i: I) i: r9 R7 K" }; H* c
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
( V+ i* m% a0 ~4 _行的。# C6 _/ a! L8 R& C1 H
( `* ~. A$ e9 a" y3 R( mLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
+ K3 [& t# ?- m3 p1 q差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
1 A, U. K. M* @% i/ P- M# C2 M* Z: N7 [' U' A# Y
结论8 Q/ G7 b& @" i. i
) T3 @- M& `; f2 t+ R1 p* Y我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌1 u- B* X0 w3 u1 {
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
4 t# Y8 v3 N i. R5 D* G8 ]" a赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。” R) n9 a* m# @+ z, `- K
F7 i3 z; X& y- {6 @& f
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
# u2 @7 h" ~. d) U3 Z s我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
: S, v4 E8 J, j/ [6 I$ B* T/ r, b, c8 S
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……& Z) D# w+ v* a9 ]- D- A
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,5 u7 {3 c! |0 \1 p- A. G
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方9 q4 C, K6 ~8 G1 f. P s4 x) O
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
+ m2 z1 q+ V x/ t了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
* g8 e" a/ V5 {$ I Y4 {里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.. X. _" Q, G( h5 ]
# S) ?- @$ i7 n, ~- Z& Z
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
! ]5 x# B& x: L1 M用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解 ?1 v' r* l2 K
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
' J- f! h5 ~4 X4 q3 i8 [. o3 H3 Y: U9 \* R8 |
附录: 我用来处理日常事务的 Linux 程序! O; [# x% k6 Q2 D- g' P& b
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
7 d( N# {: \9 ?. K+ G0 Z ]; z是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。) A) A) d1 q/ V, I. E
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
6 E- @/ I( d$ T- ?工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
9 [ Y% ^) r* d. s' h" y/ E+ ^6 d: b. y
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
3 j0 h' h" I: _1 y. W3 _就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
* `2 D( L! h9 m: ?3 E* o员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的: _# N7 s+ b8 Z- l- A" u9 f( ?
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
" w0 e0 h( O$ ?- e3 f0 I会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
8 j+ |4 j: z7 ~( M: ]" _9 S已经很安全了。不过你有兴趣了解更多那也无妨。
$ f" y# K5 \" }/ a0 }$ k {8 E( s5 q7 H; }& ?; o% @# E! X: u+ G; W
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
0 `6 V8 t6 Z i: u! p程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
" x: C$ t5 |: ?2 B& O- }4 d它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
/ K) f6 c+ n p/ m很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人1 h. R8 E# ~, A+ A0 G/ Q" `
辛勤劳动的产物,是可靠的程序,它们物有所值。
' g2 p% c G7 y* E9 X! f |