5 Mouse vs. Keyboard

怪怪,怎麼談到這個問題呢?由於 Un*x 系統基本上是一群工具的結合,這些工具組合起來威力驚人,但同時也會嚇壞不少初學者(因為永遠搞不清楚有多少指令可用,也永遠搞不清楚要用到的指令有多少參數)。舉個例子,第 18 節會提到的 ls 指令,主要是來列出目錄內的檔案的,其他相關的操作有 rmfindchmod……等等,可以刪除、找尋檔案及改變檔案屬性,但同時也有相對的圖形化(GUI)的檔案管理程式(file manager),就像您在 Windows 中用的「檔案總管」(explorer)一樣。那到底要用哪一種工具呢?

GUI 的 file manager 表面上看是比較方便,但效率卻不怎麼樣,甚至會佔不少記憶體,另外有一個很重大的缺點是,沒辨法很方便的放進您所寫的 script6 中。其次,沒人敢擔保自己的系統不出毛病,出了毛病恐怕就只能用軟碟來開機,這時,可沒有 GUI 工具給您用囉!另外,這些指令的參數相當多,可以做很精細的微調工作,達到您所想要的效果,這是 GUI 不容易完整做到的,縱使做到了,大概選單會比指令的參數更複雜。

其實 GUI 的檔案管理程式只是整合了一些常用的系統上工具方便使用者使用而已。因此,只要熟悉系統上有什麼工具可以使用,就可以不必一次把整批的工具通通拿出來,這在 Un*x 系統的使用哲學裡相當重要。Un*x 系統的使用哲學就是,一大堆的小工具就在那裡,如何達成目的,就看使用者如何有效率的去組合這些工具,這是一種思考式、智慧型的作業系統。這裡可不是在貶低 GUI 的工具,而是說明看場合來選擇適合的工具將會增加您的工作效率。當然,有時候您是別無選擇啦!:)

Un*x 是多人多工的作業系統,縱使是家裡個人使用,還是一個多人多工的環境,因此基本上,您本人就是一位系統管理者,這和您以前使用的 Windows, OS/2 系統是不一樣的,因此一些系統管理者需要做的事情,您多少都得懂一點才能善用 GNU/Linux 系統。尤其目前的 Linux + XFree86 尚無法做到全面 GUI 的情形下,您蹲些馬步是必要的,縱使以後全面 GUI 了,還是建議您多蹲些馬步,常常會有意想不到的妙用。

這裡所指的馬步,就是指第 18 節會談到的命令列(command line)指令。老手一般喜歡使用 command line 的東東,如果您顧及效率,想對系統結構多些瞭解,而且以後也想寫個簡單的 script 程式玩玩的話,請多多留意 /sbin, /usr/sbin, /bin, /usr/bin 這些目錄裡頭有些什麼工具可用(可能會讓您玩好久喔!)。命令列的指令,在 X 下也很常用到,可以開個模擬終端機。例如 rxvt/xterm 來使用。甚至可以將這些命令列指令,自行組合成 GUI 的形式來使用,請參考第 17 節所舉的簡單例子 bashgui,及圖 3

這裡另舉一些簡單實用的例子:假設一個目錄裡頭有上百個 *.html 檔,現在要將所有 *.html 檔中的 study-area 這個字串通通換成 Study-Area。以我使用的 FileRunner 我必須把所有的 *.html 檔用滑鼠去點選後,再一個一個用編輯器去改,但如果我使用 perl,那一行就解決了:

perl -pi -e 's/study-area/Study-Area/g' *.html
再來一個,要把 fielname 這個檔案中,由含有 DESCRIPTION 這個字串的那一行開始至 LIST 這一行為止,顯示出其中段落的內容(請注意!Un*x 系統是分大小寫的):

sed '/DESCRIPTION/,/LIST/p' filename
意猶未盡,把 xcin/libtabe 中的 tsi.src 取出詞條(就是以空白為間隔,第一個欄位的內容,而且需要 libtabe 的原始程式碼):

awk '{print $1}' tsi.src
深入一點點的(意思也通常會是實用一點點),把 xcin 中的 tsi.src 取出四字詞(不含)以上的詞語(請注意,四個中文字是八個字元):

awk 'length($1) > 8' tsi.src
以上的例子,可能會需要經過重導導入其他的檔案,或經由過濾器使畫面在翻頁時停住,請參考第 18 節,locate 項,及 >重導 項。所以說,我有沒在用 GUI?有呀!熟悉的 GUI 有時也是很方便。有沒有用 CUI (Console UI),也有呀!他能增進我的工作效率。我認為能視情形綜合所有工具完成所要達成的任務,這才是智慧型的使用者,意識型態作祟而堅持用哪一種的界面,吃虧的還是自己。

Compiled by Edward G.J. Lee (2004-02-14)