我们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得2 M4 I3 f0 u: ^' m. }
Windows 的工作方式好,他们希望 Linux 有一天能“像Windows那样”。你说:“我鼠( o: `" f) Y) A7 D7 O
标一点,我菜单一拉,…… 就可以完成我的操作。” 但是我要告诉你:“Linux 从来
( _; k, L& u+ d w- A/ M没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows - B8 U T& Q( n
的先进。
4 n" h& u+ z" s4 A
! k/ G' d$ @; i- H# s3 zLinux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。”
, ?" T y/ V o8 ^- n) ^; o8 b8 @7 B, G3 B0 l
看看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ...
. v# V0 @; G' u* t+ Q$ I9 W没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?5 p- ]: M. i, q( a; e( r
难道它们的设计者就那么低能,连个图形配置界面也写不出来?
% g% @' @, m4 c& M0 i* W7 o# G6 w1 ?5 J% F+ y/ j0 k2 S! W; Q t
当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达
& _: i* V- @& p8 {# n& M能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效果,你需
3 `- z$ c" \' {3 ?* \0 F要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修
6 ~9 L% f b) M, S+ R1 c5 n改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设& _* f+ M3 r% \* ~* k7 @& h
置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk,
9 m4 [; ]- L3 E/ C5 X# jsed, Perl,你会觉得那才是真正的自动化啊。
8 X3 D+ |+ v2 ]$ ]0 ]- N# r
0 J$ M; w5 |3 L5 I' B6 Y) |鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全
- c1 E; f) H+ a$ ?& H" Z明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱
! T( o, {% y" Y# g% R" k点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。% O% K+ V4 H0 p' H0 W
) u/ x3 O. ?8 R" w
各个小程序的完美配合) {! v& f* x, h2 I8 ?) y
( \: b( n# a+ Z2 V, r这就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能) c' V2 N1 S2 W8 y/ P
力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系! L: j$ y3 W7 C, i6 O
统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell,
! z+ a$ i" k) ?+ f! {% qgrep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有0 p8 |2 M$ L6 L% i( p
一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了
% q* P1 ^2 D I" w: {, dvi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经6 z+ ^; N3 e# J7 o; Z2 U
设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等
% s- [5 J( p0 H( |) q, U很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做5 K) T( S3 D" z- V! q0 D: \/ g
的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可. J" l3 ^2 Y- w( R
以在自己的窗口里“嵌入”另外一个程序。8 f- S6 n# W/ [
S" r5 p3 q7 E& j. M1 o
在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows
/ i" C% D$ l3 ^( y下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,
5 W4 a3 P8 Z$ }4 d8 r7 o程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,
9 o! H( o" }$ R! d3 e# V5 @你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。
4 w' |6 q2 Q! n; R1 E( t& s4 \/ t5 j5 N7 ]
Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自
: w8 K, g2 `% d己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的Virtual Terminal, ; ^ A. N- U$ q" b6 {/ X! u0 N
自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为
5 C8 u# X/ f/ I* v9 e- i了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器
" V! F, k I: W! ~6 U的键绑定,菜单组织…… 不能 DIY!
) c6 c: C! M( B: m3 f1 ~8 I* j6 t) w2 c% I& k% J
你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什' \# H! h4 p0 G: B4 H
么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版% {; b1 ~# H# x) X
面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的 古球+ o0 x/ @* u5 S7 w Z# O q8 c
拍,木板,胶皮,海绵,胶水都是可以自己选择…… 而用 Windows 程序,你得到的是* {9 w! t6 [! K6 ]
大杂烩,就像你去买“品牌机”,只有那么几种配置,而且附带很多你不需要的软件和
+ F7 J* U3 k3 p服务;就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这
* B5 k& L9 I3 Q$ P. C0 `' u+ w4 N种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,; L' w. w) ] u5 N$ u2 ~) Q) e* y3 R
因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新9 D0 k, k# W' s+ c% o1 D: o
买全套配件!
* H+ w5 `! f- ?7 r/ V1 P
& G# a6 r) j( I而 UNIX 和 Xwindow 就是高档的“组装货”。比如我用 Mutt 的时候,我可以用 VIM B& |+ _/ w, _
也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图
* Z0 v. A7 _4 l5 ~片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给/ v3 l% P/ r t
Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其
/ K) A4 R' ~, [/ G$ `4 _" [2 b它 PGP 程序。! m& f$ ?- Z% ^2 M: R
: b: e9 {0 e. g n* |
我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,: U( y0 F9 m6 u' {; B3 M
转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可
& e; q+ m. A2 I+ L, j% p. P$ b: e以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以% x n2 g# Y0 ~- j9 |
分别得到它们的好处。
4 P/ o& ~! y" o; H T% V2 G
" m# t% P! X: ?' t N学 UNIX 绝对不是浪费时间* X0 o; O" W) y! K' Q3 V
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一, C' ~5 j( u. [+ q) c
个星期!”
' i6 P/ K* ~# N& J. f- f
7 U; D/ @4 _! a+ I首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是
6 v' j( X) P5 n1 [7 l1 b! e因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows ' s3 J, K" f2 v( M" V7 p: x
的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为
, U' p0 z5 P* C. S/ A) Y9 AWindows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的
; a4 A1 g1 o" ^) `: J机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于. T, s# I+ F9 o c5 i% t( S
硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则' s4 Y0 G" w. k# u
他们会在20分种之内帮你搞定。一个星期也太夸张了.9 e& }5 z/ A+ A
# l0 T& T5 l. M' f g
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过 windows,你肯定
9 X; t5 P8 j8 d/ J' w" I会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只
) ^4 m& O0 e8 _( h3 U; A用过Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里去了啊?”
4 {7 F4 L$ c) A7 k3 Z: {* g3 i8 d8 T0 K& k6 D
最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。
+ t0 K" L" q: c, q( S9 k你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模" P7 P9 R2 G/ U
拟你现在的工具。- x1 a9 ?& n1 B
1 X! |" K) |+ h* W+ Q
我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对$ ]+ ?- ]4 S5 K9 W/ n
没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,: b* ^& s6 M7 j" O- Q( j. P
直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,
. }& }, F- u6 s- `现在完全不经修改还可以用。$ t4 t: N6 e, c& y' o2 M
) P, m6 c# u ~! {看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同4 D" M5 g1 D% @. o% b1 v0 g
了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功
* ~6 q1 U" `! ?9 r7 r能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又" @5 W5 G- r1 N' ^1 q
要换成VJ, PowerBuilder, C++Builder, ...
7 J \7 ]: H) z( G. [7 \+ W) h$ L- H! r, v: c* w
很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ ) @. J0 y' ~+ z4 `5 E. z
Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不
. K; t: \, ^3 H/ T: X断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft
0 z3 G# O6 p0 o# j. T9 L: ?Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用+ g9 Y4 r/ l& V2 s4 v
WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:“计算机是贵4 \+ _4 o& h4 L/ X" Z
族的专业。” 这就是微软一手造成的。
: _- i: h% ?' E" o6 ?6 a( b) F1 k, B& Q8 p- G
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不1 r- C! A3 T% S
使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工
% N# E. o+ { V具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的5 L9 U, f% E- \ [$ r
位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都可以修' \; G3 A( w7 O+ Y) P5 j( I% i
车了。这难道不好吗?; A9 M3 a; I: _( y0 B
~% _/ A" X$ M% u( C; L8 T8 m有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?” 你
1 W$ I5 a' [4 K4 b去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想+ h7 }+ o+ h' r
要傻瓜型的“微软牌汽车”吗?我们来看看:
- g: O) B$ B9 D" w# q
- z7 K" X! S+ f/ \5 a你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的0 w2 U' S" I4 P, ~
防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一年要换
1 w6 }6 h, ]2 ^/ w4 H$ i6 j5 G% O一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机
, ^ C' H9 N" n% J油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必需到微
' B/ j7 S1 Q; Y7 h% S7 I/ s1 [& Q软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。
6 ^* a) x5 V: ~/ W8 \0 H7 o' {( \& L$ W( c* k' h5 z; Y( |6 t7 V
最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你
6 A8 V% k4 t5 V# \需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告# b$ }' Z5 R1 U+ i9 ~# w. N
微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对你和家
# T/ I$ s0 k) g- x; Z人造成的一切死伤,微软概不负责。”8 U$ W4 }) t* n# C8 R4 I _# o( @7 X7 _. E
% T; g9 K j$ L- W a) U怎样完全用 GNU/Linux 工作: T! Y8 c& [( w8 M0 a
* S- ^" J+ p7 A2 R
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。& K+ G3 R: l2 m# w4 ~
半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理
$ [! }& ]4 U" c' j& Y! m# [汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。
* Z( S8 C8 v! D" {而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程- _% z, V# d! \5 n/ Z% q; l
序,信件,网页,LaTeX 论文,MetaPost 绘图语言。
2 t" p2 F5 y5 M# @0 b; y
; o1 O) Y1 s H$ G J+ ]我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便, @/ R+ M- N- t. d
的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简
0 Y5 q" H1 n) _6 d, [单,而且效果非常漂亮。你可以看看我的TeX介绍。
+ |( ]6 Y" c/ }% k* z1 N+ _' _ g: T; {% W$ h$ }
至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可' @8 k0 b( p( n7 Y1 Y0 ^& R
视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了
9 W. D C& ]2 q- Y0 `: F5 XMetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,都是
7 i5 ~; v2 B: L- ^6 qMetaPost 画出来的。2 C! W- a2 r# O
. a3 t: v5 I4 G3 [0 Y+ @
我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发$ u' S0 Z* l* h( ~
现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用
: M* `& B f4 m+ x9 c这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。. u1 T( d, h8 g; M- {* \, @, T: E
我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,
7 X* c7 x( }& K/ xGnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序
* g- Q$ T# a6 Y* b1 g/ u3 X还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运& a5 |, V8 e5 ^9 D
行的。
% m( a; `# r9 i/ I0 `9 X: p5 q+ O3 D# p! K! ~; X: @1 N
Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很1 v( G- c! v: V% w" U
差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……- m; l3 {' j3 C3 v+ u
4 a' O( @* {1 w1 u; E; f
结论
5 J. l' Q; y% W) y& d9 j0 ^
; X& d& n3 ~6 T3 F+ J% e我写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌# x& A; x7 |: w) x
输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追
( C" C# B- i! [7 ]; g4 X赶Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。”
8 @4 L V9 p3 O! d5 a% c+ W) o2 w5 _$ K" G% u" Q3 o9 N% y8 j
UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。. Z8 c t. H! G" s3 q( I2 I
我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。
8 ?# h$ ]0 k) Q3 j: v
7 G( Y6 ~. d0 G$ M9 o: c. B消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……- ?7 w4 t$ O5 A* v: D. T1 E' E
这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不能像 Windows 那样”,
. m4 } S( p7 g2 Y% t不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方
$ F+ Z1 K1 s% w$ b" T+ K5 p0 Z$ @2 ~式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,& h- b* h/ y. W/ q5 h7 L
了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑
9 K7 r8 c0 G* c% [$ H, _$ u# ~' \里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的.; ^: q: a: |' s0 C
- v: N7 E7 q3 {: n& r& n- v; v
我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利* r7 S3 v7 n# v, I# V' N
用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解
" \2 m! `; e/ v" N5 t决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。
& D, ~' j3 A/ {, Z. D* h4 U0 [5 E7 ~1 O; U1 K
附录: 我用来处理日常事务的 Linux 程序
' P. p7 D6 |7 u+ E! I6 }好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但% X5 f: ^& r% J7 b2 @7 j
是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。
3 M4 Y. c0 ^! ^$ q你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才是最重要的。
9 e; k2 C8 W! {" p; @工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。
3 A: ]& F8 K$ e+ x* l( d! O, D# D( B8 l+ Q: ?, ]
如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那1 ~4 X! ]4 v, v- {& f* T
就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理2 b I6 z% _6 x. p
员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助. 不用把你的+ x" |3 [- C8 \ h
机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样 B- V; B+ R5 E/ C
会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因为 Linux 缺省
; [5 @6 p/ v$ }& [3 S! \: @已经很安全了。不过你有兴趣了解更多那也无妨。7 P' K9 P1 S# v% P9 H2 v' o
" D: } j9 }& [+ \& ^1 ~7 Z下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工: J w- Z% i( D9 E# d a* ?
程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其
7 x2 y3 Y2 ^$ j7 L1 {5 P2 k- `; E它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们
+ L1 T1 R& `6 x$ t5 f很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人
" S& c- r% w8 I' m- \6 H辛勤劳动的产物,是可靠的程序,它们物有所值。
2 c9 @7 |5 K! ]" V8 ~ |