我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得) f; s$ F5 t, ], k J0 s
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠$ X9 \: z" S' Q" _8 M9 _, _
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
$ y# i+ q3 |6 l1 _+ _, V" y y2 F! i没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows 3 M. E8 \1 G) G" T% m2 j
的先进。+ o" e c [; g) Q! G3 J
0 Q, l) X1 a9 r2 Z5 I2 K- SLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”6 ]# Y3 d1 B- {3 h1 E, h! k
6 Q! ^/ A7 d( L. n
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
- X1 K- m* E, P" K没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?9 ]. {5 ~- T0 P
难道它们的设计者就那么低能,连个图形配置界面也写不出来?
6 N& i7 \1 s- T* {( R- p' B4 S8 ]. }* j7 @6 k, w
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
2 }, l5 Z; u& h% [能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
2 U: i' E* v' J; u7 T$ r要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修. n* ~# ]' k& j5 v% [% o* X
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设0 V( y' C8 V4 v) v
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
8 G6 n3 ~/ t* I n& Jsed, Perl,你会觉得那才是真正的自动化啊。. w7 @" f9 B/ z
9 w4 Z! g. V4 l8 O2 [鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
3 {+ Q1 Z8 L2 J# X2 o明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
% \' t) g1 m- q# } R9 D r# G点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。& `+ A* [# b$ ?3 ^3 Q
3 D/ p, T6 p B
各个小程序的完美配合
( C- m. e/ q8 U& n5 d* O) [
( v8 S r* X* N+ Y1 V: [这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能
3 F) F" i) f- H( m4 y0 h* t力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
0 A; `3 l, S* b/ H8 {% Q( T& K统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
) I! P8 ~ e1 ~/ V. Lgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
8 T) ~$ |( J6 A一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
! p: t1 p3 r3 D0 e; j' O. o2 ~& u3 Svi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经, r5 H+ G+ T# B2 l, w
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
9 F6 X G( Y6 e& A3 a9 Y很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做8 b% o* H6 N6 j* ~) ~: b' U/ e c
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可$ ~4 w1 f" w4 u0 w1 w
以在自己的窗口里“嵌入”另外一个程序。
' X# l0 Q: W9 l+ p
( U1 A1 U a; @. a在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
9 D3 G# S5 m$ c0 |下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,5 C6 O, x6 n: ~! I5 M
程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
7 R5 }- E: D/ ~$ f你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。: I. |7 r% X' F- }( _' f
0 }' W6 I" t2 }8 hWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
1 `3 Z { ^ V" y& r% i) i己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
) S0 c9 V+ h( a1 w自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
- j5 V: C: V" f了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
! a1 y/ m: x& Q, v1 J i/ q的键绑定,菜单组织…… 不能 DIY!) T& o0 v2 Z5 E# v5 o7 [
$ j# ~: i/ j3 z. | G, e: H! l4 b
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什) i& ?' s4 D% m) z( E6 n! S( ]7 g
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
9 O4 ]' F% g9 B7 m9 ^3 z面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
2 r- z' c4 @6 m' K3 I拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是
) {# [3 ?7 _5 a% Z大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和$ R# a) I' ~2 K1 e
服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
. O7 ~4 X! o7 J种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,
6 z( i8 ~ ]7 t2 c+ d% T因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新
. c' M( T/ b9 Y& a4 a- Q买全套配件!
! j3 i+ Z6 B9 s: O; L" K9 d1 b0 l" T {+ h, H
而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM
0 Z8 V O# m6 ` k j& M也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
- h/ s. ]9 a5 l7 m$ `片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给
8 e) @7 e" B) d6 s ZMozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其% F& C* |: w1 p' `$ A9 U+ N
它 PGP 程序。 u; v) s2 c; Q, a
% W0 V+ m8 ]# o6 k2 E我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件," E# D$ n4 N" V8 J X
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可6 J( [- @" u7 X) U* Q$ o
以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以4 m+ o Y( D) \9 B, [1 `, l
分别得到它们的好处。
- e7 w( f$ } X8 B3 {: t2 ?7 g: R6 a d" Y6 w8 `5 n! i6 [/ S
学 UNIX 绝对不是浪费时间
8 v+ \7 e3 }" C$ ^; Y) w有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一
% { L3 H. w1 D$ r7 u个星期!”& Q3 u" A" n1 P O a/ `+ o t# l
; V$ B- C: p0 j+ T, Y m
首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
8 c* G9 K) t" A" j6 J4 T. `因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows
+ X- D2 k6 Z$ a! p的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为1 T; x1 v k/ q9 r/ N# p
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
& }" F7 B) L' o1 d机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
6 v+ O6 r) v$ }0 [4 G4 S硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则, s: z$ [* p5 ], N
他们会在20分种之内帮你搞定。一个星期也太夸张了.% S! V) n# q& w1 V" z$ h
" A: ]$ u7 m6 U0 D6 U- r如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
D; N7 n% K5 K0 m4 t* a会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
% w; _9 f) I6 ]/ q. }用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”/ u+ B6 V; J3 f$ `/ V; h' h
8 S. [& [6 {8 Y" d* u最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。% k4 e& ?, o. I1 V, ^
你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模6 }% m7 V' `, q% v
拟你现在的工具。8 {8 P. y) g- T& ?# X1 o5 X
6 D" a; @0 f' B
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对8 R y/ X" ^* R5 g, P1 A
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,9 G+ }( A) O S3 ^. ~& V' O
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,
) J( p& d$ S7 C" ?, ~) _现在完全不经修改还可以用。
& A) B% L$ B) a7 j& W* f
8 T8 V& L& D% ?+ ?3 ~& F- B看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
" r5 V" r `5 | `, P6 w了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功; j6 \. ~; q% ]' X- H
能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又
" q; F! u) w0 t3 n要换成VJ, PowerBuilder, C++Builder, ..., ?5 z. y- }. F' e: H5 C0 W( i
6 Q2 J# F: B3 Z- a3 v
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ P9 a+ R( {+ M3 q. u, D W
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
/ Q2 |( |- J. G% E! J+ G' |断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
7 n }$ x H' s# s" Z& x$ {Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用
. g0 }1 S0 t2 G6 c) @WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵; h m' G0 i" v, J- T! h. ]- e
族的专业。” 这就是微软一手造成的。' e& q: b) S4 ~& M6 n; ^/ `% J2 e/ ?
) }8 o R7 v1 I( X) |5 C这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不+ v* F6 }# h. K
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
W: Y* D6 K$ @; {+ x# Q- ]+ D: t) O具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的# }" g5 z; H/ K0 m( F, l
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
! z& _) q4 A7 y0 v- ^' D8 u# F车了。这难道不好吗?2 Z! b3 z% X, Y2 S1 Y) \7 N" q# g
2 a/ a+ P) W# L& l) a0 a' _有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
9 G8 l# b5 N! B去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想2 {1 Z% J$ c; @6 B1 A* a) \
要傻瓜型的“微软牌汽车”吗?我们来看看:
( `! d$ {( d- v w0 X6 h6 ~ ^9 z
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的$ l* U7 P h3 [) i& }3 |
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
* \0 d3 E+ d$ p! {$ T# J# t+ x4 T1 Y一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机: f" s9 I3 A6 h2 n& w8 O; |# f
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
4 d/ P: R: a0 T软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
' M4 A8 v5 z) E3 c
8 a7 d# i4 D# r) x: L0 s最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
; a' G( b3 v% N$ S% g& s需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告' g4 G/ f: H( g- n. M4 M
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家' h" W& O) D _: i* @+ N, F1 |
人造成的一切死伤,微软概不负责。”. _1 |7 l8 i. a
2 H4 K1 F$ Y! _7 ]
怎样完全用 GNU/Linux 工作, O ~, i# G; Q x' l9 o1 j7 u
* F3 r, B+ a! C* J
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。
* X5 @6 Q" U; Y: z, @6 G半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
{1 i+ E" l, u8 C. e7 ]汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
" m& R* i* J0 ^ {9 d+ z, s% D6 E. W而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程" ]' e7 u6 b+ h" P
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。/ W( i5 m7 P% m; K
# n) M& r. B9 q# ]& V9 x2 F1 ?
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便8 d! @5 n9 o0 X
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
+ R: ?6 { \% v7 _单,而且效果非常漂亮。你可以看看我的TeX介绍。
5 n6 }. y. Y3 S0 x* `
& r9 T- d! ^. f& [至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可
- p. `) m9 `+ V% ?% Q视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
8 @$ X/ y, i6 T( o- tMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是 % a% p2 a$ y- A, Z& L7 ^
MetaPost 画出来的。
3 u$ Z8 K5 D ~0 K; d) [1 l0 S: D C& k' c& Y" n! Q+ ?' g
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发' r. ?( g* q9 O
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用; M# S9 h9 ~! p* U. \
这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
1 O( p8 `, E( L我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,6 L+ @5 ^7 a# M4 \' ]
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
2 X$ A/ b) ?& v: G还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运
; ~. E/ J. H) ~( f7 |行的。
+ r1 Y) ^7 o) F& K6 V$ p6 A4 U& K" X) H+ y/ p' k) z
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很; H- J! r& J9 @) T8 y3 m0 y# z% ~
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
, ~. Y/ G, n( v4 U; J
$ N+ L0 N6 V+ Y1 n# P/ k" n结论% B$ e- F/ ]0 \8 n, b
K; c8 s- y7 [2 y) U; T我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌- r+ r7 ]0 G7 z' }4 h$ o ^" w
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
, o1 t' J# [$ V: X0 _, p赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”% ~7 b4 L/ V" x) d& @3 R) `
: y) e) c/ D* d( O1 C
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。# ?: Q2 z% k L* }
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。6 ~& M& w4 ?. ^5 _; z2 z
z) G' N( l% {1 ?6 Y" V" ~$ Y: I: \
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……- O4 p! k1 @% X& y9 z0 F. u+ n
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,' q, S& B* V* f$ L. P2 `/ \
不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方; I3 {( M' d# E4 `/ I' S
式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,
3 c' Y7 _9 J) |: _9 H2 X4 e- m! l* Z了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
! W/ p" i% {: e, D* B4 t* I: I* s里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.7 m- N3 i$ X& _6 c" r0 T0 y: q
8 t8 w+ H* ^- i
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利
& S P8 ^: C% `5 M用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
8 z9 ?' V0 K7 L决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
& g$ H% T8 h) W- I5 d
7 Z; l7 i6 R1 V' Q附录: 我用来处理日常事务的 Linux 程序% b" a& \. Y( }3 g. ?2 z8 L
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
. g) J* I7 T& F( j是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
& L, ^! B: J" P$ K$ f8 U* E你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
! s0 Y3 T) @- R1 C工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
6 Y& ]4 G0 T* A+ M# ?, F& I7 ?! `" u6 p
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
' z7 ^! @0 ~7 n! v4 ?就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理6 M/ m ^. J5 O& P* q' N! e; H
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
4 A6 \9 h2 q) M2 `7 K, c机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样7 g z% X" B4 e7 z" C
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省1 o% V; O Q4 G0 q
已经很安全了。不过你有兴趣了解更多那也无妨。
& B( y7 ?8 _( l
2 A& v' F: C" H3 w# |下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工) {# J+ r* Z$ ?4 U( e
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其5 I6 M- G9 X/ L! e. Y8 H% N
它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们* A3 n. O% I' L
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
6 w. L7 y% q4 ]7 K辛勤劳动的产物,是可靠的程序,它们物有所值。. r v) C- d3 u( K# D/ u: K$ {
|