《徹底用Linux工做》做者:王垠程序員
徹底用 GNU/Linux 工做正則表達式
理解 GNU/Linux算法
更多精彩請直接訪問SkySeraph我的站點:www.skyseraph.com shell
注:本文是清華「牛仔」王垠的「成名做」,在網上引發很大的爭議。對他崇拜地五體投地者有,對他嗤之以鼻者也有,總之成了一年多之前Linux 愛好者的圈子裏的一個頗有意思的現象。以後他對這篇文章進行了很大的修改,已經沒有了原來那種意氣風發。現存的版本如白開水通常無味,請參見:http://learn.tsinghua.edu.cn/homepage/2001315450/apache
儘管他原來的觀點有所偏激,但我仍是很欣賞他原來的風格。編程
「UNIX 是簡單的,你不須要成爲天才也能理解這種簡單。」小程序
因爲GNU/Linux這個詞太長,下面若是沒有特別指明,「Linux」就是指「GNU/Linux」。安全
在這個年代,恐怕沒有人須要我來介紹 Linux 是什麼了吧?若是你以爲「Linux 只不過是跟 DOS 差很少的東西」,那你恐怕好久在山洞裏沒見天日了吧?請問問你旁邊的 Linux 用戶,Linux 究竟是個什麼地位?bash
那爲何我還要寫一篇這樣的文章?由於,我發現還有不少人不不理解 Linux 和 UNIX,雖然他們也在用它,可是他們有時會問:「爲何 Linux 不能像 Windows 那樣 ……?」,「怎麼Redhat Linux不能 mount NTFS 分區!」,「Linux下用什麼整理硬盤?」,「何時OpenOffice才能徹底兼容Word文件啊?」,「如今還有什麼Windows能幹的事情Linux幹不了的?」……服務器
他們有40G的硬盤,卻只爲 Linux 分配了2G空間,有時還抱怨「這個東西怎麼佔這麼多硬盤!」 彷佛 Windows該佔用大部分硬盤。他們把重要的數據裝在Windows的分區,彷佛信不過 Linux。他們老是處處尋找新奇的,好看的GUI程序,對命令行的東西一律不屑一顧。他們對Drag&Drop,菜單配置,自動升級很是感興趣。他們若是找到一個很像 Windows 程序的 Linux 程序,必定會很高興的說:「哈哈!Linux 也能……了!」若是Linux在某種測試中賽過Windows,他們會高興得跳起來。他們沒有辦法用Linux解決問題的時候,甚至用Wine來運行Windows程序。有時實在沒辦法,只好重起到 Windows,或者乾脆免得麻煩,在 Windows 下裝一個 VMWare虛擬一個 Linux 玩。
你支持 Linux,你喜歡 Linux,你能從中感受到快樂,這很是好。你如今只須要明白的是:Linux 歷來就不是一個玩具,它是天才UNIX的後代。UNIX 是自晶體管發明以來最偉大的發明,它從誕生那一天開始就比 Windows 的設計出色。Linux 並不須要追趕 Windows,不須要打垮微軟,它的最終目標是改變整個計算機世界,還人們自由,給人們樂趣和方便。其它UNIX不少都已經敗在Linux腳下,更況且 Windows!
你若是出現了以上的狀況,說明你的思想受到了 Windows 的某種潛移默化的影響和誤導。你沒有可以從本質上理解存在於 Linux 身上的 UNIX 思想。UNIX的設計者Dennis Ritchie 說:「Unix is simple. It just takes a genius to understand its simplicity.」 可是我不這麼認爲,由於我不是一個天才,可是我卻勇敢的把Windows徹底刪除掉,半年以後我體會到了 UNIX 的思想和好處。由於我相信這樣的信念:「Windows 能辦到的事 Linux 必定能辦到,並且辦的更好。」
這小節開頭的話應該改爲:「Unix 是簡單的,可是在這個衝斥着 Windows 錯誤觀念的世界,你須要信念和勇氣才能理解它的簡單!」我下面就告訴你一些我理解到的東西。
微軟的地位
微軟的名聲在歐洲和美國的大學裏,特別是在計算機系裏之壞,你們可能有所耳聞。我認識的 MIT,Stanford 的教授,貝爾實驗室的專家,甚至一個歐洲小國的高中計算機老師都絕口不提微軟的名字。在他們眼裏,微軟只是一個沒有真技術,專靠在落後國家商業宣傳和壟斷經營的小公司。這個「小」並非說它人少,錢少,而是說它先進技術少。
我上次和王益合做寫了一個算法演示程序,那個算法是貝爾實驗室一位科學家Steven Fortune很天才的發明,爲了程序可以被身邊大多數人使用,咱們選擇了VC+MFC 做爲平臺。我在分析算法時還獲得 Fortune 很熱情的鼓勵,寄給我一份資料,還屢次回信耐心的給我講解了不少細節。可是程序完成以後,我把樣品發給Fortune,他回信說:「對不起。我機器上沒有 MFC。」話說的很客氣,可是我已經感受到了他對 Windows 的不屑。而後我把 MFC 靜態編譯進程序再發給他,他就沒有再回信了。他顯然不是瞧不起我,而是確實有難處。
你能感受到這位科學家對微軟和 Windows 是什麼態度了吧?不是反感,而是他內心根本沒有 Windows 這個東西!微軟在高科技領域沒有發展,那麼它怎麼生存呢?到發展中國家去發展一下,他們的人民還對電腦一無所知,我說不定甚至能夠打入大學的計算機系呢。我送他們軟件,我捐錢蓋大樓,我出錢找圖靈獎得到者來演講,讓他們以爲咱們都是科學家!
好了,如今全國的大學包括清華,幾乎全部人機器必裝盜版 Win2000,Office XP,學校的選課系統是非IE不能正確瀏覽,論文用 Word 編輯,演示用ppt作,email 的通知附件是 doc 文件,你不用 Word 打不開,連 863 項目都用 VC 寫程序了。我好久之前就看到一份報紙說,「微軟爲何不嚴厲打擊盜版?」這篇文章說,微軟非但不打擊中國的盜版行爲,並且有聽任之趨勢。放長線吊大魚,「之後我要大家加倍的來還我!」確實如此,它的目的快實現了。
Windows 籠罩下的中國計算機教育
說句丟臉的話,比爾蓋茨好久之前是個人偶像…… //blush
在中國,比爾蓋茨被不少人奉爲神聖,「少年電腦天才」,甚至有的人提到他的名字就作出「抱拳對天」的姿式。不少人談到微軟的「新技術」,「高科技」 都是眉飛色舞。各類「VC編程聖經」,「深刻了解 Visual C++」之類的書,在開頭幾頁都會出現很是肉麻的字眼,「在那團團的混沌中,一個開天闢地的精靈,Windows 1.0,誕生了……」
微軟的軟件被這麼多人盜用,那麼人們是怎樣使用這些盜版程序的呢?先看看電腦培訓班,教的都是一些 DOS 命令,打字,Windows 基本操做,Word 文檔處理,PowerPoint,高級班可能有 Excel,Access…… 參加各類微軟認證考試,MCSE,MSDE 的人絡繹不絕。考試輔導班都貼出了「280元,考過爲止」之類的字樣。考試參考資料更是昂貴,有些電腦書店整整兩書架都是「Microsoft Press」的東西。我有個同窗參加認證考試,每門考試都要200多元。並且你一次考不過能夠再考,又要交錢。他後來還津津樂道跟我說,看我,花了XXXX(一個四位數)元考過了微軟認證,獲得一張比爾蓋茨親筆簽名的證書和價值6000元的 Windows XP 內部發行版。
「電腦要從娃娃抓起」,咱們再來看看娃娃們學的是什麼。大部分家長給孩子買了電腦以後,他們首先就會裝一個盜版的 Windows,而後買來盜版的遊戲開始玩。若是哪一個孩子會用 Delphi 編程序,那可不得了。報社記者,電視臺爭相報導,說,某某學校的初中生某某,在別人都還在玩電腦遊戲這種「初級階段」的時候就已經用 Delphi 寫程序了。鏡頭還瞄準了他顯示器上面的像框中的比爾蓋茨頭像!
我剛進入大學計算機系時還不懂得什麼是操做系統,由於我之前只用過「中華學習機」。看到新入學的同窗們各個談論的都是 「Windows 95」,「VC」…… 我簡直以爲我落後了好幾十年同樣,整個一土人,根本跟他們答不上話。好不容易找到一個比較熟的同窗問了一下:「大家每天談論的瘟95是什麼啊?」答:「win95就是一個操做系統,跟DOS是一類。」「朵死是什麼?」 「你連DOS都不知道是什麼?別在計算機系混了。」學校上課固然不講VC編程之類的東西,可是上 Pascal 的老師有一次就說:「嗨,咱們學校真是落後。如今別人都用 C, C++,甚至 VC 了,咱們還在講 Pascal。不知道何時纔能有VC課啊。大家出去也是要用VC的,只好自學了。」因而,有些同窗不少時候上課都捧着一本很重的「Windows 編程大全」之類的書,根本沒有聽課。吃飯時就念念有詞的跟我說,「代碼的優化是無止境的」,「匈牙利命名法真是偉大的發明」 …… 這就是中國不少大學計算機系的狀況。
感受到無知了?這不是偶然的,而是微軟長久以來埋下的伏筆。它要讓無知的你們都把它奉爲神聖,它要讓支持UNIX,Xwindow的人一旦說 UNIX 好,Xwindow 好的時候,都被一羣人圍着說教:「這個 Windows 也能作到」,「你對 Windows 有偏見」,「微軟纔是主流啊」,「你敢瞧不起 win2k?」,「.NET 就是世界潮流」,「微軟的畢竟是新技術」,「有錢就是有技術」……甚至在一番論戰比較後敗下來仍是要說:「Windows 性能差點,可是易用性強」,「Windows 是老百姓用的,要求別那麼高」,「微軟那麼有錢,之後想超過 UNIX 還不容易嗎?」……
發達國家的計算機教育
我前段時間在 USENET 發文問有關 Scheme 語言的問題時,認識了一位丹麥人。他解決了我全部的問題,而且建議我閱讀一些很「深奧」的有關程序語言語法,文法的書,他告訴我不少網站能夠學習 LISP,Scheme,人工智能,算法。他叫我看 Jonathan Rees 的論文 "Syntactic Closures"。他還打包給我寄過來一份 MIT 的 "How to Design Programs"。他說他在本身的 PC 機上裝的是 Linux,他用 Emacs 編輯,運行 Scheme 程序。他對 Emacs 的瞭解和愛好真是令人驚訝。他大學本科畢業時作的畢業設計是一個 Scheme 解釋器。這對於我來講是望塵末及了。
他是那麼的不厭其煩,個人每個問題他都詳細的回答。我有時都以爲過於詳細了,怎麼這麼耐心啊?我以爲他彷佛是個人高中老師。他是什麼樣的人呢?我好奇的打聽了他的狀況。原來,她是丹麥一所普通高中的計算機老師,並且是個女老師!
她說她在高中裏講授程序設計和算法,計算機語言文法。她說用 Scheme,她的學生不用再爲內存泄漏等程序語言自己的問題而煩惱,而專一於問題和算法自己。有利於培養學生解決問題的能力,特別是用計算機解決數學問題的能力。
天哪!爲何歐洲出現那麼多數學家,幾何學家?你看看別人重視的是什麼!咱們的計算機教育若是繼續這樣下去,只會沿着彎路越走越遠!
微軟和它的朋友們的如意算盤
下面來看看微軟的收入是怎麼來的。首先,Windows 98系列操做系統,一個就是 100 多美圓,每次升級又是幾乎一樣的價錢。Windows NT 還要貴幾倍,並且有用戶數目限制,5個用戶的,10個用戶的……之後若是要增長用戶數目還要按比例付錢。這個奇怪的現象被通用汽車公司的總裁比喻爲:「你買的微軟牌汽車最開頭只有一個座位,每加一個座位你得向汽車公司付錢,每開100英里要大修一次,每過一年要換一次引擎。」
花了如此多錢買來的操做系統就能用了嗎?它居然連壓縮程序都沒有提供!你裝上 Windows 以後通常第一件事就是去下載一個 WinZip 吧,「只要 29 美圓」。Windows 會中病毒啊,立刻花 70 美圓買一個 Norton AntiVirus 吧。還有黑客呢?再買一個 Norton Internet Security 好了,100 美圓。系統須要優化,磁盤須要整理,買一個 Norton System Works 是你最佳的解決方案,100美圓。
但是你如今仍是不能幹正事啊!你想要一個 Word, PowerPoint?那就買一套 Office XP 吧,一塊兒買便宜些,9.90。
那些程序不會用啊!那些菜單怎麼設置,到底有什麼功能啊?看「幫助」也學不會。買本書看看吧,我推薦「Special Edition Using Microsoft Office XP」,不貴,.99。這本書裏面大部分是屏幕抓圖,仍是買一本舊的比較划算,.85。
你若是隻是當個祕書,上面的差很少還湊合了。但是你有更高的追求,你想成爲 Windows 程序員。首先買一個 Visual Studio.NET 吧,要否則怎麼編譯程序。4.95。
爲了緊跟微軟動向,世界潮流,不能不註冊個 MSDN 什麼的吧?這個貴一點,不過物有所值啊,,799。
嗯,你如今已是上層階級,白領人士了。你如今能夠像這樣「自由」的,「安全」的生活了:
什麼是 Windows 能幹而 Linux 幹不了的事情?
「Windows 能幹而 Linux 幹不了的事情,那就是不須要乾的事情。」
有個朋友看我半年沒有用 Windows,有時就會問我:「你只用 Linux,有沒有發現有些 Windows 能處理的事情 Linux 幹不了?」
我回答說:「Windows 能幹而 Linux 幹不了的事情,那就是不須要乾的事情。」
Windows 能作的有益的事情 Linux 都能作
Windows 下的某些功能確實是咱們須要的,那麼 Linux 的開發者們和用戶也須要這種功能,他們就會去實現這種功能,並且比Windows 的方式好得多。因爲大多數科學家,工程師用的都是 Linux 或者某種商業 UNIX, 因此幾乎全部商業的科學工程程序,好比Matlab, Mathematica, AutoCAD, Candence的,Synopsys的,Avant!的……全都是先有 UNIX 的版本(包括Linux),而後再考慮移植給 Windows,甚至根本不移植給 Windows,由於 Windows 的機器通常沒有足夠的能力運行這樣的程序。你不要覺得只有 Windows 纔有 PSpice, UNIX 的 HSpice 要好得多,並且能夠運行在大型主機上。固然它們不是免費的,可是它們值那個價錢。
可是 Windows 下有些東西在 Linux 下沒有很類似的,或者你找到不少相似的,可是它們每個比起 Windows 的那個程序都要差不少,那麼緣由有兩種可能性:
1. 有一個徹底相似的程序,可是因爲它乍一看不漂亮,被你忽略了。
而其它程序雖然看起來很漂亮,可是它們是一些初學編程的人寫的。如今因爲 Gtk+, Qt 的誕生,Linux 下開發圖形界面程序極其簡單,不少初中生甚至小學生均可以隨手編出一些漂亮不中用的程序。若是你成天尋找這樣的程序挑來挑去,永遠也找不到你滿意的。
我曾經也犯過這樣的錯誤,優秀的 FVWM, lftp, Mutt, wget 都被我忽略過!當我找回它們的時候,我是那麼的羞愧不已,它們如今都是個人朋友 :) 用這些程序你能夠改變它們的一切,我第一次看到 FVWM 以爲它只不過是一個有很厚很難看邊框的東西。但是如今,個人同窗看到 FVWM 都說:「哇!真漂亮。」
2. 有另外一種徹底不一樣的方式能夠達到相同的目的,甚至更好。
不少人很關心 Open Office, Star Office, AbiWord, ... 他們多麼盼望有一天某一個 Linux 程序可以徹底兼容的打開一個複雜的 doc 文檔。可是你永遠也不可能有那一天。爲何呢?由於微軟爲了佔有市場,一定不會讓其它系統的程序可以徹底兼容它的文檔格式!它必定會不斷變化 doc 文檔的內部結構,隱藏一些祕密,讓其它公司的程序打開 doc 文檔時老是有某種問題,從而你必需購買 Microsoft Office 和Windows。
你應該想一下,那麼多的高智商的大學教授,科學家,學生,他們用的都是 Linux 或者其它類型的 UNIX,他們沒有 Word 可用,怎麼處理文檔呢?這麼多年沒有一個像 Open Office 的程序出現,難道你們沒有辦法寫文檔嗎?
顯然不是這樣。你看看那些高水平的學術雜誌,論文,那些大學教授的網頁,那些漂亮的PDF幻燈片,它們是什麼作的?原來 UNIX 用戶早就有很是方便的 troff, LaTeX, SGML 等東西能夠處理文檔,並且它們比起 Word 都要高明的多。Word 顯然被這些大拿忽略了,以致於好久以來沒有人想在 Linux 下開發一個相似 Word 的程序,除非某些公司想搶微軟的飯碗。
不少人留着 Windows 在硬盤上的緣由無非是爲了用 Word 和 PowerPoint。你待會兒能夠看看個人TeX網頁,你就會知道爲何我能夠徹底離開 Windows.
Windows 能作的那些沒用的事情 Linux 永遠作很差
1. 電腦遊戲
有些人說 Linux 下不能玩 Windows 下所能獲得的全部遊戲。的確,Linux 下雖然也有少許的遊戲,好比 Quake。可是它沒有 Counter Strike, 沒有 Star Craft, ……
並非說電腦遊戲不應玩,可是應該適可而止。電腦是用來處理事務,幫助你學習,解決問題的工具,而不是一個玩具!成天沉迷於電腦遊戲中,而不出去感受外面的世界,你會變得愈來愈冷酷,愈來愈缺少人情味。你與真實的世界愈來愈遠。
你能夠在 CS 裏殺人,你能夠在 Tomb Raider 裏探險,你甚至能夠在 Tony Hawk's Pro Skaters 裏滑板……可是 It's not real!你雖然有很高的「反恐技巧」,可是遇到歹徒的時候,你是那麼的怯懦;你雖然控制 Laura 伸手敏捷,可是你打籃球的時候怎麼老是被人斷球?你雖然能夠輕易的在 THPS 裏做出一個 "360 kickflip to hangten grind to fakie",可是你踩在本身的滑板上的時候還不會 ollie!
說回來,若是你偶爾玩一下電腦遊戲何嘗不可。可是世界上有遠比 Windows + PC 更好的遊戲方式。Sony 的 PlayStation2, SEGA 的 DreamCast, Nintendo 的N64,Namco 的街機……每個都比 Windows 遊戲精彩,每個都有如此高的3D性能,以致於 Pentium4, Itanium + GForce4 都沒法與它們比美!
Linux 的用戶們都是關心解決世界的關鍵問題的份子,他們哪裏有時間用本身的機器來玩遊戲啊?他們天天用Linux高效的作完本身的工做就到陽光下享受天然去了。要玩遊戲也是玩一些相似推箱子,貪吃蛇之類的智力小遊戲。因此,你知道爲何 Linux 幾乎沒有遊戲了吧?:)
2. 「整理硬盤,優化系統」
這是一個很是有意思的話題,僅次於有關「病毒」的話題。相信不少 Windows 用戶都有整理硬盤的經歷。在不少 Windows 用戶眼裏,「硬盤用久了,會出現碎片,速度會減慢,須要一個程序來整理,整理硬盤的時候不要作其它工做」,這好像是天經地義的事情。
我也曾經津津有味的看着 Norton Defrag 一點一點的把個人硬盤排序,調整,用圖形的方式顯示出來,而後報告:「100% 沒有碎片。你的硬盤如今已經達到最佳狀態。」我如今才發覺我那時是多麼的幼稚。
Linux 和 UNIX 用戶彷佛曆來沒有「整理硬盤」這種說法呢?你以爲很奇怪嗎?若是你以爲很奇怪,那說明你的思想在某種程度上被微軟的垃圾程序禁錮了。你須要明白,UNIX 的大型主機不少必須是一天24小時,一年365又1/4天不停運轉的,要是每一個星期都要整理一次硬盤,在整理的時候幾乎不能幹任何事情,那是絕對行不通的!
Linux 機器根本不用整理硬盤,這就是爲何沒有看到過 Linux 用戶整理硬盤。Linux 的文件系統是比 Windows 的 FAT, FAT32, NTFS 高明得多的文件系統,它們不但能夠對文件設置權限,實施徹底的保護,並且能夠「越用越整齊」,「越用碎片越少」!你應該把文件大部分放在 Linux 的分區,而不是 Windows 分區,由於它比Windows 分區可靠得多。
還有更滑稽的事情就是有不少「Norton System Doctor」,「Windows 優化大師」,「超級兔仔註冊表魔法」之類的程序存在,並且價格昂貴。彷佛一個操做系統原本應該有不少問題,須要別的廠商作程序來「優化」它,並且爲了獲得優化,你須要付錢!這些問題 Linux 根本就沒有,因此不須要什麼優化。Linux 內核自己就是高度優化的。
3. IDE
有些人在抱怨爲何 Linux 沒有一個良好的 IDE 開發環境。Linux 如今已經有一些 IDE 了,可是老是有不少問題。你是否是正在尋找,正在指望 Linux 某一天能夠有一個VC那樣的開發環境?你有沒有發現你正在進入微軟給你設下的怪圈?你爲何必定要用 IDE?你說:「IDE 開發迅速,調試方便,適合大型程序……」那說明微軟的程序在你腦子裏已經比較根深蒂固,你須要好好清醒一下了,看看我來告訴你。
高明的 UNIX 程序員不用 IDE,IDE 歷來就是給初級 Windows 程序員用的。
你看看大型的 UNIX 程序,包括 Linux 內核,各類網絡服務程序,Xwindow 程序在內,哪個是 IDE 搞出來的?咱們實驗室的 EDA 程序也沒有一個是 IDE 弄的,我還知道 Candence, Synopsys,Mentor 的高性能的圖形界面 EDA 程序也都不是 IDE 寫的。你信不信,微軟的人在寫 Windows 自己的時候也根本不用 IDE!
有一次某雜誌採訪一些出名的 Linux 內核程序員,包括 Linus 在內,沒有一我的用 IDE,有的人用 VIM,有的用 Emacs,只有 Linus 說「GNU Emacs is evil」,可是其實他用的是一種跟 Emacs 有一樣鍵綁定功能的 MicroEmacs。你們都是用編輯器編輯了程序文件,而後用 make 這樣的自動工具調用 gcc 編譯器完成編譯工做的。
我之前也編過 Windows 程序:應用程序,驅動程序。可是我沒有用 VC 的 IDE。Linux 教育了我,我會在命令行調用 CL,我知道 CL 纔是 VC 的編譯器。我能夠在cygwin 的 Makefile 裏使用 CL。我還知道 CL 的參數都有什麼用處。可是這些不是一個從一開頭就用 IDE 的人能很快理解到的。
我相信: IDE is evil。我有一些用 Windows 的 IDE 寫程序的朋友,他們對那套東西已經很精通了。可是我卻驚奇的發現,他們居然把編譯器和彙編器的概念都分不清楚,甚至有的人連「編輯器」和「編譯器」都搞混淆了!他們只知道在一個窗口裏輸入了代碼,點擊一個按鈕就能夠編譯程序,可是這裏面究竟是怎麼工做的,他們不知道!他們被蓋在上面的窗口擋住了視線,甚至會覺得那個按鈕就是編譯器!
他們對那些 IDE 的熱鍵背的倒背如流,可是我卻看到他們在一個函數一個函數的把別人的 ANSI 風格的代碼變成 VC 的風格。想一想這件事在 VIM 裏有多麼簡單,一瞬間就能夠搞定。
爲何 UNIX 程序員不用 IDE?明白了這個道理你就能體會到 UNIX 的設計思想了。首先,一個 IDE 集成了編輯器,編譯器,彙編器,調試器,跟蹤器……這個編輯器功能確定比不上 VIM 或 Emacs,編譯器比不上 GCC,彙編器比不上 as,調試器比不上 gdb, ddd, 跟蹤器比不上 strace, ltrace, truss。你獲得的是一套整合的低能的程序。若是你對調試器的功能不滿意,你只好換用另一套 IDE,可是這套 IDE 的熱鍵,菜單,編輯器功能,按鈕……跟原來那個有很大不一樣。你不得不花不少時間來熟悉新的環境,而不能保持原來的某些東西。
而在 UNIX 下就不同了。你能夠用你最喜歡的 VIM 編輯程序,你在 VIM 裏能夠調用 GNU make,make 能夠調用 gcc, ld, ... 實際上 make 能幫你不少忙。make 的出錯信息能夠被 VIM 捕獲,VIM 能幫你在源程序裏定位。你若是喜歡 icc, 你可讓 make 用 icc 而不是 gcc。你若是以爲 gdb 跟蹤變量時比較麻煩,你能夠用 ddd 來顯示各類數據結構之間的關係。你還能夠在 Emacs 裏調用 gdb,那樣就能夠同步顯示源代碼了。並且 VIM 和 Emacs 還能夠編輯不少其它東西,好比信件,LaTeX 文檔,HTML,配置文件……你不用另外找一個什麼編輯器來幹這些雜活了。不少程序好比 Mutt, tin 均可以在內部使用 VIM,這樣就更方便了。
4. 釋放內存
我在 Windows 下作過的一件最傻的事情莫過於「釋放內存」了。有一天我看到一個 Windows 程序說:「這個程序能夠幫你把大量內存釋放出來給一個很大的程序用。」我試了一下,竟然一下把個人 64M 內存釋放出來 48M!我高興極了。如今想想,那是多麼傻的事情,那麼多的內存留着幹什麼?不用白不用啊!一個操做系統,竟然還須要別人寫的程序來釋放內存,那是什麼樣的操做系統?
在 Linux 下用 free 命令,你會發現你的內存幾乎每時每刻都快要被用完。那是由於 Linux 把大部份內存用來做爲磁盤緩衝了。Linux 有比 Windows 先進的磁盤緩衝技術。你有沒有發現你往硬盤寫數據的時候,很快就完成了?那是由於 Linux 在內存裏有不少磁盤緩衝區,你要寫到硬盤上的數據先被寫到了這些內存裏,而後Linux 就告訴你「拷貝完成」,當你立刻又想刪除剛纔寫入的某些數據時,Linux 只是把數據從內存裏移除,而後報告「刪除完成」。在必定的間隔時間後,Linux才把數據寫回硬盤,這樣不但高效,避免了屢次硬盤操做,並且減小了文件的不連續,也就是減小了「碎片」。Windows 固然也有磁盤緩衝,可是因爲它內存管理的低效率,它不敢把大量內存都用來做爲磁盤緩衝,由於它沒有能力在用的時候隨時把內存收回來。
Linux 能幹的高級的事情 Windows 都幹不了
固然有不少事情是Linux/UNIX的專利了。由於 Windows 只能裝在 PC 機上,好像之前也有 Alpha 能夠使用 Windows NT,可是就是沒見到有人用。PC 機的能力是很低的,像咱們編程序處理 NP-Hard 問題的人,用 Windows 的機器顯然速度不夠,並且有時一個問題算上幾天甚至幾個星期,Windows 機器是以「死機」著稱的,咱們怎麼能放心?
因此幾乎全部科學計算程序,EDA 程序,高性能圖像處理程序都不是 Windows 的。他們有時也會移植一些給 Windows,可是經常下降那些程序的能力。你比較過Windows 版本的 Mathematica 和 Linux 的有什麼區別嗎?
IBM 製造的最大的並行計算機有 8000 多個處理器,Windows 不可能有能力管理這麼多處理器,它用的是什麼操做系統?答案是 Linux。
《泰坦尼克號》電影裏的三維動畫,那麼細膩逼真,Windows機器能作出來嗎?不行。那也是 Linux 機器作的。
民航總局用來訓練地情人員的虛擬現實訓練設備,Windows 固然無能爲力。那都是商業的 IRIX 機器。
UNIX 是最先支持 TCP/IP 網絡協議的系統。它上面有不少能夠互相協做的網絡服務程序,它們通過多年的使用和修訂,已經達到比較完善的程度。而就在1997年,微軟的比爾蓋茨還在揚言:「Internet 是沒有前途的。」微軟的這個「遠見卓識」你們應該都已見識,它後來加上的網絡服務程序IIS漏洞之多,讓公安部都頻頻發出警報,你們也是見識了的。
其實你知道了,Windows 沒有同樣有用的事情能比 UNIX 乾的更好。
Linux 幹不了的有用的事情 Windows 照樣幹不了
固然 Linux 不是萬能的。它也有不能幹的事情,電腦也有幹不了的事情。可是 Linux 幹不了的事情,Windows 確定也幹不了。這些事情就是咱們須要探索,須要努力的事情了。在你探索的過程當中,Linux 一定是你的好夥伴。
Windows 的流毒
不要用 Windows 的方式來思考問題
什麼?你早就知道 Windows 是垃圾?噢!你怎麼不早說呢!害我廢話這麼多。嘿嘿。
「好了。你知道 Windows 是垃圾,你如今用什麼?」
「Linux + Xwindow」
「那我問你,Xwindow 是什麼樣的?」
「不就是跟 Windows 差很少嗎?只不過 'Start' 按鈕比較方,並且上面不是一個 Windows 標誌,而是一個腳丫子。點擊一下竟然還有很漂亮的中文菜單。我喜歡!」
「你知道什麼是‘根窗口’嗎?」
「不知道。歷來沒據說過呢?」
「根窗口就是遮蓋整個屏幕的那個最大的窗口。」
「哪兒有什麼窗口啊!我沒有看到呢?」
你發現了問題嗎?這些 Linux 用戶說是在用 Linux 和 Xwindow,可是他們對 Linux 和 Xwindow 幾乎徹底不瞭解。不少人用了那麼久 Xwindow 都不知道根窗口是什麼東西,不知道其實按鈕也是窗口,不知道窗口管理器和 Gnome,KDE 有什麼關係,你們都覺得窗口上面的按鈕是程序本身放上去的,不知道窗口的「class name」,「resource name」是什麼東西。他們被遮在 Linux 之上的一層一層的包裝迷惑了!
當我告訴一個既能用 Windows 又能用 Linux Qt 編程的朋友 Xwindow 的「中鍵粘貼」是怎麼回事時,他大吃一驚,說:「Xwindow 怎麼這麼落後啊!竟然請求剪貼板的東西時還要聯繫剪貼內容的全部者本身來轉換格式!你看看 Windows 的剪貼板……」通過一頓飯的友好的討論以後,他不得不稱認,這個 Xwindow 用了幾十年的方法比 Windows 的剪貼板要合理的多。
後來又有一次,我告訴他每一個 Xwindow 的按鈕都是一個窗口。他說:「不會吧~ 這樣效率必定很低。你看看 Windows 的按鈕 ……」 又是一頓飯以後,他說:「哎呀。不得不認可 Xwindow 的方式是良好的設計。」
如今不少人已經把可以利用別人的庫寫出一個好看的程序做爲本身編程水平的象徵。在這個「圖形化」,「可視化」 的年代,你若是還在用 troff, LaTeX 寫文檔,你還在用 VIM 本身編輯 HTML,用 Mutt 處理郵件,你還在用文本模式的 gdb 調試程序,你還在用 Xlib 寫程序, 你還在用 tin 上 USENET,你還在本身寫 Makefile,寫機器代碼,你還在玩 Clossal Cave 這樣的字符模式冒險遊戲,那你就是老古董,不合時宜,變態。
其實這種思想是錯誤的。雖然你是一個堅定的 Linux 支持者,可是你的思想是 Windows 的思想。你認爲圖形界面,菜單,按鈕就能夠解決一切問題,就能夠給你高效方便。你要作堅定的 GUI 派而不是 CLI 派 …… 你仍是沒能擺脫微軟給你的潛移默化的東西。你其實離不開 Windows 那樣的環境,你懼怕符號,你早晚會刪掉本身的 Linux。
GUI vs. CLI
UNIX 和 Xwindow 是一家
你們看到這個標題是否是熱血沸騰?兩派大蝦均可以圍攻我了:
GUI派用戶:「哇!我一看你這小子就是 CLI 的。要否則本身寫什麼 Makefile?用什麼 Mutt?」
CLI派用戶:「切~ 你還用 X!高手都不用 X。你是 GUI 那邊的。」
可憐的我:「555~~大家都不要我~~ GUI 和 CLI 就那麼水火不容嗎?」
計算機界這樣的門派之分還不少。頗有特色的就是 CLI 和 GUI 了。CLI (Command LIne) 的狂熱份子聲稱永遠不用 X。我上次在實驗室看到一個同窗用一個 SecureCRT登陸到 Sun 機器,而後用一個 vanilla vi 編輯程序,我建議他啓動一個 GVIM 過來顯示在 Exceed 上能夠有語法加亮。可是他堅定反對,說:「高手不用X。你想一想,要是我在一個很慢的網絡鏈接怎麼用 X?並且好多服務器沒有裝 X 程序。」
可是咱們實驗室的網速可夠快,Windows 機器都有 Exceed 啊,並且 Sun 機器有全套 X 客戶程序包括 GVIM。他說他是 CLI 的堅定擁護者,可是他卻在用 Windows,他後來打開了好幾個 SecureCRT,每次從文本框輸入地址,用戶名和密碼,從下拉菜單選擇 "SSH2",而後點擊「Connnect」。他還不斷的誇SecureCRT是「網絡管理員投票選出的最受歡迎的登陸方式」。老天,SecureCRT 自己就是個 GUI 啊,他實際上是一個 GUI。
你說我是 GUI 的?我雖然不多在 console 下工做。可是我對 bash, VIM 很熟悉,我可讓 bash 按照個人鍵綁定方式來工做。我能夠在 rxvt 裏使用 Mutt 來收發email。個人每一個桌面上都經常堆放着一打不一樣大小的 rxvt。我用 VIM 編輯 LaTeX。我本身寫 Makefile 來維護 LaTeX 文檔。我有時用 mpg321 來放 mp3。我上BBS用的我本身寫的 expect 腳本,定義了不少熱鍵,我只要 Ctrl-H 就能夠隨機變化個人簽名檔和說明檔。個人 expect 腳本有高級的自動回覆功能,甚至能夠以假亂真,讓你看不出其實我不在,你有可能跟個人機器人聊上10分種才發現那不是我 :p 好了,CLI 派的朋友能夠收我作盟友了 :)
你說我是 CLI 的老古董?個人 FVWM 被我配置爲能夠「手寫操做」,我只要畫一個"r"就能夠啓動 rxvt,我只要畫一個 "U" 就能夠啓動 GVIM,……我用 GVIM 語法加亮模式編輯程序,我用 Mozilla 瀏覽網頁,…… GUI 派的如今好像認我作朋友了 :)
好了。CLI 派的朋友,雖然我很喜歡命令行,可是我有時在屏幕上左右畫一下就能夠執行:
Module FvwmConsole -terminal rxvt -geometry 45x5-0+0 \
-bg gold -fg midnightblue \
-fn "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*"
你是否是如今又想把我逐出師門?
GUI 派的朋友,雖然我很喜歡窗口。可是我能夠在 FvwmConsole 裏輸入:
All (rxvt) MoveToDesk
把我全部的 rxvt 移動到我如今工做的桌面。「這傢伙,怎麼這麼快就叛變了!」
其實何須分什麼 GUI 和 CLI,UNIX 和 Xwindow 都是工業標準,它們從設計那天開始就有很是靈活的用法,各個程序,無論是 GUI 仍是命令行的均可以互相協做。UNIX 和 X 是一家,何須搞的那麼偏激,非此即彼?你從我上面的行爲能夠看出 GUI 和 CLI 的模糊界線嗎?你說我是「花心大蘿蔔」?花心就花心。hengheng :P
UNIX 的真諦何在?
讓聰明人幹任何他們想幹的事情。
UNIX 的一個特色就是很是高的靈活性,Xwindow 也具備這種靈活性。這種靈活性體如今哪裏呢?
UNIX 的程序通常都有不少參數,無論你如今用的着用不着,總有人須要某些參數。它們的行爲不少均可以用配置文件來改變。好比 GNU bash, 一般缺省的命令行輸入方式是 Emacs 方式,可是隻要我編輯一個 .inputrc 文件,就能夠把它變成 vi 的輸入方式,並且我還能夠本身綁定鍵序列到某些操做。我能夠用 shopt 來設置它的不少特色,好比是否進行通配符擴展,是否能夠把一個變量看成一個目錄來cd,是否能夠自動糾正某些明顯的目錄名打字錯誤 ……
UNIX 程序設計的思想是提供給用戶「機制」,而不限制用戶制定「政策」。這是一個重要的尊重用戶的做法。
咱們再來看看 Xwindow。Xwindow 是一個出色的設計,它把顯示服務器和客戶程序分開。一個顯示上既能夠顯示本機上的程序,也能夠顯示別的機器上的 X 程序,而它們都遵照你的窗口管理器的統一指揮,它們之間能夠方便的傳送剪貼版數據,各類事件 …… 好比有時個人 XFree86 上會出現四個不一樣機器上的 XTerm,兩個不一樣機器上的 GVIM,……它們統一受本機上的 FVWM 指揮。
Xwindow 程序都具備不少不少命令行參數和 resource 參數。你能夠隨意的在命令行或者 .Xdefaults 文件設置全部的顏色,字體,尺寸……並且若是你用 xrdb 把.Xdefaults 導入到根窗口,那麼其它機器上沒有通過配置的一樣的程序,顯示到你的機器上的時候也會遵照一樣的外觀規定。
Xwindow 的窗口具備 Property, 也就是一些能夠本身定義的共享數據(原子)。正是由於這些 Property 的存在,使得 Xwindow 具備無比強大的生命力。X 的窗口管理器和其它客戶程序之間並無統一的協議,可是後來出現了 ICCCM(客戶程序間通訊規範),這個規範就是經過 property 定義的。如今又有人定義了一套「擴展的窗口協議(EWM Hints)」,使得 Xwindow 能夠具備某些 Windows 的特徵,好比一個工具條程序能夠告訴窗口管理器:「這個屏幕下面被我佔據了24個像素的空間,你最大化程序的時候不要越過這個界線。」
一個強大的窗口管理程序好比 FVWM,它收到這樣的提示時,能夠答應工具條程序的這個要求,也能夠不答應。一切選擇的權力在於誰?固然是用戶了!一切窗口乖乖聽話,FVWM 給予用戶最大的尊重。
你想一想,是否是有些 Windows 程序經常彈出一個窗口要你選擇 "Yes or No"?你不點擊它它就不下去。你覺不以爲你的程序在侵犯你的尊嚴?你是一我的,一個智慧的生物,怎能受到一個程序如此的待遇?
還有就是不少 Windows 程序把人當成傻瓜,而它是「智能程序」。好比,有一個程序就是喜歡把你的每句話第一個字母都變成大寫,我不說它是誰了,你遇到的時候就知道了。若是連「一句話開頭一個字母要大寫」這麼明顯的問題都須要程序幫你糾正的話,人腦還用來幹什麼?何況若是你故意想要不大寫的話,那就更麻煩了,我楞是沒有從它那一大堆菜單裏找到怎麼關閉這個愚蠢的選項。
只有符號才能徹底操縱計算機。
咱們來講說不少初學 Linux 的用戶。雖然他們在用 Linux,可是他們打心眼兒裏是以爲 Windows 的工做方式好,他們但願 Linux 有一天能「像Windows那樣」。你說:「我鼠標一點,我菜單一拉,……就能夠完成個人操做。」可是我要告訴你:「Linux 歷來沒有摹仿 Windows,未來也不會。Linux 從誕生之日起,它的工做方式就比 Windows 的先進。Linux 屬於能勇敢面對符號的人。只有符號才能徹底操縱計算機。」
看看優秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... 沒有一個不是用配置文件來設置選項的。爲何這些程序沒有方便的菜單能夠用來配置?難道它們的設計者就那麼低能,連個圖形配置界面也寫不出來?
固然不是。由於圖形界面配置方式的能力是極其有限的,而配置文件和程序語言的表達能力倒是無限的。用圖形界面配置這些程序的話,若是你想達到配置文件的效果,你須要成百上千的菜單,checkbox, radio button, ... 到時候你根本沒辦法找到你須要修改的地方了!而各個程序的配置文件的語法都有不少類似之處,通常就是一些命令,設置一些變量,參數,……一旦用會了一個,其它的也就容易理解了。若是你用慣了 awk, sed, Perl,你會以爲那纔是真正的自動化啊。
鼠標雖然是很好的工具,可是它的表達能力是有限的。你不可能光用鼠標就讓電腦徹底明白你的意思,它畢竟只有3個按鈕。看看個人MetaPost頁你就能體會到鼠標的這一弱點。因此咱們雖然很喜歡鼠標,可是卻不能徹底依賴它。
各個小程序的完美配合
這就是UNIX最重要的特色了,它就是UNIX設計的思想。讓每一個程序只具備一項專門的能力,而後讓它們合做。Xwindow也繼承了這種好傳統。
這恐怕就是Windows和其它操做系統望塵末及的地方了。UNIX 程序設計之統一,配合之完美,真使我難以置信!shell, grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它們是那麼的具備一致性!你一旦學會了 sed 的正則表達式,其它程序基本上都能用了。你一旦學會了 vi 和 VIM, 你會發現它的操做是那麼的有規律性,彷佛vi的設計者在幾十年前就已經設計好了 VIM 在今天的完美而統一的操做方式!並且vi的操做還體如今 Mutt, tin 等不少程序中。你甚至能夠把 bash 設置爲 vi 的輸入方式來輸入命令行,我就是這麼作的。一個程序能夠調用另一個程序來獲得數據,能夠把數據交給它處理後返回來,能夠在本身的窗口裏「嵌入」另一個程序。
在 Windows 和其它非 UNIX 操做系統中,這種合做是很是困難的。我曾經在 Windows 下使用 Perl來進行一些自動工做。可是 Windows 的文件操做,管道是如此的不穩定,程序之間基本不能合做。你別想在 Visual Studio 窗口裏面嵌入 UltraEdit 編輯器,你別想用一個 expect 腳原本控制 telnet 到水木清華BBS,這就是爲何helloooo 誕生在 Linux 而不是 Windows。我曾經試圖從 Windows + Exceed + SecureCRT ssh 登陸到 Sun 機器,而後經過 ssh 的隧道(X11 tunnel)把 X 程序傳到 Exceed 上運行,可是搞了兩天都沒有成功!而在 Linux 下這個事情根本就是不用怎麼配置的,OpenSSH 和 XFree86 原本就是完美結合,只要打開 ssh 的 "forward X11" 選項就什麼都搞定了。
Windows 的程序都是大而全,大而雜,全部的電子郵件程序都須要本身提供編輯器,本身發送和收取郵件,本身顯示郵件的附件。每個BBS程序都提供本身的Virtual Terminal, 本身的通信代碼。每個 IDE 都本身提供編輯器,編譯器,彙編器,調試器。人們爲了使用一種新的程序,須要適應全部這些它提供的界面,而不能使用本身喜歡的編輯器的鍵綁定,菜單組織……不能 DIY!
你要知道,最高級的電腦是定作的,本身想要什麼什麼CPU,什麼主板,多少內存,什麼硬盤,鍵盤,鼠標,顯示器都是本身選擇的。最高級的滑板,本身想要什麼牌子的版面,什麼牌子的沙,什麼橋,什麼輪子,什麼軸承,也都是本身選的。最高級的乒乓球拍,木板,膠皮,海綿,膠水都是能夠本身選擇…… 而用Windows 程序,你獲得的是大雜燴,就像你去買「品牌機」,只有那麼幾種配置,並且附帶不少你不須要的軟件和服務;就像你去買組裝好的滑板,你想要大一點的輪子和窄一點的板子,可是你沒有這種選擇餘地!Windows 程序就至關於最廉價,最次的滑板。可是它卻會花你更多的錢,由於一旦一個部件壞了,或者你不喜歡了,你不能另外找一個好的換掉它,你必需從新買全套配件!
而 UNIX 和 Xwindow 就是高檔的「組裝貨」。好比我用 Mutt 的時候,我能夠用 VIM 也能夠用 pico 來編輯郵件,我能夠用 ImageMagick 也能夠用 xv 來顯示附件裏的圖片,我能夠用 lynx 把 HTML 附件轉成文本嵌入窗口中,我也能夠把 HTML 附件交給 Mozilla 圖形顯示。我可讓 GnuPG 幫我把郵件進行數字簽名和加密,我也能夠用其它 PGP 程序。我想讓 Postfix 而不是 sendmail 幫我發出郵件,我想讓 fetchmail 幫我收郵件,轉發給 postfix,而後被我本身寫的Perl過濾器處理……這一切我均可以辦到!我能夠選擇我最喜歡的專門的程序來完成專門的工做,而後把它們結合在一塊兒,我也能夠分別獲得它們的好處。
結論
我寫這麼多的目的是什麼?我但願喜歡 Linux 的朋友,徹底清除微軟和 Windows 灌輸在你腦子裏的謬論,別再相信它們所謂的「新技術」,別再追趕 Windows,由於追趕 Windows =倒退。馬克思有一個思想很重要,「新生事物並不必定是在最近出現的。」 UNIX,Xwindow, TeX 雖然都比 Windows 先出現,可是它們纔是先進生產力的表明。咱們要清楚的認識到什麼纔是真正的現代化,什麼纔是真正的自動化。
勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt, lftp …… 這樣強大的程序,勇敢的面對符號。不要再埋怨「Linux 爲何不能像 Windows 那樣」,不要再浪費時間試用這樣那樣的程序,不要再忙着升級。須要改變的是你本身,而不是 Linux 和 Xwindow,Linux 如今就能夠成爲你的好朋友。你須要認識它,瞭解它,信任它,才能徹底的靠它來高效的工做,省出時間來處理世界上更加值得處理的事情。
附錄: 我用來處理平常事務的 Linux 程序
好了好了。我知道你發現本身應該轉向 Linux,你很後悔當初爲何中了微軟的邪。可是不要着急。由於這些東西原本只是工具,它們是用來完成你的主要任務的輔助而已。你之前選錯了工具,這沒關係。你仍是擁有你本身原來的專業技能,那纔是最重要的。工具的東西只有慢慢適應轉換,不能一蹴而就,不然你會感到很是沒意思,甚至放棄。
這裏給出一些推薦使用的能夠處理通常事情的程序。至於你的專業上要用到的科學和工程軟件好比 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 還有其它物理上的,化學上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。固然他們不少不是免費的,不要老是以爲什麼都應該免費,它們是通過不少人辛勤勞動的產物,是可靠的程序,他們物有所值。
下面列出我經常使用的一些 Linux 程序。一個列表裏可能有不少,那是爲了方便你來選擇,我列出了比較信得過的。但其實不少只有第一個是我真正在用的。我不喜歡試用程序。
* Shell: bash。我使用 bash 的 vi 命令行方式。
* 編輯器: VIM, Emacs
* 程序開發: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ...
* 論文,幻燈工具:LaTeX, ConTeXt
* 繪圖工具:MetaPost。這個語言太強了,以致於我只用它了。你不熟悉的話能夠用 dia 來畫一些流程圖之類的圖片。
* 圖像處理:ImageMagick。其中的 import 程序能夠屏幕抓圖,convert 程序能夠轉換圖像格式,display 能夠顯示圖片和簡單編輯(縮放,換質量,轉格式,簡單繪圖,簡單慮鏡)。一般我就這麼點須要。若是你要更強大的圖像工具能夠用 Gimp, 它幾乎和 Photoshop 差很少。
* 自動管理工具:make。我能夠用make來自動編譯程序,自動編譯文檔,自動更新插圖……全自動,並且不會重複勞動。
* 加密程序:GnuPG。個人 PGP 密鑰就是它搞出來的,我用了 2048 位加密。
* 打包,壓縮程序。什麼都有: tar, gzip, bzip2, zip, rar, ...
* 虛擬光驅程序。Linux 不須要虛擬光驅程序,直接 mount 就好了。
* ftp 服務器:proftpd, vsftpd
* WWW 服務器:apache。(我通常沒有開)
* ftp 客戶程序:lftp
* 自動下載工具:wget
* 虛擬終端:rxvt, xterm, gnome-terminal, mlterm, ...
* X server: XFree86
* 窗口管理器:FVWM。編譯加入了 libstroke。
* 中文輸入:XSIM。被我修改過以適應 FVWM 的須要。另外推薦你還能夠用 SCIM。
* email 處理:Mutt + Postfix + fetchmail
* 看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和 netscape 插件。
* 看CAJ文檔。我歷來不看CAJ之類的文檔,若是找不到PDF或PS,直接去圖書館借最好。
* 看網頁:Mozilla, Phoenix, lynx。Mozilla-Xft 的顯示效果比 IE 好不少。
* 英漢字典:IBM智能詞典,星際譯王。
* 編輯網頁:我用 VIM 直接寫 HTML。你若是想要圖形方式的能夠用其它的好比 screem, BlueFish。
* 登陸其它 UNIX, Linux 機器:openSSH, telnet。 openSSH 還能夠把其它機器的 X 程序經過 ssh 加密的隧道傳到我機器上顯示。
* 上BBS:rxvt(或任何一種終端) + telnet + chatbot(helloooo 機器人的程序)
* QQ, ICQ: 我沒有 QQ 或 ICQ。不過你能夠用 Gaim, 它同時支持 QQ, ICQ 和不少其它的即時通訊方式。ICQ 用戶也能夠用 Licq。
* 放錄像:MPlayer, RealPlayer。MPlayer 太好了,直接就能夠放 VCD, DVD, divx, wma, wmv ... 用 Windows 的同窗都很羨慕我,說 Windows 要放這個須要大堆插件。rm 最好仍是用 realplayer 放,它也是免費的。
* 放音樂: xmms(mp3,ogg均可以), mpg321(放mp3), ogg123(放ogg).
* 看 Word 文檔。請 Word 用戶把文檔所有轉爲 PDF 或 PS 再給我,文檔裏沒有特殊的格式就用文本文件,要不我就不看 :P
* 其它程序:還有不少我須要用而你不必定用得着的。好比,Doctor Scheme, Scheme48, Scsh, ...這些程序只有 Doctor Scheme 有Windows版本。還有不少幕後工做可是你通常不察覺的:xinetd, telnetd, sshd, crond, atd, lpd, ... 他們都比 Windows 的對應者強的多。