我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
) @. q5 Z, d) B, f1 C, `0 k0 \Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠9 z3 U/ a3 x* s7 p7 k9 d% Z
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来; }: G) C- N' L
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows $ _: V3 R0 Q, ~; L( X( W( M
的先进。$ p% \% y! u+ @& C
8 D5 l/ m5 w$ X: j
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
- I; S: {. L$ n7 I1 b: U8 S z5 X+ s, X2 k9 G& G
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... * G V& S# D( s6 P
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
4 T4 ~, R. }5 u- a) l难道它们的设计者就那么低能,连个图形配置界面也写不出来?4 |" o; m' ^! I5 I
& L8 x- X1 S9 L, }* K3 z3 r4 \
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达) Y% I- h0 A1 W: ]) k4 m6 m% n/ f) S
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
$ s8 L, V/ v; k, o) n) q. |要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修, y2 z; q: u: r/ [ E, f
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设' z1 L# W0 @1 z- R* F- f% z4 a
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
% N9 D. j/ m" Q( Wsed, Perl,你会觉得那才是真正的自动化啊。* r/ s8 B4 w; n. ~- u
' z; o0 S* P. q4 n
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全9 h( e: z0 h) s {0 V+ Q, ?' i
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱% Q, }: m+ z/ {
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
- j# Y/ n2 ^7 X. _) T
) k8 @% c1 Q9 M# ^8 Z3 D" r b各个小程序的完美配合
. |! B' p5 G4 f4 u; N! h) `
. p* _9 a4 j, n4 J: D, g" E这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
/ S [' K' t& p: t% b2 z力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
7 B+ G- z1 s! q. U( p Y统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
! d0 r9 S7 f# Igrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
4 P7 }; @/ p# F) q; ~* f' W# s- x一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
4 {- L- H9 c& Ivi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经# p5 d, j) f- S; }6 e2 ? p
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
/ H) ^0 w8 X- b- a8 r很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做2 `! S; L1 U7 G
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可8 H: x3 M; @2 `- B) @
以在自己的窗口里“嵌入”另外一个程序。% w2 z# S( s1 h6 M
4 P4 g% |% {; [5 d8 J
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows ' v; P( K- p2 x
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,4 @2 e. B4 C" l* D! f2 H
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器," }1 l0 Q- r3 t2 q5 I
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。' X9 H, x( T7 { q
+ T" a \! D& L& `, c" }Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自" ~' P4 L! Q' p7 N- N5 M- m
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, + N" V: D4 i$ C! c* l- B
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为+ ^* _% ~$ H2 A" x% u, t
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
1 w1 `3 Z, S" I" l% k的键绑定,菜单组织…… 不能 DIY!/ c% A/ v5 W; H; U+ k, ^
. I; K, S2 f4 Q: y8 p
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
( S6 Y/ s5 B+ }; `0 U2 i么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
" O6 M ?7 \ R' [" Z K' S6 u面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
* d) S0 P" v+ z; ?7 s拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是0 L1 B9 ?' F5 @
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
% g) r% `( @+ F* p) G服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
o+ C L: {- [种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
; P L( ]8 K5 l( w因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
5 O# V. @2 g/ T0 i, x买全套配件!5 v4 x+ d, z% f" d4 ]3 Z, F, P
: [. f$ p( D8 a- [而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
% c7 { Q+ ~. r0 n也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图: @" I4 \/ X& E
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给5 b g: Y$ g) D) Z
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其& I3 S( x) {8 C- Q& |- q
它 PGP 程序。/ |+ m* Q# u& Q7 }+ a$ C1 P
, @ g2 C7 n; \, n/ W& s我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
7 a/ p; G9 v# G/ @* S4 m" S% O- O转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可* U. \* g* @ ?$ V) Q6 ^) ]
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以" d" h' c: h# e2 Z# \
分别得到它们的好处。
. U$ m( M# ^* V- `# r+ _
8 S$ B: k$ L8 R4 W学 UNIX 绝对不是浪费时间. t+ }# t6 k, {6 P
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一& q3 v4 e% `; v' k( m7 e( _
个星期!”2 \: l6 A0 @4 B
$ b+ R' g/ H' i8 O$ c2 d/ E
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
+ c5 _8 B2 s+ x5 I9 b$ N& C因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
* v8 z) u* u- R/ P, F( n, s的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
2 f! v9 c2 x- w1 ]Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的4 |. _+ m5 J7 @9 C, ?
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
: n/ Q Q1 L& Y/ Z3 S硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则( ]% Y4 ^* @+ x1 ^$ f0 O
他们会在20分种之内帮你搞定。一个星期也太夸张了.4 g, D# B: i. g; ?. O
# a4 R( J5 Y" W- } d: A$ Y
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定0 d7 L9 x' K9 b0 m! m8 R9 f) h+ |! ]
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只; _- }1 Q, g3 P! V
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
0 @; F: F- q5 r3 W) \$ P2 ^4 M3 f1 a2 z1 C) b$ r
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。. h+ ?0 u" q4 y1 _- ^
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模$ f1 X+ ~& L, W# l" Q7 D& o: P
拟你现在的工具。7 K' G# g. @- T( j' V
$ u) G) T I( l k
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
, b* D# K6 a) V, N& E% L没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
: U5 K3 O# E' w; D. I& V+ X0 ^% m直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,
" Y" \5 O, w+ H& G4 T6 g9 c# T现在完全不经修改还可以用。4 F: T5 }' N1 s- ~: a
. _* j, v" E" O$ h
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同: U6 i- \# m6 G. }8 u+ H
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
2 W0 n% n# G' a; h) P D! S能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
' B. y! F8 o" t0 E# S0 K要换成VJ, PowerBuilder, C++Builder, ...
5 A, P0 l" S* T
5 a1 Z+ ?4 a+ H很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ - d; E- I( Q6 K& ^" B7 d
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
* @# ~1 o& [. O* [断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
& d- t- h2 a* q) Q5 {/ mPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用# U$ l+ `4 q* L2 z
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵6 ]9 F+ a0 n2 r/ f- f
族的专业。” 这就是微软一手造成的。5 j" `% \9 R. F5 {- p v
b! [# A! d5 O( @0 k$ f
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不 }, e3 {$ L: q8 {! A
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工# U# l1 X# B+ S4 }! P/ {
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
& ~( Y: q% ~# x' |/ k位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修2 v9 [& ~4 w0 S/ x
车了。这难道不好吗? ?( i" @( R; G( Q' A7 o4 i' s4 c9 }
7 C9 y- z. E9 _2 L) w7 k) {有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
, x. G! C& H; O i% K去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想9 ^1 Y7 c6 l% T( s# J' f1 f
要傻瓜型的“微软牌汽车”吗?我们来看看:
$ X# Q1 h$ j" q: O7 t
: j% s" {! u' Q/ M$ Q你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
3 J8 Y! X2 C6 _防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
A s' h/ J: N- x一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机. g. y# b& M6 O# c8 ~- b
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微1 M. Y2 ^3 E& D \1 x F, s
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。6 J" T7 Q' q6 R9 o, |$ g
& x5 `) v: k' @# B最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
^& ^9 i/ P0 [需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告. Y3 {, _' y# I2 v: B5 H
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
# h& B/ j+ _7 t5 a人造成的一切死伤,微软概不负责。”" H3 M: [$ [9 j( M+ i) r
' K5 x1 |6 V, \7 \7 y$ H- X! v怎样完全用 GNU/Linux 工作
8 B) F; o K! H; E3 E0 Z4 o- Z' G# h7 b/ i5 w
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。( a) W. _) _6 C5 L" {, _/ c7 @! `
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
8 V; g, j% S$ H8 P汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
1 ^- }6 c; n& H4 X: Z# Y而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
' i G4 C& e5 }( f- o% P- Y序,信件,网页,LaTeX 论文,MetaPost 绘图语言。# K0 b# B+ N% E+ t
) T: X0 h0 S/ t2 _: g0 \" v- M我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
2 l0 i5 }1 h0 E3 m) l$ m' j的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
( X8 o5 E" \+ Z: v2 {6 W- _$ g单,而且效果非常漂亮。你可以看看我的TeX介绍。$ L; o$ c% t& T; }9 Q+ J" p9 w
( U/ U# W* b5 u0 E7 T
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可 Z q! ^6 o" x5 h7 B6 k# v
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了& ?, s0 i& i' R1 E9 a3 }! `; @3 f
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
9 \; k: x) }/ Y/ t+ a$ d5 {MetaPost 画出来的。
; l( ]- F4 g# P) X8 b8 {8 ~# @ Y
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
& H8 V+ S' R0 ]: u1 X现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用$ m% a& P/ h, M, c3 t7 l: ]
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
; ~% X' w, M0 A' X0 M我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,: O# Z% d; I9 l5 t; T( ]. ]
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序( ~% i( m$ _) {, u- V
还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运% w! Z9 g3 c/ ]
行的。. g3 s; [, e* Q1 B1 j
2 Y# e- s2 Q% j, n3 r
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
9 B& f0 ~7 I6 `1 g8 P! m( I! _) `. e差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
" O2 d0 m% t6 W5 _' B4 B$ Q
" W. x# G4 r ]: l2 O5 u' t- B结论
; n- y! X/ O: E; q! g
7 n$ t* L/ O& Y) C我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌* V2 {+ e; K$ e: X
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追$ O8 d; C# }9 v, L+ w
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”: j3 U; d! R* ^, `6 c
7 S5 h" f, |8 A- B' A/ @/ W( T) J4 oUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
2 ?+ [9 R1 [, B4 } g0 I我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。/ V( V5 B& @1 s. i+ e- Z A
b2 Q' t! d/ z8 w3 ?+ { b
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
A% O& x1 r+ g/ V0 ~$ w/ C这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
6 y( h% a4 T9 \7 U1 K0 v不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
6 a) p% Y1 w0 O% q( z# g% E) a1 D式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,5 T! w" u8 P* _$ W' ^
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
2 m% a6 l. _. G$ g$ N6 x( l; `里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
8 h6 d9 N# D( q. n0 l4 C1 Y* Q+ t% V, S; {" j7 d7 {
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
, O. N' M: [6 j0 o7 q( e用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解7 A5 {3 _1 F( N, }
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。. M9 m* l" v8 d: K
* x, |/ F1 \; E7 m4 P, l
附录: 我用来处理日常事务的 Linux 程序9 q* D5 e+ Z# y7 _! ?6 }! D: k
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
6 ~+ C9 ^6 G2 e' C: C是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
6 r6 ~) A$ f1 e8 I4 P5 t你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。7 d; }+ U. g% [! m
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
! P ]* m8 H; e, f7 D& F) n8 r8 L7 L E1 e
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那: `$ A5 p9 a3 [4 B: F
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
/ h+ z# v0 q: X& @) L$ t2 c员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
/ T$ S! w; B6 z7 c8 H- T机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
- G, V8 m! W0 z6 F/ X会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省8 S% H( \* n3 c% W3 F3 {
已经很安全了。不过你有兴趣了解更多那也无妨。1 q2 T+ a, {2 d7 h8 a
6 }4 c" T' B7 b7 h下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工1 H2 a5 W% ^, o2 k' Z
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
6 u" L! t. Y; R; R1 R它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们4 @+ X; D" w1 x4 B* D
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人1 D$ Y3 W0 F: N. o
辛勤劳动的产物,是可靠的程序,它们物有所值。& h; x* M" ?4 ~
|