我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
! a" q ?4 M: E- `' oWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
7 J" ] x$ ^2 i J8 K标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
2 g2 |: r: @ m# p/ x没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows : |! f& |) J' {8 T3 a0 p' w
的先进。
5 h6 \2 r) z# k8 W+ O
, W% D4 r, Y! `Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
/ ^5 U# Z# Z0 N% i1 N4 f8 z, i( Z& C) Q/ B `: H5 C5 o1 W
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
! }5 J! P: Y$ p. [) I, j没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
0 t5 {/ e7 z) c- U0 W难道它们的设计者就那么低能,连个图形配置界面也写不出来?
! q; i6 x0 A. ^. L" w# H/ o6 H
3 r; k9 N* O- d# l& z) l0 Z9 e当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达* h$ B; i- h4 H& F/ _, I
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需( r) w1 [% H! F! v K/ @2 W' d( ?
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
3 C) \) u# \& c9 X改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
5 C+ k" d6 i) x! J置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, ! l7 N6 B& E7 t: s
sed, Perl,你会觉得那才是真正的自动化啊。( x- c$ l8 f5 ]% }% w
: G1 D) g4 i; a
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
7 ]- g+ j+ J& u7 b& A) m4 z1 j. V明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱% e$ w1 o X6 N' Z3 m! B
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
7 g2 S3 M% g. F
; I) D) C" q0 [: Y6 @5 U- }各个小程序的完美配合0 S8 ~ w* I, X! O- {
7 `# P. g% \- m }这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
6 R0 Q8 W4 T% y" P7 q( B力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
3 B/ d3 d+ C5 r% d( _& P统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, ) S* X- g3 K K; p0 o! K
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有+ E8 D) d& g: d c9 d) t. q1 _) k
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
Q6 ^3 G/ X; P9 ^* [' N% e5 svi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经( W; f7 [6 v/ Q* v/ b. W
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等5 D Z! H/ {+ B9 s* `, Q
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
. V, r& C3 d3 q3 J6 I的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
- Y) ^% g3 o: r5 h以在自己的窗口里“嵌入”另外一个程序。
( L6 {0 a7 v2 Q' M5 c/ ]. {
$ B! j1 G! C8 f8 f在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
" ~. C8 \; S1 A下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,6 w$ P* f* x N, m& n- ?7 t; ^( u
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
7 D+ b6 v h, Z: }+ _/ i9 X$ H你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
. V% S0 ^4 R5 c2 A" U2 t5 X1 F4 W* G) u, o: I% H
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
; L% D3 I7 A. {. e- D己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, ) B1 J J! r3 K" H X
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
6 n B4 K$ O" y" ^ a) e. f1 l; p了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
5 `4 r! v5 c d0 r" ]的键绑定,菜单组织…… 不能 DIY!8 k0 n; g* @, m. m1 Q
5 M0 t" U! U0 q. L你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什 A9 T( V! V4 |$ k# o5 B3 ]
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版2 K! W$ p8 N* H( ^9 ]% p2 w
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球0 G% z; \; e4 t9 P) j
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是" B( w; D e9 H; f
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
' }" V+ u% @5 w4 \ O! C服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
N5 J1 W+ }2 y. z! A8 {种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
0 k$ e! u4 F+ ^% O' Q因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新* t9 K6 @. a, O; F+ _
买全套配件!, H4 s r7 k6 E7 r4 C
" ]: M% _7 f' l5 `而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM 2 q X2 W: V& @! B
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
2 L1 `% C+ U. x [- ?& f. ^片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给- g, T |0 f4 X, D$ P- [
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
) {; [' l5 }1 E" {6 d3 \它 PGP 程序。! P- u: F4 L0 g' H" K
( _* l# T! o4 U( _: ?3 t6 M. T
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,7 t9 ~" c+ s# _2 @' W/ ]& V1 Y5 w
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可1 x& \, m$ H2 p( \0 c. ?8 m# \. a6 N
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以
" R+ Q" @! X- g分别得到它们的好处。
. L$ B3 L# v0 z& _2 u/ q5 h: I
: m' m) R' J3 |/ `4 t学 UNIX 绝对不是浪费时间
4 a0 R, ]3 }0 }) p+ _: g有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一0 O+ K0 b' l" A1 r
个星期!”9 J2 M8 E3 `# K" ~$ T9 |- I
( T, X% t( M6 |6 p2 Y
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
7 W# m- d6 d- ~+ j2 J因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
8 a% u% c7 _" I( u+ z的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为. ~& n$ w* F/ M0 ~# i$ ^
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的4 p- B9 M8 g1 p. N/ ^+ ~
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
) t, i+ j2 \( F: h- V' q; n _硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
6 V; G3 ]6 ^, U) J他们会在20分种之内帮你搞定。一个星期也太夸张了.7 W* ^( ^" A8 l/ k8 |4 l
7 x: u) s/ g* k. g- D7 N" ^3 Q
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
# M: N3 g& U' [% V2 X会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只6 x, I1 y* L) e5 ^) \
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
7 J- \7 }/ P9 Y) u& Z9 g' e3 l. g% i# c, e1 N
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
8 a! C# E: X3 r: C; r2 T1 m; P你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模1 u- g g. X+ A; ?4 z |. W" t
拟你现在的工具。
& G3 z$ i" O( c( ]2 C2 t3 q' t5 H3 V; W. d4 P7 X2 h$ k3 b8 u5 Z! K
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对5 u9 c+ q+ W6 p' A) e5 C
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,) i3 v1 Q- C: n( ?3 `
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,* r2 W4 h9 P1 o5 X" _
现在完全不经修改还可以用。7 O x) l! X. M6 x
* ` ^& o5 R" I- O
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
8 |8 L' G. Z, t& e了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
2 ^* Q2 T1 y8 B3 W能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
9 A* ]8 k1 W! i2 C+ U. R要换成VJ, PowerBuilder, C++Builder, ...- @1 k( D5 G4 U
2 z& G/ Z3 W5 _) j: Z, [
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
0 ^7 ]9 [) x" x7 F9 x2 @Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不8 U7 \: v" x5 p& d: m$ C# Z
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
5 ~- E) r7 e- P6 V; t; a; cPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用9 N0 o6 K7 I5 ~: o0 D
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
) G {3 |2 J) g$ _2 O族的专业。” 这就是微软一手造成的。4 L$ z4 T9 p$ m: ~. {
7 N6 F7 S$ u/ w+ ^ c
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
( I" ]9 w: Q! W# n8 p s& W, |使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
0 t% F. ]; e% g3 }7 R具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
/ Q5 y' T: V2 B8 r1 ]( t/ P8 k0 n位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
{* {/ A; y' w6 f/ e8 \车了。这难道不好吗?
, ?) e# c0 k2 z' e- N" t: G% R. p- t2 i! k
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你# [ N, M% Z' p! T1 U
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
% ?! J7 z; {1 s" } k* A$ h/ `+ i3 g要傻瓜型的“微软牌汽车”吗?我们来看看:, _: O% d4 i* \9 Y# U7 G) C
# Z, L* u5 q( I- q你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的9 u- T4 f% U# Y# A0 L7 b8 ~
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换7 s9 e( L. t: J" t$ b- V
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
: X% |- b( W* b油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微1 W: v1 ?1 P! o
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
& P5 O$ ~' H1 e% s$ H! q- l4 p- C ]" b7 R& o9 b
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你& _1 H$ T, a. }2 \
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告+ ^: F, I( y1 U- |) U
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
7 I& x4 |4 W' n8 M; @1 a! p4 L人造成的一切死伤,微软概不负责。”
4 y$ G; |% g2 p3 p3 t8 ]$ F) g, `1 g) K+ d* f) I% L. U
怎样完全用 GNU/Linux 工作 u" C, W. W8 H% ?+ o
6 [: s! o. a7 E* F$ B
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。
4 E: O P" Z; T8 o3 \半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理2 T8 R4 E" F+ M5 w
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。, M) t. }- |0 M
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
1 I) e7 @: _8 R8 t! L$ a$ b序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
% O" c# Y1 _; I2 E/ A
3 e7 Q l7 U1 m5 `4 i6 E我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
4 T/ v0 p. U0 ]的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
0 S3 J" E" X+ b& F* P单,而且效果非常漂亮。你可以看看我的TeX介绍。# ?* V/ A" C" J4 v4 @7 `5 e
' u! }( @: i: X, m0 o) V; `至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
' t. ?0 V7 N+ C视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
& T; w+ B% Q/ d& }: V! \MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
2 \: o! `* ?( i* t4 C* b9 Q2 P! A& IMetaPost 画出来的。
4 o3 `4 C* r x' w% k6 ]; B7 k; y* V. T
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发, l8 v# s/ L3 [- M F- R1 l
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
; d4 j/ K3 o; _2 M1 E' U/ ]2 i; @这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。7 c& g4 D, t% J v+ j( n
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
2 b4 ]5 G7 {$ {4 sGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序2 w" W. W9 B- L! y) J, s
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运# T9 r, u) \) m/ d' N
行的。
9 E2 r: S5 g0 E0 ?
. N" s& s$ S+ DLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
3 K* n2 X2 V% s+ g- m差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……3 ]5 C) W, Q' X0 R6 P5 I3 a4 p
/ g2 @3 `9 X; U. I" P
结论" {, r: L1 M3 |% B
8 A0 C" W) Z0 d; @6 B8 E3 u我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌: a. x( k% y9 T4 f1 E# F
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追8 |7 D( }0 M' G5 G( A. c) b( t
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”! Y' q, t7 c4 }+ g
7 @+ x* E: P9 mUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。/ K K3 ~9 R M
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
T; w; w; x+ K! C7 |+ V# A1 V' u! T1 h
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……, m, ?) m4 l& G" x/ A
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
8 _: I) j% U6 D, O9 Q' v% s不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
* ]3 I+ |- _& e# Q/ ]0 U+ e8 H8 ] B# l式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,: J" Q' o* O8 m& W
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
; f H, f0 l+ w9 G$ T里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
9 K' R# U) x3 q. X/ V- p& ?+ H4 S, u ?& }3 z2 E
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
' Y5 r! L3 c' M7 U8 N. L1 A9 c用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解7 n! _7 l1 c8 ]1 i% [) q
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
: j2 k8 @4 e1 D- \
# }. s- S6 e/ F4 s6 K附录: 我用来处理日常事务的 Linux 程序3 j: N( H& P2 B+ M! O. y. c& x
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
- j* A8 Q1 Z% J) `( ?% x. p+ M0 _3 Z是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
; Q4 Y" |- y) I3 P& F. Y. _你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
, I5 I# O* J: d; b& {9 ?工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
) J- t' X- B, k3 y3 B. d
) ]5 x9 N- F, n# l. }* W8 r% p如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
3 ^& D. T5 ?+ t- [# I4 h就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理$ g& E( `6 y7 t9 d8 b* W
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的* `- Y. I- e% [2 h; k2 u
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样+ c5 R: |, r- z, ?* Z& b
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省% @/ A7 t& ~ j1 h, N
已经很安全了。不过你有兴趣了解更多那也无妨。
3 e0 d" M+ ^3 H9 i6 H2 A X9 E/ f5 z. [+ m/ e
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
" J- J. R. K) b4 N3 m& w程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其6 Y& A6 B( y a# b
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
, G( O8 ?$ y* A4 m9 ^很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人5 ]6 `' ~$ X" H" A# y; ~
辛勤劳动的产物,是可靠的程序,它们物有所值。
8 o! k8 f. b/ ]) |6 d1 i) a |