我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
+ H! z* Y% S! O/ z: C+ \! X: q' SWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠( B4 r: i# b0 }$ h# H
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
! C0 A& Z/ s* b$ | E0 }没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows ' b, Y3 o. z* D& }' E
的先进。
. r" X2 r6 Q' t$ {+ E6 D
: C( a& {" s& _: S9 n' YLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”; t& |% ], ^1 y, ?
* A% Y* _( x; X# Q+ Q1 W看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
6 E2 ^) T( F0 w; n# @9 Z没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?% R. H3 h, R0 o) Y: B; i( h
难道它们的设计者就那么低能,连个图形配置界面也写不出来?5 J9 K: D$ Q* i5 |7 \7 G9 p: s
3 n8 a, R0 ^8 r- \, Z* N* y; q
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达: R1 z5 v: f- z
能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
# F8 v3 S# r* h要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修+ L$ S% ^5 Q/ [: A7 r9 z8 v
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
( X7 {$ u" r g% S8 J置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, * f* ?( `4 R& }0 |
sed, Perl,你会觉得那才是真正的自动化啊。
% s4 b5 @) k7 W: _6 z' y* J* U S! ?, u8 @9 i
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
+ W' {6 ~) F% t' ~' t* X明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
# m! A, ?# p8 }4 P { W, L4 @点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
& n2 n; q! \' F1 B0 {! [
( N9 z6 H) l2 {1 s3 P0 w$ H1 O各个小程序的完美配合" ~( G/ p# a/ J4 N
1 C! t$ p$ \# D+ n+ j
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
* U2 e1 z1 n9 Z* S9 p力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系! o; O, J/ q' T1 h1 T6 ^" |" ?
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
2 b! `3 P3 a8 h: |0 M( @grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有& p3 F$ K' m: r8 m2 U$ Z; L
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
' W/ r: W6 {* s) N5 Vvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经1 T5 E' x) {9 \& e' Q2 Z1 \
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等: t8 g0 m& b! M) P k( J3 K- g
很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
1 J6 [; _8 m9 w, s& `的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
6 y! U+ w+ h2 B以在自己的窗口里“嵌入”另外一个程序。
2 T$ W3 U7 L x. \1 e1 L6 i1 c
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
2 G' c% R- V0 `1 o9 f0 A/ T- k下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
9 f8 n$ C9 g! { i, Q程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
5 G' Q' X! J; k3 B/ E! p9 B你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
A$ Q( H, M C5 w
" ]0 J0 {' L; ~# U# P! y* IWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自' F, C1 Z; } e& [. U% i! N
己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, + [$ H" S/ W: C# C+ t4 ~1 z
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
2 t0 Y0 q% ?) u; K/ s) D: S了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
6 I$ s9 ]+ U$ n% ~2 I* _6 |的键绑定,菜单组织…… 不能 DIY!: L- y* f0 V- M" S) ?+ z
0 x: g5 ~7 e7 q, A; A( Z5 F0 O8 V你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什
" S, \! X8 j$ k么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版3 f! q( o' d2 m, Y( |# ~* Q
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
; M! t+ A/ |! y拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
; E" h2 B$ b0 K9 |, B7 i$ W. L大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
! |0 U* D5 ~# H/ z+ ?服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
$ f; K& _7 W9 L5 Y" N# t( d种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,& p H v8 r) J1 ?
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新( k8 m( _0 d9 D0 n$ q- q' }
买全套配件!$ Y9 O. ~! T6 N1 n( G. T& m
% F& ^: e1 P* W" ?; B' U" M而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM , ~6 J5 k' c! {$ m" I
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
/ L9 `: p% ~7 U4 s' ^片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给' z) H$ h+ B2 Q
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
9 I9 Y$ h- d( E! V# i它 PGP 程序。
( a* M6 v; a* O) [# j" |; ]6 b1 ^% N. R {3 s% @. X
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,0 E u; C" B+ z. ` G5 r2 B0 m
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可( [( [2 w/ ?: d' K2 B1 m/ X
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以' h, ?) N' x X! U
分别得到它们的好处。
) ^. D- Z) T* q" j) E1 l7 r3 e9 z% Q2 w: s5 U& x
学 UNIX 绝对不是浪费时间1 ?. S0 u6 b3 k: W
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
8 h: R' S( _: i% n6 t个星期!”
3 T$ H4 F: C) ~: F1 e& _+ o
/ K+ W- k( g+ v- H9 g5 G首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是2 d- b1 [7 C5 D$ N6 S, ]* ]
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
" ^ Z0 Y# q( | X6 @% n的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为5 D. l" o7 i9 X* h
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
! l8 @6 c1 `8 Z& {. A; i S机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于2 ~ u4 v0 T2 O5 X
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
5 n x! g: F) c他们会在20分种之内帮你搞定。一个星期也太夸张了.
5 B9 ]0 N C4 [7 A
% ^# V0 G. ^7 @- t如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定" F1 D1 f* [' U. F7 ^2 _
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只" l4 d( Z9 x5 I8 `; T
用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”' N& ^' e: m' L0 l6 t
7 Q& }6 Z$ x+ H* Q' {1 S
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
6 G. v, k# j7 Y6 T你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模
) a, c4 P; E5 D, Y" y, ]拟你现在的工具。; B( X6 G9 h3 s
' q0 ^- [+ s) T3 }' T我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
. p* T/ w/ b8 q/ z1 p9 E# a没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,' }4 T7 V* G2 k4 I3 u) V) h5 a9 Z0 u9 x
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年," N1 y) L6 p: j* \! C
现在完全不经修改还可以用。
, G: a/ {% N" ~2 [0 H# p# L
# z1 @+ o5 A" f4 a% e+ c看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
0 C1 M. ^" p* ]4 R8 I. N; R了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功6 L6 @6 {9 }- E3 L) l; p( |
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
! }" U1 b) ^9 U5 A8 |6 ?要换成VJ, PowerBuilder, C++Builder, ...# F/ G6 t) [7 ~/ I
( s7 e. L; S8 n( v3 ~4 h+ a很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ ; h) B+ W) ~$ ^0 I! }
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不) U0 F9 }' C+ P2 w) h+ X* c& I
断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft ( n8 H4 O7 j; K( b4 q
Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
; O/ U: ?5 G7 ~& y0 i9 xWDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵
5 z7 x+ r( c0 z族的专业。” 这就是微软一手造成的。" E2 P; T: d/ M O* l z3 V" I" G
1 B. A+ O; |3 ^这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不: Z$ X* G0 H1 l8 s- n9 Z9 M
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工/ d5 b( |/ ?1 K; K
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的
$ J4 F; m8 Z( v2 i- h6 L; F" c位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修0 v: f$ n/ f5 u* c; Q; n& E
车了。这难道不好吗?
" M+ r* f8 h2 g- C {! K5 U' r7 W: w# }& H2 E
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
4 A) f+ R& Q1 j* K; \去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想& f3 l9 }; s) i2 ?. S% Y
要傻瓜型的“微软牌汽车”吗?我们来看看:
5 |( S: d; x' l. f# ^
" y1 A4 `7 l; `你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的
) y/ Z+ } p; y2 y0 K8 n防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换% |; H z5 }1 J/ |* o
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
& N+ X% }: ?5 h: d油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微- z6 k: F8 H% P! f* `
软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。. ~. T, I" k1 j( W6 v6 R+ c
3 z7 Z g# H* h" q5 |5 `最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你$ ~: i( Y$ C5 k( a* c
需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告
3 P, m/ k- H) t- Y4 F9 ~微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
8 {6 f* D4 P* l$ v/ ?" o. c) @人造成的一切死伤,微软概不负责。”3 R. R6 |' \) ]5 n5 Q
6 }' f% i5 s1 k% ]怎样完全用 GNU/Linux 工作
& U7 f, [8 l: h w! ~7 n+ `- F/ A G% B: { X
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。
9 m, o) U. z( ^* x3 j V; Z半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理4 }7 C0 \4 Q4 U( C0 Q8 ` r" y
汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
1 s; a! Z' i$ P4 g% M) M' ^' b而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程0 }: g9 X+ j" h L! W
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
% s' @8 n6 [) \# e9 w, t
& V: S- l* _3 m2 t' V我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便3 F% m( B0 P' ?' s
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简* u6 T3 F# C) i/ Q* J( `( W
单,而且效果非常漂亮。你可以看看我的TeX介绍。8 w+ e. c2 G- b: x" r P4 S+ c2 Q
/ A) G& g+ u9 L& ~4 o. y$ L
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
4 L2 w. n2 g1 Y& a5 u视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了$ b" z7 A1 k' o7 w2 n) i7 N" T
MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 , b9 B% Z( c3 y# H, a; D. C
MetaPost 画出来的。
j" x# s3 ]& r" }
" z/ Z0 y* w5 f& ]! J; \我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发; W" D, G3 U# F# B
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
4 B9 r/ \- n' m" ^- I" n3 D! r这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。7 ?+ T* p$ G0 G- B( X- @+ }
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
" p0 p. C% }2 tGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
2 r: |* i2 d0 k) x还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运. O. H) `* a( S! Q( f. M: j+ T! N7 ]
行的。' B4 B2 Y- y4 G9 Y. e& T( I
! s- a+ x1 i/ QLinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
7 x7 |9 w% o2 j: T Z差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……3 r: {$ C9 I! h- a9 e0 ~: T0 x
; J# D7 \7 s& [" {
结论9 S! h1 y: K9 C/ R
, b/ J% D3 L" R& j& r0 D0 q我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
8 f3 z, Z! l t l3 M. f输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
( x I: L* |) J& G( G赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”# Q- c, T" r+ D
5 k$ V$ G0 b8 t/ vUNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。3 C- ^ c; [* u
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。( R0 ?2 D# g6 M3 `7 `8 ~* Q9 G
: M2 f" A% @% D! E) R! }) a0 f$ Y
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……
3 Q L9 A$ E1 S- q% S4 |, w这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,! ?; J* g" z, Z! R8 Y/ {1 w* L
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
- K, B: G! N# t0 A9 Y7 s式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
5 o5 h7 _ K. [1 I; U/ H了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑4 \& \+ B# P0 K/ C+ ]* p4 ~/ E& W
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.1 u0 R' N; U9 S9 G7 z
% G# _# g# U2 k, a& d" ~( f4 b1 |我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利. W/ f$ l* Q" O
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解9 q* \' j6 Q& U3 x7 J4 q9 f
决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
* o b1 Q* ^5 ~7 i( q6 u
) c8 y6 O* D1 S0 g" m4 t附录: 我用来处理日常事务的 Linux 程序/ x) D/ t. i, t3 q
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
0 t& }8 a/ }" f# j; r是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
* O7 q% P" j( j* \$ ^% `, s8 f9 B* [你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。6 l9 I5 d) n) Z1 P% _& [+ W
工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。# x( F) B3 ?2 n7 L D/ c9 r
, z% h% z4 h& }: e. V0 b如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那% R! S3 R4 C: h+ ^; [: W
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理3 _2 N0 a2 p s* K" t: k
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
8 v6 d) y1 [% t# r# y( n: g% \机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
1 R$ l' u6 |( g* @7 k5 A$ U会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省" l& ~% h8 [; T( G8 L# i% g
已经很安全了。不过你有兴趣了解更多那也无妨。
6 L4 D+ |! |1 Z8 K/ a: v. ~: B# k9 w0 V M4 {7 U$ J0 g$ ~
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工
' }) H+ T. k2 d( ^程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其8 W/ I, x& X5 R' ?5 {) W
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
8 o0 j# a8 D2 h! o; k( I很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人3 h4 r7 i) Y8 c
辛勤劳动的产物,是可靠的程序,它们物有所值。
+ v8 }& j/ }0 t9 d, `1 r% | |