我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
+ }& y$ Y% d% N& V8 `! sWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠2 g% ~" {' y" \9 G8 u2 K
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
* c* v8 l& d" u! p没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows ) }9 ~7 S+ x, f9 S" H
的先进。
6 U8 s9 J% G5 B* D T& C! `" T' i5 [& p& ~: W* [0 w) w
Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”& F/ {- o( }8 s
* _4 B6 r6 c% T4 z, i( s* D8 }, C9 X+ ?
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... % C& W) r' V; ~
没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?
+ y4 k+ Z9 Z+ X; C3 [4 X5 X难道它们的设计者就那么低能,连个图形配置界面也写不出来?: d& j3 n" h0 f9 v& [1 t! a
% \0 f% k, W9 ^
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达* |9 X S! h' Q9 Z3 h! @
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需% l% ~2 U' _4 T3 E# D+ ^
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
/ B) N3 T* G( R- e4 Y改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设- i2 k( P* }- x2 Z4 g
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
5 k0 r3 U! d- R7 H( o8 } e) k* Z, Hsed, Perl,你会觉得那才是真正的自动化啊。, [; \" c; F1 ^. o
9 l! `5 b9 f+ w+ [2 d
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
! V0 f, G" a: y' O) w* o. \明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱4 S, X) Y( P t* h5 f) w% q
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
* v. y) G$ ^# K; F
4 L) W0 B1 H d& R各个小程序的完美配合
! Y' C& \" N5 o7 W) h
7 x+ p* j. Q0 H. Y( k8 z+ \这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
% q/ t# }+ z. I! l9 y力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
% {5 d" `) ?5 P; [7 I统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
( i3 g$ q' d% a1 Q6 lgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
: f& o/ r* m5 g/ N& e8 a一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
4 b6 } y* O6 ]1 v1 _! T/ S: Hvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经- f3 B7 c' Z; _7 y0 U* \4 T3 Y
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等 U! V X7 |6 G9 N2 u: ?1 b- v
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做5 ^/ G v8 m3 _
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
5 m+ H6 |8 y% c6 V' q以在自己的窗口里“嵌入”另外一个程序。
- J3 I0 r3 N* {8 I9 ?# `. X
! y* q9 ?2 [ T! x" l# [在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows ' h. u! p3 B% A. c! V0 j, p4 L0 G
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
1 @# t1 c1 ?6 y& |% Z) @程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
! R# |3 _6 j$ _你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
0 r1 X: Y6 V% [: p b; H
3 F( o* t7 \/ c$ Q3 wWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自5 z, m1 K5 h' t9 M4 O& t N: f6 V7 ?. x
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, 2 [( ]" e1 g* ~5 B J
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为; P' l1 J9 c9 l/ y, ^% V2 R" ?
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
; Q6 P5 K& W* x# U$ m. i的键绑定,菜单组织…… 不能 DIY!
* f0 X( [ r! x
* T% w9 u! q9 W. x5 z( P4 X' i) R你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
9 i7 ]4 g4 @" B* n" M- e$ p么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
4 u9 }. ^& A5 `6 _. _1 X面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球; V! {6 w3 g! P& x
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
8 v8 R* _% p0 ^7 C. c& Y大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
9 G# G' ?+ [4 F7 t. e- O5 ]0 w8 ~服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
5 i p, N0 j( J: W种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,4 T& m# T" T" z: ^) ], k
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新) s. M/ R0 q# z3 c T. N
买全套配件!# Y1 x( Y. x/ C Z( E' t. ?' v
+ Q, y* Q6 B0 E& f4 k- ]& S
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
) W) t3 r: r. q& i6 Q# h3 a也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图: E Z+ z! w' n9 W- V! s
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给# B9 f5 w) i- @3 q5 s
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
. {; U: `! ^& {- J0 }它 PGP 程序。
2 D/ L% t+ i: [; [/ c) @
- L8 {/ z A% K/ v6 F& y我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,
- V! H F' r0 O% s转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
$ c+ t8 L2 p; t3 a" E% D以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以4 w7 a: }; j. i
分别得到它们的好处。4 Q4 w, D1 v* A
; E7 [2 [7 O& C t2 }( V学 UNIX 绝对不是浪费时间
7 A. V' c5 s" a+ q有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
& K0 X1 A$ U; L8 o/ T q% Y/ o个星期!”
9 H+ I1 W' \5 O, j# N: B% F5 u G/ B: @3 X0 r
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是" |5 i* j6 M1 x! p% p
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
5 D1 P+ h; j" f, B4 p) ~2 h( ^的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
7 S3 ^- _/ U9 u3 ]Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的( j+ J$ Z9 i n6 h6 H1 ^
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于* J3 I/ A P' S- y/ q
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则, P9 {+ k z: i, L1 S& T
他们会在20分种之内帮你搞定。一个星期也太夸张了.$ L0 Y& R. T/ y1 q
& P+ M" T& a% @5 Y% d- e如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定, f( A# X( X7 q; i
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
6 w# @" U3 L$ Z) Q; d用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
n7 H* Z+ C: g+ \/ z) R
* F& f, [& N" m2 I最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。0 ~4 L1 j& F j
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模8 T2 y9 _6 I* _. o5 @( m
拟你现在的工具。
: Q7 v4 N! t* L6 b% q
% q- X; P( U: ?; _4 K4 R1 X: l我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
- D) A6 z/ f* V& |1 n4 y$ g4 V. t没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,
0 Q( k) n4 U. b4 S8 y- F; L7 [: @+ }直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,' n% ^) b, c* `2 R3 c3 Y% n7 G: {
现在完全不经修改还可以用。
3 M& j0 [4 | ~4 R
% [* J* E1 s8 ~% M0 \看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
Z1 P- q. J% w' M/ S+ E6 }) ^了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
# G; _, a6 G2 R: A- F) J9 l0 K能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
# {" g# t% {7 s9 g要换成VJ, PowerBuilder, C++Builder, ...- E& s, ]2 d: A; H2 t& v
/ Q F) u+ ^( ~
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ : Y4 V- l% M6 R6 J
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不& d3 f3 J2 D& y
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
2 E; b) q- f5 Z- k2 Q& JPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
! e9 i' P' Z* vWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
% h" q/ H" K$ _5 J \% l族的专业。” 这就是微软一手造成的。7 f/ L. h$ R9 g! z5 }+ ]7 `$ Q1 S, h
; a$ e- j' m+ e+ Z- \% c" y3 |) R这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不) O1 W) {! Z( u
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工9 t8 G5 D/ Q! ]* r. u
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的' Q2 Y7 f1 I" m5 q2 `- ` k$ f# A, p
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
$ c& v7 R; ^: t# n! r车了。这难道不好吗?" x9 o& o c0 [7 f/ g
* j- |) Q, T" ]/ V* t9 t& K有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你# \- v8 ?$ c+ q9 b7 ^; U+ x
去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
: k. s' I% h# K ?要傻瓜型的“微软牌汽车”吗?我们来看看:
7 f6 c0 [: M9 @; P5 q' U5 {1 @- e, e0 ~* l2 a; K) n6 V. `
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
9 R1 s$ p$ z6 }7 c) U防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换3 P t) a6 H* _+ {/ _7 s0 V) U4 m
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
2 A9 Z( S" D4 [1 s( g油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微" |) B7 O R7 x0 m5 q
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
7 t' `" i" J) C; F3 T: E W& S3 q- r) K7 ^0 J# a
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
' l, d% e) A# s, o) C. L$ q% ^需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告6 ~# Q# N& e# E0 {+ Q! g+ P
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家0 d+ t- P; c5 @+ W9 W; y
人造成的一切死伤,微软概不负责。”
) W2 Z \9 A6 j. m+ R+ ]% M Z4 g3 B! \
怎样完全用 GNU/Linux 工作
4 H4 W1 m) B1 _4 L! _+ v4 s; \. I8 G
0 d2 p8 _& b3 k1 X说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。
/ D" B4 L) |* |) k' l, c, \9 o半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理3 O% R i/ G' I" i+ ?9 F5 ?
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
+ l# |2 V) R% P- B8 R, v而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程" i# G3 x. j# t+ w. m* D/ ]3 }
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
) |4 Y7 Z3 t" A" b' P8 Y% \- _ R3 z" w* z3 e& q4 Q4 Y
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便* r# l' J$ w8 {8 t/ ?; H. Z
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
( I: |! A4 W) q4 A5 C4 Y单,而且效果非常漂亮。你可以看看我的TeX介绍。- K4 W: L+ H1 _0 M& [
1 s8 d, I! f% \+ U. k至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可' R* _9 L2 @: m$ x; W! B
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
4 z+ E, P. I' i/ z% i x; p$ ]) w' _MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 y, L( _1 S3 L# g5 u" _7 s; p
MetaPost 画出来的。2 ~2 j4 [& d1 g/ X
! h1 S9 U! u( B* S6 ?2 ?5 r& A
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发 U6 H& ?- b) M" y8 T
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
9 q4 o. ?& y7 ?! L9 {" e0 c. A这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。7 S' r- Y* ]7 h* i7 a& P6 T( A
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
]7 r/ C9 G$ }; O& Y, KGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
A1 L. n" J5 h7 j. E还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
! @3 @- S0 W: ^" Y- X1 R5 f5 W4 K行的。
! Q7 R; u, K8 E# C
. G! N" C i4 d4 E& \0 A6 uLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
! G! P4 X5 O% P& y+ w差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……( Q' a. X8 [& E4 D- h0 j c0 ~7 m
9 C& C2 s( N& j0 C- \& e结论 ^, |5 Q' k" v k$ y2 u
' H; B. U/ X$ j) C! C, Q我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌- \. m( Z* P$ H4 N! y" a, K( ~9 D4 O# r
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追5 A3 b5 E5 h' L! ]8 `4 E
赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”. t5 P' b5 n$ P3 R
% ^7 ^, g- @/ }- d0 R0 P. v) k
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。: w; ]! F- G. s9 G) u9 b
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
% C& S# \4 k9 K/ i9 Y+ k) ]7 H. G9 ~* Z5 d2 `5 K. Y1 d
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt …… R( ~+ B {4 Q) y$ B% R
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,) t* C# e1 H- ~
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
5 r; `: n$ D* ]% T式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,$ T/ E5 i% A9 O, d8 L' u3 v* e
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
! q& E6 k" [1 j( b- G里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.6 H1 v/ Y2 X- E
2 [* m- l$ `5 ^- G* J: X9 c我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利+ x/ [1 U' \ [! x- a8 \ x( F$ m
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
% s# O: {; j' j7 T* a, |9 z决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
3 m+ ?+ F3 ^: o& P; y, n
1 V0 E m- d3 L附录: 我用来处理日常事务的 Linux 程序. T0 j5 c7 y! k
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
! p6 m% l) p8 p1 N, Q是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
- z) q0 I% ^6 r2 H: u你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
; {, t' K! i- k4 l& e' i) e工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
7 h0 q% C5 z) ]& g) P
0 q. U* x. U& \& f. ~如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那7 G' ^8 G F. r2 u- T) H: W! x5 j
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理8 x) c2 [ u/ U* j& L/ y) h# R
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的0 S9 ?4 R* O7 ~* n* j/ S+ n! |
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
4 S: z; {/ R# M( V# Q会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
% S* a, d, _$ i# K& Y3 {; I已经很安全了。不过你有兴趣了解更多那也无妨。
; O, i t2 ^7 Y, K+ A
9 y& n7 |% L9 G; |! U; J5 t下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工; ~$ }7 ^; }/ L# f Y0 p
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
6 d+ O% I! t/ B6 D' Q( J9 M/ B) Y它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们8 f9 k9 `9 z4 w% g& R5 B( G
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
2 i7 w, p: z: }, T T! f3 |7 _! `辛勤劳动的产物,是可靠的程序,它们物有所值。
3 i% }4 l/ x4 d/ }9 t |