我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得- A8 e) g9 p* O& r9 H
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠" W' T3 }% P0 |, i
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来& t& S4 M( J( L: k5 T5 g' g
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
- x7 {' p) L) n: ^# j1 N6 ?0 M的先进。* v8 U: Z7 q8 u& n+ H
9 K9 J* I( p, T0 Y1 l8 D# Y
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”+ m. g/ u/ \( w
; G0 h% a# w7 ~
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... , t+ i2 ~$ j+ C- [- r9 |
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?* P, c1 z/ D* | ?$ S
难道它们的设计者就那么低能,连个图形配置界面也写不出来?
* J L% n3 O# H3 i+ ^
) o$ D' G" \) o/ H当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达$ r/ |7 E7 Q% U+ Z
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
; I' A2 _6 @* Y" q. W& s要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修5 Z4 m0 x2 v+ ?
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
$ p3 t1 m, B7 X7 {# W4 d置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, ' ^. i! b, a! C' E1 @
sed, Perl,你会觉得那才是真正的自动化啊。7 j! O( I5 s* ]7 n
2 }4 |4 s. g' H
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全0 T" ?2 v9 x" t1 _3 v, m# v" |% S& W
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱5 X& X% S$ `# f, ~* n
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。6 ^6 @4 I( m# G! J7 q! \- j
: Q$ o: l+ e- P+ V, a各个小程序的完美配合
# W! v5 a; b0 \3 v1 N
, _) \2 Z7 f: u! J2 ]这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
m" q; `4 ]# t力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系0 `" a: u( E" J$ w% S" L
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, # i" _4 o: @: S' }, ?( O& P7 s5 V
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有* O8 A9 {3 C: [2 ?$ a3 z I9 C) H
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
- d- Z: [4 i, k4 Pvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
: b1 d& W, p: j: y" D5 B6 X8 L0 c设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
% V( x1 m7 [: ?. V6 t; R' G很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做, Q, L' W8 f" y* y$ _: o; g% y
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可; e2 K$ ]( W8 U) X+ x/ E
以在自己的窗口里“嵌入”另外一个程序。
2 w- [; C2 D; _2 z, ]& L% f% Y
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows 5 M' b/ v7 J/ O$ n8 }
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
9 g" N I) F" P程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
- I6 O4 `! c7 j* G你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。3 b1 q L. k9 B- H
+ ]+ { a: f5 u' q/ b( t3 p
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自8 s5 I, o8 h* k0 H- x! n
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, 0 o- u% n! c% P! O |% A3 v
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
' B) @; V/ {$ o& ^! {& z了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器0 N6 Y5 q1 F3 z9 M
的键绑定,菜单组织…… 不能 DIY!
( t, D4 P3 t. |/ f7 x4 w- b! `0 z; e$ Q
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
1 E g' S& y1 N$ w么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
: h6 T# i& ^9 f, Z* W面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
, }6 } ?% \' B0 F% ?( K1 Y! z9 c拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
: j* V2 ~. p! r* _8 H& l, Y大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
$ z, h# n z; ~/ v6 ~服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这) u6 p! Z* O; f0 c6 Y( g- H, |& C
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,3 U% n& t! a' X) o4 e; C6 W$ D# u6 V/ J
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
; m4 V6 n/ x- m" K& B4 F* o D+ [买全套配件!
" d v: ~- C6 b3 q" A0 H' h& q* ]3 r; u& U" w( p% C! x" D
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM 6 Q7 L/ R. H: m0 }8 g5 |1 c0 T$ Q$ i
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图; ] y( z3 B% K d
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给1 S" _ y3 ]1 V( l2 ?7 A/ O
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其) P: {5 P0 E) f% f/ e
它 PGP 程序。& ~& w6 A+ z7 r4 ]- n \
) g/ [" i7 l8 O6 {! q% A
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
! J' ]6 O+ i0 z5 O转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
. l) m3 a* C9 U s/ F+ J以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以; i2 S. f9 X/ |
分别得到它们的好处。
% \4 H+ Z# W c# M$ [; B9 D1 u
4 `9 [" P; T, k# e! m学 UNIX 绝对不是浪费时间
) {& C+ U0 N; p, p* K3 ]% n有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一4 p: r. {. y+ a. M5 w7 \
个星期!”
8 p* S0 v* S7 R% s" {) F# p- J% l
5 J, r! M; N; W6 ~; O0 \; n首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
: m6 M- R! r/ s/ ]/ x因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
! [- s5 s( R }4 q( J9 L/ L4 n" I' Q) X的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为+ F V& `4 z: _9 V" [& S7 V) ?
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的/ o% N6 s& z% R3 ~0 x
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
) `: p& G: W7 x/ v硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则" f! L7 R# ~& ?
他们会在20分种之内帮你搞定。一个星期也太夸张了.
% R, j3 b; O1 w I# O# F0 Q4 x# H$ D9 _, C# z: i
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定, {) Y+ b6 D' O0 `
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
0 z4 j- ]1 P$ ~, c用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
' M% O# J. ~3 W3 |/ n& ?5 c3 E! I8 j4 z% M
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。$ K7 H: [8 o; O! U n# ?) v/ C
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
% d7 H0 n; t0 w1 T) _拟你现在的工具。
& d s8 x8 `& g6 z. F. Q' `: b* o& ~ ^7 V8 C5 O
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
4 Y1 @8 r/ r/ g9 j) n没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,# V/ G9 l! L# |+ v
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,; l+ l r8 ~: \! R* I: B5 X
现在完全不经修改还可以用。
) m7 I7 l) N8 z4 |" F- p, s
$ W3 I; h& `( x+ {4 b% `# A) U看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同3 K' u9 C/ r* ]2 u& i+ i; U* [
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功0 \/ j; l, |6 A% x7 x6 T; l- Q$ ?0 t
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又 l& P. x& ^! M* R+ [1 e- ]
要换成VJ, PowerBuilder, C++Builder, ...
7 `( I# j" c5 K; f+ F0 m
4 o+ g* b7 R7 W很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ ) U. T6 D# _7 J# W$ W+ ^; \
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不* u" e) {: n4 c; S8 L, ? v
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
# B W, j$ n6 r8 F2 A W: fPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
2 g% h: M/ y( \* WWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵$ B# A: x; T D' P3 S
族的专业。” 这就是微软一手造成的。 c7 x" H8 i% s% X
1 r3 F! M. U$ Q0 T4 ~" t
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不& m% Z" f# M) h; d9 E ]4 j6 h3 R
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
+ G9 T$ [3 v- |+ n0 U6 R具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
( [1 v+ d# g7 W! E7 Z7 P位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修. c9 a$ a; ~& ~9 |
车了。这难道不好吗?
$ w, ]! r! n1 }4 Z' M1 A
* N5 }( O0 r" u7 Z6 ~# {有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你$ K! x1 f3 V7 c! Y0 e% ]: `. O
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想( }; a, ?9 T; `8 E: m+ q: y
要傻瓜型的“微软牌汽车”吗?我们来看看:
. W5 H t, @4 u$ y3 |, B
5 ^4 O1 n8 r! D& k6 ^) j6 R7 m你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的- I/ ]- {( M, C9 R0 [% g0 `$ s
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换 D8 h c# P8 R$ N7 z3 \7 L+ O
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
5 z: [. A! r f1 g, q' K- v! v油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微4 k' _9 }& W% Y# t* }
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。; M9 V! }* _3 ]( d! [
5 i7 Z( _0 N8 J最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
l$ T; m; P+ q- ?+ c需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
! O) J Y% d7 O! p$ f微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家9 h5 h0 T$ q% u' n l E L
人造成的一切死伤,微软概不负责。”" \# r1 Q7 t# B2 O8 K/ z; S4 T Y+ }
8 N9 r& p3 E3 S, L$ R怎样完全用 GNU/Linux 工作
9 b% v- d- v2 L: \
m$ T" d! F8 S3 A* n说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。" L5 h. Y5 O/ e; P6 \
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
# ?5 |/ a/ k! i) N, ?4 w汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。# m# D5 A9 d% \1 J7 U4 K7 l
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
. w" m9 R2 }# [6 l9 q" r序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
6 b7 H- c- T/ ?8 H$ ~+ J+ Q: H0 T8 P/ w; N
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便
' r) S8 k0 D- w2 n9 Y的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简+ A- y. X) ?- }5 t4 o, {. G
单,而且效果非常漂亮。你可以看看我的TeX介绍。
6 w, a+ {' w% m/ X( Y! `, O; F
" q! {# Z9 y% p7 u, C. l5 ]至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可 [6 D9 H' \! o) M: {- i) F# e
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了! t; f8 S- @6 t& v7 L
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 5 r% j: E6 e' s5 c
MetaPost 画出来的。
) S ?+ g/ K1 M3 @* ?. y; J! b+ c2 Q2 P
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
t4 a% q- f& ?3 L" J5 E5 O( \现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
# O l) U1 h: a; ^0 o: f这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
' L% F: y, S0 J0 @3 }我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
$ u+ w7 I) `5 g7 v0 A8 _* D/ lGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
& M" T; ]( q; z t# @7 x还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
3 f, @& Q7 C6 o- }行的。9 U8 z% \# @, R
1 `( V1 P" W# i. b1 f( ]
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
, V1 v' K' r! v q$ y$ f差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……; I3 Q. W# K* J6 ?" r2 |+ h
+ [* Z5 S* @, D$ ?结论
5 o0 q* w! L5 G& V% a
3 B9 S. y. w/ a" L我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌; f v& X1 |7 G; V- u q
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
9 r/ F2 ~+ d* p, h0 V赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
6 o$ R7 c, t @6 C2 b3 U( b
& o! t c1 {% G. Q: O' }( wUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。4 m: a* A( L% g
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。. ]& \2 |; l" h; C) S+ G4 w( n
7 u) m8 n$ F4 z! r消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……3 A8 E& J" h- p0 r; X
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
* Q% Y, o5 @' u2 c% H0 v) |, o不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方/ S6 m3 p J; H
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
+ z5 @ L7 X) C' s" m8 C" R了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑1 d7 I& O2 e i( ~1 x
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
0 r! \- Q5 @1 r- d" ^, X9 x' L9 M: n4 s
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
* Y" z& J8 ~5 H+ O用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
K' G, L6 \% Q: a* X决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。- Z. ?! d& O- ^
" r7 G$ g! b9 @! {
附录: 我用来处理日常事务的 Linux 程序3 z! j1 _) [) n; ?" M' y( q
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但2 R. K& y% K+ S7 V* f7 i
是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
; t) O! j+ b, \* @4 p2 A你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。( \# I' |0 \- D! t( \4 J
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。! c1 V: r7 @/ D2 G; j/ \: l& s
3 {+ h+ x( D* A* O- C如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那$ P& F v+ l- |2 U8 {
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理( f6 N8 g( f: T
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
$ a9 j) E2 Y- ]: I8 ^. \机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
; k4 \' @ W: D- }' l$ C会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
* ^) s8 g8 f8 e0 E4 K: w已经很安全了。不过你有兴趣了解更多那也无妨。
1 \4 {/ R3 W, y% E* y1 q2 y* s; S/ z5 @. \
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工2 Q1 H6 b+ ^2 N! w1 a
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
0 t8 G. {% q# u4 [它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
# ?$ q, N* x3 R6 {7 e; U4 P' o! D4 R很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人. J0 k( m$ ^& R) v
辛勤劳动的产物,是可靠的程序,它们物有所值。
6 G$ K0 w: t; Q6 G, [ |