我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得4 G% b" s+ N5 t" q
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠, t3 o: H; A$ A% J3 p* i
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来. Y" t! ^, l) U( X ~/ V% r
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows % H2 h( n3 I0 e# W
的先进。, H7 {) X; P8 k
% \1 z2 y" ^, q/ dLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
8 V) s6 T, P$ e# w: ?7 A- [6 f+ K
9 V5 z8 ~7 P9 p看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
* R8 Z) k2 I% j没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?* v3 u) H j# G( F# ]7 `2 `
难道它们的设计者就那么低能,连个图形配置界面也写不出来?
/ \2 b; B# D6 X5 N0 i" N. M' `3 i4 e& [* ~
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达+ ~4 W. D9 j1 ~9 {
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
; d2 p1 V. r. L要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
1 d* e$ n7 i3 F) p% X- q改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设; B6 k* K# j: K- d* c
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, ) N$ R! ?& m/ p5 a8 S! ^
sed, Perl,你会觉得那才是真正的自动化啊。
e5 }' ~, y& ~3 |/ F+ C- ~' z3 r! t
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全! N5 w! o' G' W6 V7 M
明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
( k4 \ X: V. m* ^: M( ~7 ]点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
) F+ {/ K3 Y" b1 S: K/ s" \
3 F$ m) `1 B8 c k各个小程序的完美配合) J$ K8 I7 [5 ~! T5 Z4 b
; i% W- V: w5 b; b5 y- s这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
5 n5 p1 o& ^( x: o力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
( }4 X$ X c+ J- }, D% D5 V统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, ! M& W) i& |, L2 O
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
' A0 W; [5 a i8 g, T0 j! a. o6 B一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
1 L3 b# z- X( Q- }& [, s6 w/ ]vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
6 {( p5 g. M1 {' m8 v9 e设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
, \1 K" M7 F2 X很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
8 b2 \/ h1 i" P: L5 F) V; X的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可( {6 C" r$ z8 d! T6 ^) A
以在自己的窗口里“嵌入”另外一个程序。: C \1 |4 N# e/ B
" U- d; x5 j: ?2 J0 W+ s在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
0 w/ e+ @4 P* ~( s( b下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,) H% |$ k- Z# n0 ^9 u
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,3 q) k$ G# R& d
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。* Z- E& y8 [% o: y) O
5 j3 @) j' h+ w3 EWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自$ V' |; f6 O/ }1 Z+ g6 l% z/ \
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, . ~: Q& T0 j0 E. B
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为: `; w( L. D$ L z- g
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
8 T) u, ^6 c' l6 q2 L2 c5 b% c4 S的键绑定,菜单组织…… 不能 DIY!7 B. G0 i+ Z2 E% v4 M4 v6 \8 P% N4 d
7 ], |) R7 ]" [4 L% u3 W8 q5 x你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什) R' z$ P4 B5 A0 i3 N$ a
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版4 l1 Q0 d* C+ [+ H, m
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
) Z, V2 l: H5 U; X9 \/ d拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
( c' X9 | l# l9 u9 Z大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和6 M; y& y1 _ z0 v/ m7 r# X. S
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这" Q% p. a0 q! e* z+ t
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
" y& z% H) S& @) z: b% u, T因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
* z- z: p; P n( v买全套配件!
1 {: p0 F& a3 _( k4 G; W; P, P+ V# `5 ?2 l9 O6 W b8 |/ S, W7 ^
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
% r8 o) y0 ] M也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
# N9 G, Z7 L# B/ N片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给
" W1 h9 d6 R4 [' s: ]- @4 `Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
( O7 d6 y5 ?2 k) K4 n; Z- ^它 PGP 程序。! [+ M5 v, Y. T0 F7 G' X
1 n2 _% |6 \6 j3 W我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
9 y: G. `6 |0 n转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可' w, v" k; q% x7 o# D; U% g
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以& w% a4 O; _$ Y b8 A. g2 Q# t
分别得到它们的好处。2 |% D* a1 d. c
. R3 [) y# }! G; Q# a9 e8 ?学 UNIX 绝对不是浪费时间* j7 h: |) F$ ~/ L$ _
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一5 j- v% H! ^. w6 Y b2 `
个星期!”
% `) @. Y0 t- Y4 w) p, R( Z
) y1 P6 N: l3 e% Q首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是$ s% h4 p" m8 A) p2 ^: w: j
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
9 t% W# {. c$ R8 R! y的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
. ?3 A, q1 ~) ]2 t$ ?& H5 nWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的, q5 d! ^( _' G' Y( n, h
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
8 H$ \* R- T; D2 h硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
; `; E8 ^, X, O/ z/ o他们会在20分种之内帮你搞定。一个星期也太夸张了.
8 X! ]6 c/ t/ v2 N) n8 m C
: G% y& U% P$ w5 m6 U如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定+ D0 n$ A3 W. r9 C C% s6 y
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只7 T, ~( L t9 D( o7 l5 \* B
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”6 k9 ^6 Y( W. w2 k& P: \
+ _. @8 |7 u2 N7 D
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。* ]" {" k7 W/ R. p! p- K5 |* I2 Y+ _/ s
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模1 h# ?$ O* A) K T8 }- g6 e
拟你现在的工具。
+ l/ \6 d+ Z2 E3 [( g8 g
! a* |4 B3 f# n6 ~2 i, H/ { L我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对- s/ [, N. ?7 b* j$ w/ ^) ~
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,! X; Z1 k3 N: ]. Q( B
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,
: a6 T6 G6 V4 k现在完全不经修改还可以用。# ~$ V) K/ n3 V! S& [& h
' E! B \! N. U( [
看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同$ Z& F+ f7 H$ k; S' I6 |3 a- J
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功" p# z* U' ]( H1 L& R% H( `0 R
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
7 o* n; n% ]9 T要换成VJ, PowerBuilder, C++Builder, ...
H, H s/ s! ^0 _2 T
1 u8 R1 V! h( C! G# A, F. |7 A很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
$ {; S- X: D: {, q9 Z2 U' VBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不3 O* u/ k0 N5 K: n j! T
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft 6 U- n% _% u) y3 o+ b
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
4 S: J2 r! u* e/ ~% l0 pWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
* B6 q0 a. H4 _5 I族的专业。” 这就是微软一手造成的。
v2 ]' ^9 r) A
! Q- Y2 `+ j ~, X& T0 i- ~这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不& T6 s6 R* C; t# ?! \+ U2 O& C
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
9 y3 `" G! [! i- C具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的) ^) O0 J- r! N0 F# z
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
) B3 P+ w: F+ m$ Y7 I, _$ A9 Q2 z车了。这难道不好吗?( J* ~+ u7 d; R0 k/ a+ W4 u
- c: j% U# ]# F( F0 Z5 O有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
( Y9 K- g( F! `4 V去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想9 S. W! d" C5 u Z
要傻瓜型的“微软牌汽车”吗?我们来看看:5 Q* [1 g+ N5 R. j/ [; G m. N) @
' x9 @% g8 x! {& _+ @2 W
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
6 L6 D3 v T F3 Y4 C# o6 a; \" i. a) E防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换/ G6 ~& }$ ~0 m9 W* g' K
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
: Q% T- {' ]8 r4 t( \" P油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微9 h4 f- H; \( n/ U4 K3 |0 o
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
% K$ m6 Q. O& h6 W' k8 w. A
( B; f1 v$ [9 ]+ b" c最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你" q; c; C% ^. ]! k7 ^; a- A
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告. g3 j0 b2 X* Y# S% m
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家( K) I6 P( y1 O8 r- c) ^9 T
人造成的一切死伤,微软概不负责。”% L. w+ W7 w- A% e4 A( t
, ?& h$ e8 @& @. }$ w怎样完全用 GNU/Linux 工作; d# z% W+ U" P; ~) V0 ^: e
+ }) C2 y, i: l, U( z说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。
[' K; d. Y5 ]: b. x7 f( T( P; w半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
" y* K: h" k8 w2 L; H: u- t- X汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。+ R+ l! Y$ ]# q7 X9 }6 D! T
而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程
, m% g+ n$ T" u" i8 s序,信件,网页,LaTeX 论文,MetaPost 绘图语言。3 h5 Y7 w8 h5 ^4 R K
& ]9 m% @3 H: H- b; r
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便& ^0 E, D/ o' ~2 L
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
) c' H0 t/ N( J# @- v单,而且效果非常漂亮。你可以看看我的TeX介绍。$ `4 a4 ` {0 ~! d5 J
9 d1 ?( r& m# b, O
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可$ w w' B: `4 r% u6 ~- S9 h# ^8 _
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了1 m Y& M' ?" |6 d# O7 m2 m# t8 V+ h0 p
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 9 }# P$ r; V; g5 w. ~) z$ l9 d
MetaPost 画出来的。7 t. q. d& z' q
' x) H. p0 {- H6 j: C9 S
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发
; ?; o# ], h4 b8 n; L现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用! l9 Z0 S/ e; k
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。0 ?- Y- v' h: E6 ^4 } d6 }9 H
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,6 n$ S$ E% ?7 y5 J, m* b+ V3 j' w# q
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
- H* {1 c: s) D还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
" f8 }/ s# K" u' @行的。
7 A1 ^/ ~* t r" O- c# ^
+ W9 M' s5 g# _8 F" a1 ILinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很0 v" c, h5 l# v0 q4 M) H# n1 D
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……+ \+ M: {( O( ^; W* t+ w+ l
$ U/ K7 D/ |/ G* _! @结论1 w: v( h5 y2 p3 q
: {+ Z# e% T n5 c" [, K3 |+ x% \
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
# I9 L- {$ d2 w& e输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追% \' O! H- e1 g3 Y
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
' _: n; q5 f: V- g& i1 d) N7 m- D" P, |% S
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
, `/ h$ v' G0 x: M6 M4 }我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
4 t3 U6 `6 @8 A0 H3 Z) w) I s% H6 `4 D& ]% r, H
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……; R( [+ ]) F7 O- B
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,: R) H' K6 h( o$ ~) S _) |" I9 p
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
- ^- V9 `7 ^& j; Q8 ]式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,4 p. A3 ~) o! n! v
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑2 w o" O# h9 a) @7 p7 C+ N9 B8 D
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.
8 L ~$ ^" X* j# N: {6 _4 U* V+ ?3 w; n: ?/ i
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
8 ?+ J" q% w& }( h( L用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解( V7 C3 U8 M- ^
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
, M- p+ z# E }/ t2 _) Q2 d$ {' J3 S* H
附录: 我用来处理日常事务的 Linux 程序
0 Y* ?) ^/ Q" W! c! e好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
- M! J3 G; ~( A# ^5 I/ [' B0 H是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。" k8 I: K4 O+ A- c
你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。! `8 e0 }5 U1 f
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。4 U- i; j% L. r7 L( r0 U1 V
9 B" u" L8 _' ] l9 M3 j4 Q
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
) _1 l1 B) T2 u+ k9 R1 U9 V; e就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理# e* r! c( x7 k8 C2 d1 m5 x4 B
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的' x5 j% ~! w7 O: }; Z
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样; B% g8 T7 J: ~9 ?
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省( {5 y% q) {9 a8 M# c) n% k
已经很安全了。不过你有兴趣了解更多那也无妨。
( n. q7 ~3 G9 a- E. E( j- X
! h% N H' k* g下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
; L1 r( _9 a1 I$ B: t# e1 M/ [程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
+ H+ z( i0 z0 N它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们$ L7 b: _+ e: @2 T; @
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
, q) W+ n) @" t辛勤劳动的产物,是可靠的程序,它们物有所值。
V* ]3 F+ S5 p/ @# _/ [8 }# B |