我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得
' U. }4 F$ A) w: c3 _$ oWindows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠
o- H" c% d8 c [- A( ]标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来0 V7 R3 `. i3 i8 ?. ^* y5 U: @
没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows
, o h; y5 K4 u6 d: R1 a* |0 ]2 [9 \( Q2 u的先进。( U" I0 p' Z M" L
3 D0 ]& ?6 I1 p* }* ~5 ZLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
' D9 u% j" s M9 s, Q5 |2 u: _2 l
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
4 y5 `+ l' d, n1 x没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?7 O3 Q! G& S; k1 X4 [/ _! |) c
难道它们的设计者就那么低能,连个图形配置界面也写不出来?5 I- R9 r7 j* o1 S
8 }! [+ J: d0 S; S* k# A4 `
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
2 M6 r+ X9 H# S, W, p能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需! {. J" e; r# s0 L+ n
要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修, z; G$ B+ z) d$ K! g }0 \
改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设
" l* @. r: l) Y7 f! S' r置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
W, V) u* @) K; k$ r4 V/ M2 Bsed, Perl,你会觉得那才是真正的自动化啊。* A# X% k# _* ~- l( {" w# q% S
) ^; K( O, r2 ?% f4 |/ O
鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
9 Y& \9 o, y. o! y明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱( c$ n: [. q# l. C
点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。
% L1 y4 _4 c) x2 l
+ @$ n* I4 X. ?9 s( R/ k7 U各个小程序的完美配合
. ^7 U) Q6 M0 q/ q% `- H! `* y$ m, ~& k4 P
这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能/ w9 S/ p& T- i: {3 V6 ~
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系
$ \: U$ `; z0 r统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, 2 n P1 L# O7 f8 U$ n! P0 Y) D
grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有
, e1 Y5 Q+ m' Z3 d* X j' j) @' Y一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
9 H4 q' I' u+ uvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经
5 t* g$ g1 F* p \设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
: g% y* O% f# }; C很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做
; e. U& S/ E: P" X+ K的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可
* v& c- N2 }4 r% O a2 x以在自己的窗口里“嵌入”另外一个程序。5 b) Q9 z/ l" n* h4 p* F
( ~6 n& D% M: ~/ r7 t在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows * O3 |0 C/ E/ |
下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
, P# z, H" V5 H程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,; j5 V/ {# T4 ]4 S0 A2 ]
你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。+ Y$ f- C" D; J" G+ t5 b( f
7 B/ P W! i* E k! vWindows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
) h& O/ X) D Z- z己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal,
* f- G Z1 R" C# U" h自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为( @1 b; z0 E7 X3 c/ p z
了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
% O, b; R# T3 K4 j9 _; n4 P) ]的键绑定,菜单组织…… 不能 DIY!4 x" l/ t7 D g5 p, ?& @! |, _
4 g9 C; v5 I, D, o- n- z9 ? m你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什5 L* h1 m8 J# f' C( \
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版
3 @7 Q% z! E5 u6 h3 {1 e6 @# C面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球
4 {$ G8 o+ {" F7 p拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是! O$ Q# d0 i) C
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
9 X. Q C* c2 S; ~4 Z服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这9 J5 e$ B& W$ _: C4 h$ X* E5 h3 r
种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,5 M% m( l; [: |! D
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新, H: V8 _, v Q3 e+ ^3 P+ Z8 @
买全套配件!! l, @. ~1 Q& s
8 R) \+ a+ r" x而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM 3 \( G( z3 K+ m) K" c
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图! ~! v& y# F0 {! b
片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给+ j' E, v w/ P# J
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其! w, S. i+ n1 h$ E( U+ C
它 PGP 程序。/ r6 `6 e& \- p
" J# [- g) t) x; X4 w& Z我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,- v( D8 E! @. Q' a A
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
5 G* M" l$ w! Y x! e以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以
- Y6 M8 U) h& Q# K分别得到它们的好处。* Z k* _& R" u1 k4 W
9 r4 ]: W, a8 I4 v+ Y4 b
学 UNIX 绝对不是浪费时间: b- |7 t$ Z# h* v3 Q# Q4 o
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一; p' L8 c: @6 A- D$ y
个星期!”
2 f( w9 S+ P5 W
8 N: l% I- I; Y& C首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是% J/ a% ]- C# k2 m
因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows 7 l3 \" n; T* [1 V
的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为% X2 ~7 [* |! D5 \6 [& O
Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的4 x* g; a9 R( e
机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于
. a5 d: Z; x! @- ^硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则
3 j$ D0 V$ l6 t6 w他们会在20分种之内帮你搞定。一个星期也太夸张了.! j6 \( ^- `$ m8 O' d& p
P! D) a+ S; J$ W7 y9 t7 S4 A
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定' C& H; L( x% ~% |$ k4 K; j3 u
会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
) b2 J& D. N* Z7 j用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
5 G7 W5 x0 E5 O- z2 s1 }. N* ^
; U3 T0 @; J2 Q, [# M. h& q0 d最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
, ~' o, L) \0 K) |6 V! g0 X" X你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模/ V. I3 [3 k8 _% T* R2 D
拟你现在的工具。
! E& S1 F" Y/ W5 m5 ?. w& y6 O% }1 f, Y
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对
4 K$ h' N/ o) B m- D没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,) ^' G9 x6 q+ b- I
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,( |% C- h# E7 s0 `/ o- i6 S1 R; p
现在完全不经修改还可以用。
5 m i: n8 J R& w1 l
4 w [# _: @3 z看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同
; k5 ]1 y7 d1 Q* }" Z了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
( F6 D' K8 i/ K7 W4 Z0 e能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又6 v% d1 I$ ^, G: ^. {" }
要换成VJ, PowerBuilder, C++Builder, ...+ B5 E- A6 F4 S4 S: h3 K
$ m9 S7 j6 r( P9 Z0 b
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++
* x2 k% E# n7 T RBuilder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
/ x p- `* ?1 B1 R" ]" M断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
0 _4 s0 \$ `0 D: t- i y% @, TPress 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用+ i1 s# }- J" Y7 |2 L2 Y) b9 o
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵+ n' c- u8 c( S+ P
族的专业。” 这就是微软一手造成的。: U( B1 w! @4 {; {2 Z
: R* {6 A# Y6 B
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不# E6 v3 W# b1 U- s
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工% g7 |. a7 a( s# N
具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的0 u( ^4 b7 t O0 ?0 J3 x3 N0 X
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修
4 B/ N- t( m2 D, r4 W/ w车了。这难道不好吗?# J, ?: l; X4 a0 i
( i# F; v- L4 {1 p* T
有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
: l: F7 F- _3 D/ l. F. j$ H去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想
9 B" \* i7 [ y5 S& x [# W要傻瓜型的“微软牌汽车”吗?我们来看看:
6 H& ^ ~* k' U: ]/ m- Y0 k3 T' j/ f$ b/ M
你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的; B7 s/ Y; F4 ]7 _2 z* {
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换/ Z. w2 W, \* j3 s3 i( K4 m
一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机+ c& E# s) J7 K3 O1 l: c' r9 W7 b/ L
油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
) Y7 ^% T$ Z! Q, K& D软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
% d, Y$ w$ x0 R9 W) Q1 Z
; V. K$ c& _+ r6 |& I0 q2 r最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
3 F( V, f5 z: _6 p4 y! A% D需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告7 q5 A5 o; S' F- G5 T% ~7 d, k% D
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
: R9 J X. u( X3 o" P" Q- Q人造成的一切死伤,微软概不负责。”
b: k0 j: _9 d5 \: z1 }& W F% ~. m, x9 j+ T
怎样完全用 GNU/Linux 工作
5 l+ s; S. ~2 M
, x+ H, r; ^" k L x- x% k; I- h说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。7 ]# p' ~3 U& X
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
- }, K; S; P# {" y& e; W4 r汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
6 y3 {6 Z1 h) [而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程: k' b5 |) ]3 I3 U9 e
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。8 E5 E, I4 k3 M7 B
. A1 x- }# V4 d4 S/ t3 `1 m/ S6 H
我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便0 V7 d2 x9 }" Y* V
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
$ ^4 I4 h C' E! n- n5 N单,而且效果非常漂亮。你可以看看我的TeX介绍。: A0 _3 u& ?8 l- C/ t
4 g4 G* V# e* Y" `
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可& h& v! I* |1 S
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
1 H# f, i* w* d# fMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
( `5 w2 G6 P( N5 X4 a+ f# OMetaPost 画出来的。
4 C5 y1 J1 o3 L
! S/ W0 F( w: U1 g我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发7 z/ r* o/ l8 r4 E
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
, L; F: d: q( p# T7 l; i7 G7 i这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。
- _8 D S4 t* b9 e( `我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,4 J8 a2 ^# ^% |( K. U
Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
0 }# v. z8 v5 ]/ H7 @* m2 Y1 n还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运' S& X/ l F" [" w
行的。+ z7 ]; Z4 j# x K
o, g! W' x2 n. j0 s ULinux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很
7 f3 g A2 A6 q5 a2 C5 L7 z3 f差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……
( P: o+ [+ D) t
, k! Y- V+ j( {% A结论
1 _$ ?# r, C+ J, O$ R5 Q8 e3 B0 @( f
我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌
t# |( g0 I6 R输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
3 y/ f8 u7 ~0 _2 y( h9 N4 P赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”: K% n* w# Q& J2 k6 C/ R
: C4 e# d V! ]8 B! z
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。
& E! u* \5 h* V7 M我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。( e5 X8 T; e& ]3 b
) u6 q9 \' o$ }
消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt …… I* [: M: z& u$ C) Z0 w
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
( H- ] H0 Y$ d8 D) b不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
$ N D9 _! _* j: T( p8 U: }; c式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,1 t; B' j+ O- S& j! A8 S7 h4 a | R, [
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑) t9 e% s9 S. w7 c: f) V
里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.9 d6 z9 }' f1 p1 {7 w3 h* ^
" z( J( Q6 R4 I F6 L3 o0 S
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利& R' y- V; }7 ^6 x6 c4 P) Q; J' {
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
0 S2 m+ }6 Z, q O5 B决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。9 |# e5 n1 _7 N
7 P/ o- I. H A) F" p
附录: 我用来处理日常事务的 Linux 程序; ], d0 A. |6 x/ l. U
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但
! \( N4 w+ |" G8 G5 E/ o9 v7 Y6 v是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
^' m4 b, i; S' r0 N你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
* ]0 O% n2 B+ W工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
$ s9 f- w. c* A* U' O5 R7 J! z# f. @+ e
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那
2 K! b8 e, g7 B% x: o& r5 u就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理
" @1 K5 c' [( K9 t4 t" k; Y员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的
7 N; g+ B t0 v7 i s7 L机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样
5 u* h+ `3 u3 j会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
' k k9 y. G/ [已经很安全了。不过你有兴趣了解更多那也无妨。4 A' H1 d/ Y6 R4 ?
2 n( S3 t& F5 P0 m6 ]4 T4 _# }% e
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工8 P' T6 A7 A# {$ t% x2 s2 G) n c
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
% S) s4 d3 K$ h8 T8 z0 E' d它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们- `+ _( [( p% ?, v/ j0 ?
很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人# C) M6 [$ z9 ?( k
辛勤劳动的产物,是可靠的程序,它们物有所值。' ?% B$ A2 @9 o- D
|