我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得' H. J6 j) `/ Q* S$ c
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠) H) `5 R4 T+ W3 U- s
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来$ |6 I- q1 o) s4 n% g3 v
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows ! ?* l% \( i! C9 X& V$ `& f
的先进。
5 E+ w! e5 q3 j! h
1 `8 T/ b) \ s! H( b- V# {6 |Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
% I( ?4 [9 V1 `2 W; Y1 V! \
2 c _; E6 O4 ~看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... - }! X( _8 T( D2 C- h
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?7 a2 S+ a" {* t* J/ k
难道它们的设计者就那么低能,连个图形配置界面也写不出来?! {9 a$ Z0 P9 V! Q" @7 c- l" }
3 F p$ m# e; t3 p* F# u当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达* g+ v( f% C9 Z0 B! V9 U/ S
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
( D2 w2 a6 l, t; S要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
) @5 W5 e0 U8 N) O改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
" |& h0 i: `; ?4 [, U2 F置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
% Q' {) S1 {/ csed, Perl,你会觉得那才是真正的自动化啊。- {2 d) t n Z3 K! ]; [5 O {
: y4 z; W1 H* D# t( M2 ]/ x2 \' K
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
" R! C) A' v, i5 w+ G, ?明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
r' d z: g8 W- @点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
6 x& K) H2 }7 u4 Z
" ]$ E3 _9 ?/ _- {0 X, J. e各个小程序的完美配合/ Q5 n$ m& F9 `& d( V8 C4 i
6 E+ k& s% Y& L5 ^
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
, t4 C8 R; h7 `9 ?' r7 _# e' J力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系' h: O1 l& |0 D9 Q
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, & s2 e- L; x* E
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
- i: M/ z$ X9 o2 x2 O一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
8 i6 z. {- E' Ivi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经/ \! |1 j5 r. ]7 O7 m1 x
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等9 i/ w( O( B$ o: D
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做9 n5 c+ K* K9 C+ z4 Y8 D9 j) B
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可1 D- X6 n3 A& d! W% ~' E' w
以在自己的窗口里“嵌入”另外一个程序。8 H0 J, G* A4 e# c8 z
1 J/ f; T! a- A( y. v2 f
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows " t. I0 J0 E# V: z
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
' f8 J A: K; S: i0 ?- j, z程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
/ G, d* w2 R. k! t2 v你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
0 s9 t' N+ b( f7 I" @3 m$ m( B6 E
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
7 o: J& ?2 N4 J, [& m' s+ N己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, % s% W2 J" f: l/ D
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
1 I7 h1 x: a; u7 J# r# t了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器$ b: {! M, i2 o, [& t; U
的键绑定,菜单组织…… 不能 DIY!( j, K/ V1 B6 q
6 x, j% B! Y" a% e5 h9 c I6 H
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什& M1 ^# {# P: r! i
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
# g6 j0 \1 m2 ^9 P面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
5 O. w6 K0 l4 G+ [; \: X拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是8 l1 K2 i3 s- l8 y: [* Z* g
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和8 T8 @9 h4 [. N
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
+ ^. ^1 I8 Y5 k6 c4 D种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,. C1 i4 M+ v. E7 ~+ D# r: d. M
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
/ m! M0 s6 [& _$ C买全套配件!
7 `; O: c5 o4 c9 c6 ~2 q4 u$ b( Q$ p# r1 f. N0 P
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
+ p+ J$ H# n. x( e/ s5 T也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图& X2 h& Z: }3 I" |1 X. `- Z
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给* R& N( b' z5 _5 P3 L- ^5 r8 A
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其0 v& E7 J8 U9 x* f
它 PGP 程序。8 Z; {+ T$ a4 Y O O, X( D
1 N2 x0 ?* ]% [* i% b6 _+ t1 p! a
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,' y, F( b9 }+ W$ n( O$ Q
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
5 Q7 t5 Z1 c- w) @5 C以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以6 u, [6 y# e2 ?
分别得到它们的好处。
* @) Q- N; ~# D3 j# ?4 f- R
7 o% O& Z; l1 O n: `学 UNIX 绝对不是浪费时间4 g: v: V: r' H! Z; z
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
" g# `! ~, s' A1 \4 p' o" K+ F个星期!”, J" z& t. P7 I/ }! r) W
7 S+ @9 G+ C' ]4 _首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是: ], z$ f( A& p0 v, |: U
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
7 f- S3 | L) t7 b的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
# V( |; p; S; I0 ~6 Q2 sWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
1 N U/ o! C% R) V' B% k" A. T' `机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于! S: W1 i: N$ G9 V9 p
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则" C* i# ?* V$ F
他们会在20分种之内帮你搞定。一个星期也太夸张了.
, p" ^) Z$ [$ b) G% j- a1 h5 n5 z" v% A2 r' x/ w/ R; z9 o
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
, A6 b) }' P# i8 }2 i会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
' e5 u$ C0 j8 M2 }用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”: Y- y/ L4 ]6 Q2 u( e, d- s8 U
+ \- z" b7 I4 _
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。. D1 q( K1 y$ c/ M/ N1 y h- m
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模0 ?) K+ Z( d" G% U
拟你现在的工具。
1 T4 ^4 @6 ?/ Z, n
9 m/ O% H7 n0 D我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
+ \$ C1 B4 A A: }& {没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
# `! r: {& W) b C/ A; O; z, S直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,7 @. ]% |- m; f
现在完全不经修改还可以用。/ T' r9 a+ Q/ C: X7 ^
0 M3 b" N4 b" P A- S. y+ M- f6 ~
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
- {% x& A* F$ [, T7 n% n3 b了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功/ m9 @* A; K: t6 |) B+ B" `6 Z( K
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又& D1 ], f( i3 a
要换成VJ, PowerBuilder, C++Builder, ...# K9 X8 T- v: b0 O" h4 P+ j/ s$ {7 E
" N# L8 q# O( e! j3 j0 `& N
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
, r7 X5 m7 k- D/ PBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不: B! U) s j7 }
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
7 s5 ^% C0 v% N2 Q5 N5 q% wPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
c7 k! k, m6 Q$ f9 V, @- dWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
! u3 N. D) [- K/ `, D0 v1 H族的专业。” 这就是微软一手造成的。 X3 k4 e/ T3 o* S6 |5 ]8 K' r3 q
% @# H" e& }- c7 t2 A6 f
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不
v- k; S3 a* D( e使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
; Q0 I/ z) [$ Q/ B% I m# X具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的& _- m" {2 a# P2 @+ G% C! e5 c
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
6 H& j/ E; i1 h' Q# m0 m# H G车了。这难道不好吗?
3 }9 p Q* L9 H5 e, y/ Q/ j) p& q6 y$ C# |; P- b
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你9 q% p y0 p/ d5 K7 x) b
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
) m @! R- S; _6 f2 X1 [7 m要傻瓜型的“微软牌汽车”吗?我们来看看:& F& H- T0 s0 O' O$ _7 C0 M
7 Y$ T& c4 Z1 z6 G: F6 ?% F
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的0 r1 ~* ]: m4 l- B* w- c/ g/ j( v
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换# i* {! r4 A }0 v% s% g3 \. \
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机: ?" s$ E) P: r2 E" F; O/ e
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微+ ?8 B, N( V& b' c. h* {& p
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
! K8 L0 `) j- |, E% G0 z) _" R
; y: M1 G0 j" @: i最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你% g8 o9 {3 N$ ^
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
$ ]1 D* b! b5 }微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家( t. B1 I! Q! F; X
人造成的一切死伤,微软概不负责。”& [( a: p5 ^, I: @+ T
8 F+ z" J" R# E2 h* S4 t怎样完全用 GNU/Linux 工作
% f. x6 B6 v$ q4 ~' g1 m2 }6 Z/ v# O7 }% M i7 F) O. t
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。6 }9 ]- B) Q8 G
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
; B$ Y& P$ S3 `# X汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。$ ^+ s5 a/ B+ ?- ?# W
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
5 F8 }. e0 a1 }7 j序,信件,网页,LaTeX 论文,MetaPost 绘图语言。, ~2 I w; g0 s m& X
0 y, G& y4 \$ X: [7 V! @$ J
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便3 i- _' B8 i) u0 E c& P! v
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简6 z/ S( N; L$ v* _3 {+ x- `9 q
单,而且效果非常漂亮。你可以看看我的TeX介绍。
+ Y r6 R- |5 ^6 T" D3 o) x. r- I9 X j. x: R
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可8 P6 a0 k* D) p& U% P1 N
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
, L. h1 K$ X5 F" u; C4 TMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 8 z |, P) W: b4 _2 W
MetaPost 画出来的。
# R9 _; z8 G0 b. r( h3 l+ `( J6 o) u$ L
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发# @( v0 ]+ \; o$ M1 c, O1 m* i o
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用2 p3 {& }% Z4 U# P9 n' g3 U
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。" \/ B! x! z0 ~3 c. n2 R7 }
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,# L3 k* e. H; D- L& `' `
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
( R( P' ]$ O. T* }/ ]还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运& ~+ P) Y( X& |, U; ]2 g# A% T* d
行的。
7 E5 F5 g" w9 P' m: `7 `4 M: ^" I: K2 |0 x: C( p! S* _
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
% ^. ?3 P$ w- d6 I/ b7 V0 I差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
5 H8 x- ~7 |1 I( a f
$ t/ I: b) m7 J+ E6 P结论
# Q3 `0 s. G1 i6 g h" u+ j8 x, O+ p) ]) _
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
1 C* T: H/ o3 F' A( y9 o9 x) P% |输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追8 r0 p: T# T1 x/ O$ |7 I
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”, r0 ]0 ] Z7 u' w: H$ \% o
% u- @8 E5 T$ U; {- d# D7 X( Y- B
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。0 I' L. C5 U- k! H
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
! b' `5 A5 G1 H4 e8 w
6 N- c! g6 {' b+ Q v+ j消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……: i% ~4 s1 H' g; H" o$ ~; q
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,# @7 p) D) W6 ^
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方$ k- [; R8 z9 I5 {
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它," Q1 N' C: G0 K; D1 l# j1 g9 p
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑! C( e3 r/ M3 _' y: }
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的./ t9 w9 y0 {& j$ g W( [, c, o
) e5 M/ j) K( ?2 r3 J" u我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利% C' I. A* R; P1 K
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
7 a5 L/ m" a! ^$ b I决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
' F! s' H; ^) A* b4 }7 o) i# @3 v5 R
附录: 我用来处理日常事务的 Linux 程序* _1 Z7 O8 M5 |
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
! H, \" e8 K0 G1 ~1 M$ N是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
. x' t8 n2 ^$ [4 P7 Q# J+ s7 U你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。 {: G- U& ]3 O
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
2 \ g5 ^% \; |2 u& a6 o+ I; J, \ T k
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
& e( \# V& } C' h+ v* T6 S就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理- F' I0 G, T/ w; T0 K
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
- A' ^, e4 ~: v; ]机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
2 A2 F& M" R" ?+ x& u会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
9 @; [9 U9 Y; N* P& ]( g* Q已经很安全了。不过你有兴趣了解更多那也无妨。
- s. w8 ^: j- l
, S' y* i5 P* C下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
1 c# |6 L% C2 _$ Y4 w) I程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
9 b- d* A0 u& @$ C/ g它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们8 U1 k. D& B& f# ?2 [1 _
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人+ R- C! I- V* F6 Y* N0 f
辛勤劳动的产物,是可靠的程序,它们物有所值。
3 G+ `5 [0 x0 j- o0 j- S) { |