|
理解和使用 GNU/Linux
理解和使用 GNU/Linux
Linux 是简单的, 你不需要成为一个天才也能感受这种简单.
* 摘要
作者本身有着并不长的 GNU/Linux 使用经验, 但已经深深地喜欢上了 GNU/Linux. 本文向大家介绍了作者使用 GNU/Linux 的经验和感受. 目的是为了 让大家能够更好地理解和使用 GNU/Linux.
如没有单独说明, 下文中 Linux 和 GNU/Linux 可以互相替换. Windows 则 指代 Mircosoft 公司的 Windows 系列产品.
* 说明
作者 Yuan Xinhao 这仅仅将本文发表在 OIBH 的 BBS - http://www.oibh.org/bbs 上, 未经同意不得修改, 转载请注明来源.
如果你看过WangYin的``完全使用 GNU/Linux 工作'', 那么这篇小文就可以 毫不犹豫地被忽略 -- 小文只相当于这篇文章非常无聊的狗尾续貂, 仅此而已.
* 正文
** 前言 **
正如大家所知, 在现今的 NOI( National Olympiad in Informatic )已经使 用 Linux 作为其标准测试环境, 许多人对此表示不理解, 他们认为这是一种无法 让人接受的行为. 在他们看来 Linux 的编辑环境是那么的弱, 经常出 BUGS, 调 试很有问题, 甚至连编译都无缘无故出现错误. 于是他们说 Linux 唯一的好处就 是不要钱而其他一无是处. 他们干脆在自己的 Windows 中安装 VMWare, 模拟一 个 Linux 来使用. 他们使用所有的工具和需要的资料都保存在 Windows 环境下. 而仅仅在虚拟的 Linux 环境下装上 NOI 规定的编译环境. 全当 Linux 是一个充 满 BUGS 的 IDE.
我很后悔当初我也曾这么想过, 尤记得几年前我曾经一时冲动让老爸买回一 套 Blus Point Linux 发行版, 然而在5天之后就因为完全无法适应而重装回了 Windows. 从此以后的长久时间一直在 Windows 下面工作. 然而在几番周折之后, 我毅然将 Windows 删去并将工作环境转移到 Linux 下. 不到两个月的时间, 我 已经完全适应了 Linux 下的工作环境, 并逐渐领悟了隐藏在背后的设计哲学.
** Windows V.S. Linux **
在这里并不是想比较出哪一个操作系统更加的好. 其实``好''这个概念是很 难定义的, 每个人的需求不一样, 比如说如果你只是想用家用电脑来看看电影, 打打游戏, 然后处理一些文档的话, Windows 确实是一个不错的选择. 而本节想 表达的主要意思是:
>> Linux 是比 Windows 更加适合作理论研究的操作环境. <<
道理其实很简单, Linux 是自由( Free )的操作系统, 而 Linux 的开发者基 本上都是那些热爱且精通 Linux 的 Hacker, Researcher 和 Scientist. 他们大 部分有着厚实的开发实力, 充满着开发热情, 且掌握了先进的软件设计思想. 这 都是我们需要学习的东西, 在这样的环境下工作, 在不知不觉中可以受到设计者 潜移默化的影响. 更重要的是, 在这样一个环境下工作, 几乎所有的功能都是面 向研究者的 -- 开发者将自己需要的功能实现在 Linux 下. 这一切的好处都是可 以自由获取的 ---- 还有比这更好的消息么?
我见过很多身边的 OIer 使用 Linux 的第一次经历大概是: 在虚拟机中安装 了 Linux, 从网上下载一个 Lazarus 并开始使用, 五天后将虚拟机映像删除. 说: Linux 怎么这么烂, 连个好用的 IDE 都没有, 还不如 Free Pascal 呢.
我们可以看到很多人对程序设计中的概念存在一些误解, 但是本节的重点不 是讨论这个.
想像一下那些使用 Linux 工作的大拿 -- 如 Knuth 等, 他们是如何开发出 那些优秀的软件的? 难道 Knuth 的 TeX 是使用 Free Pascal IDE 或者别的什么 IDE 在 Windows 下开发的? 这是不可能的. 因为他们使用更好的方法来写代码.
让我们看看一个完整的 IDE 给我们提供了什么东西, 首先得提供我们一个完 整的编译器, 调试器和文本编辑环境吧? 这个环境还必须得语法高亮, 然后再在 这个环境里嵌入各种各样的功能 -- 工程管理和调试等等. 此外还提供了一套独 立的快捷键, 管理方式等等. 而且很多时候, 这些都是不可配置的.
但我们得到的是一个功能完整却相对低效的成套产品! 很多时候, 这个 IDE 的编译器不如 GCC, 调试器不如 GDB, 工程管理不如 GNU Make, 代码编辑环境不 如 GNU Emacs/VIM. 更要命的是, 一旦更换 IDE, 我们又去得重新适应新的环境 -- 新的编译器, 调试器, 代码编辑器, 热键!
想像得到这是一个多么低效的过程. 而在 Linux 下, 我们使用 Emacs 作为 代码编辑环境 -- 如果你不喜欢 Emacs 的操作方式, 完全可以使用 VIM 或者任 何其他顺手的代码编辑器. 你可以使用 gpc 或者 fpc 来编译你的 pascal sources, 使用 gdb 来调试你的代码. 这一切都是任你选择的, 而他们都是那么 强大.
其实上面所提到的工具在 Windows 下都有对应的移植, 但是他们原始的工作 环境是 Unix-Like System, 可以想像到他们在 Linux 下的表现会比 Windows 要 好一点点 -- 至少不会逊色.
体会到了么, 这就是一种先进的设计思想 -- ``tool, not policy'', Linux 提供你各种功能强大的工具, 然而你如何使用这些工具那是你的自由. 你可以自 由组装来达到你想要的效果. ``Linux 是高级的组装货.''
** 理解 Linux **
很遗憾的是, Linux 对初学者的确是不太友好 -- 尤其是对于刚从 Windows 环境下转移过来的 Linux 初学者 -- 因为 Windows 的那套工作方式已经先入为 主地影响了你. 但是相信我, 学习 Linux 是值得的. 等你真正理解了 Linux 就 会明白为什么我会这样说 :>.
*** 从命令行开始 ***
很多人第一次装 Linux 的时候 -- 大多都是完整的 Linux 发行包, 一般都 会装上一个华丽的 X 环境 -- KDE 或者 GNOME, 然后在用了一段时间后将 Linux 卸载 -- ``Linux 到底怎么用啊, 好多功能 Linux 都无法完成!''
首先的一个误解是, 不是 Linux 无法完成, 而是你在你的桌面环境中找不到 对应的功能, 事实上 Linux 很多实用而强大的工具都是基于命令行和基本 X 接 口的 -- 比如awk, grep, imagemagick, gdb, GCC, Vim 和 GNU Emacs 等, 他们 在一开始是如此的丑陋 -- 以至于完全不想用它. 值得注意的是, Linux 下的工 具完全不能``以貌取人''的, 他们并不用华丽的外表来吸引用户, 他们靠的是强 大的功能. 所以我建议学习 Linux 最好从命令行开始. 而不要去安装那些看似华 丽的桌面环境 -- 他们将一些基本的细节隐藏在幕后, 这对于学习 Linux 是非常 恼火的.
*** 动手配置软件 ***
不要指望一个软件一开始就如你所愿, 还记得 Linux 的软件哲学么? 你需要 告诉软件你想让它如何工作, 这样软件才能高效地为你服务.
- 希望 GNU Emacs 使用 scm 作为 Scheme 解释程序而不是 scheme48? 很简单,配 置:
>> (setq scheme-program-name "scm")
就可以了.
- 希望 sawfish 窗口管理器在我发令后自动切换到我的 GNU Emacs 窗口? 只需 要在配置脚本中写几行配置程序, 就可以智能的切换了 -- 可以自动地在众多 窗口中轮换 Emacs 窗口 -- 甚至可以在找不到的情况下自动启动一个新的 Emacs 进程, Magic!
- 希望 ...?
好了, 还有什么配置不能办到的?
*** 用 Linux 的方式思考 ***
并不是要洗脑, 只是很多在用 Linux 的人大多都有疑问, 碰到无法完成的需 求怎么办? 很多人因此而放弃了 Linux, 这是十分不明智的, 因为很多时候都是 自己本身的问题, 我的思考步骤是:
1. 这个需求是不是必要? 我能不能用更好的方式来完成我这个需求的本来目的?
很多时候这一步可以解决问题, 因为很多时候是由于思考没转过弯来, 导致了 奇怪的需求 :>
2. 查阅的帮助文件
一般 Linux 上的软件(包括 Linux 本身)都附带了很完善的帮助文档. 有时候 甚至会觉得过于详细了. 常用的问题一般都找的到答案.
3. 上面两个都不行的话, 我会登录相关的讨论组寻问这个问题.
使用 Linux 的人大多都很热心, 他们很乐于帮助新手.
至今为止还没遇到过没有解决的问题 :>.
** 目前我的 Linux 解决方案 **
其实照理说全文应该结束了 :>.
不过还是想将我现在使用 Linux 的情况展示给大家. 这些工具能解决目前我 碰到的大部分需求(有些软件我还没有学会, 所以暂时 ... ). 把这些软件列出来 多少可以给他人多一些帮助.
- 基本环境: Ubuntu Command-Line system [Shell] bash, dash, scsh
- 编译/解释环境: [基本/工程管理] GCC及其附加组件 [Lisp/Scheme] scm, scheme48, guile [Pascal] fpc [调试环境] gdb
- 编辑环境: emacs, nano
- 学习环境: [英语] dictd, stardict, wordnet [计算] scilib, maxima
- X基本环境: [Xwin] xorg, sawfish [虚拟终端] xterm(unicode), tilda [桌面应用] fbpanel [输入法] fcitx, scim
- 互联网应用 [浏览网页] firefox in X, w3m in Console [下载工具] wget, downthemall in Firefox [Mail] mutt
- 文档处理 [图像] imagemagick (我的需求还没有高到需要用gimp的程度) [MS Word] wv [ps/pdf] gv, xpdf
- 娱乐功能 [视频] mplayer [音乐] mpg123, quark, mpd, 如果xmms2成熟我会考虑使用xmms2
**********************************************************************
好了, 全文完.
并不一定要接受文中的观点, 批判的眼光审阅吧.
|