FreeBSD Tips and Tricks for 2005原文出處:http://www.onlamp.com/pub/a/bsd/2005/02/17/FreeBSD_Basics.html原文作者:Dru Lavigne 中文翻譯:kjhsieh [@] hotmail [dot] com
by Dru Lavigne
02/17/2005
Beastie and Beerware至少每年一次,我都會搜遍所有在 FreeBSD 系統裡的檔案,看看我是否有遺漏一些新文件、scripts、或 manpages(手冊)。我從 /usr/share/examples 開始搜起,第一個印入我眼簾的是一個叫 BSD_daemon 的子目錄:
在 README 中,有說明這目錄中的每一個檔案的用途,README 檔是由 Poul-Henning Kamp 撰寫,且由 Beerware license 保護著(這在 README 中也有說明) README 也有介紹使用 fig2dev 這工具來生成 GIF 和 PNG 的指令,這工具不在我的系統裡面,而經由 Google 搜尋的資料得知 fig2dev 是 transfig 這套件中的一部分。我馬上安裝了它,且執行那產生圖像的指令:
所產生的圖像是隻很棒的 Beastie (Beastie 是 BSD Daemon 的名字,俗稱小惡魔)。如果你也想要嘗試生成圖像,請 man fig2dev,推薦值得一讀。
Adding Interaction to Scripts (加入互動到 scripts 裡頭)接著,我查看了 dialog 這子目錄:
在今年稍早前我曾嘗試過 dialog,它讓你可以增加一些互動的選單到你的 shell scripts 中。在那時,我在網路上搜查一些可作用的範例,但卻令我失望了。我只找到少數幾個建立 menubox 的示範,而這只是 dialog's box 選項的其中之一而已。在 man dialog 記載著每一個選項的完整說明,當我在學新東西的時候,我發覺得如果有個可以正常作用的範例那將可幫助我理解它。 為了讓你方便,底下是一些每一種型態的 dialog box 的實例。這是用 Bourne shell scripts 所寫的,所以你可以很容易的讀每一個 script,且用它當個樣板來建立你自己的 interactive scripts。要測試每一個 scripts 的話,首先要把它們設成可執行檔:
在此注意一下,我在 chmod 指令中有用萬用字元來配合抓取指定的檔案,我不想要把 README 檔設定可執行(+x),而我想要把這目錄中除了 README 以外的檔案設成可執行的,而這些其餘的檔案的檔名都是英文小寫字母,所以 [a-z]* 表示檔名為英文小寫的檔案皆為符合的條件。 另外,因為這些 scripts 是在 /usr/share/examples ,而它不是預設的路徑,你必須使用完整的路徑來執行每一個 script,或者你可以直接 cd 切換到該目錄底下,然後在每個 script 的名字前面輸入 ./ ,像這樣:
In Case of Emergency (萬一有突發狀況發生)如果你已經越過初學的階段(指得是你不再像以前一樣,隔天就重灌電腦,從頭來過),那麼出錯的情形應該很常發少在你身上。然而,能熟悉各種緊急應便的措施總是好的,以免問題來的時候手忙腳亂的。 如果你正使用 FreeBSD 5.2 或更新的版本,先查看 man rescue,接著再下指令 ls /rescue 觀察一下,可喜的是裡面有許多安全急救工具,可在例如發生無法存取 /bin 或 /sbin 此種少見情況時使用,在它的 manpage 裡有提供在這種急緊狀況時該如何進行下去的詳細步驟和指令,建議你把它列印下來並保存在你的離線瀏覽的文件中。 你是否曾搞砸了設定檔,或者更糟的不小心把設定檔從系統中刪除了?如果那檔案是在 /etc 的話,那還有救,你的系統中該還會有份原始檔案在 /usr/share/examples/etc/。 最後,你絕不會想要在 /dev 路徑下用到 rm 指令。你曾經是否有注意到在 /dev 這目錄很長的列表中有兩個額外的欄位,且這欄位在系統中的其它地方是看不到的?例如,比較一下底下兩個列表:
該欄位取代原先印出檔案的大小(in bytes),而在這很長的裝置(device) 列表中印出一個較小另個較大的數字,這兩個數字所代表的意思是裝置(device)的型態,以便讓 kernel 知道該如何和這裝置(device)溝通,表示說如果你不小心把 /dev/fd0 刪除的話,僅用 touch /dev/fd0 這指令是無法修復的,而是要用 mknod 指令,其語法為:
其中的
Reading Material (閱讀文物)在過去的一年中,在 FreeBSD articles 所增加的大量文章讓我感到驚喜,大部分的文章可以在 /usr/share/doc/en/articles 找到。 在 BSD Hacks 一書中的 Hack #89,有示範如何把新發佈的文章增添至你的離線文件中,其方法為確定這行有在你的 CVS supfile 檔中:
因為這原始碼是 SGML,你需要安裝這個 port 來把它轉換成 HTML:
我寫了個 script 來簡化步驟。以下是轉化文件 script 中的一部分:
有一些文章挺適合剛接觸 FreeBSD 的新手,即使你不是新手,你也可以把這些文章推薦給那些剛接觸 FreeBSD 的朋友們,例如在 /usr/share/doc/en/articles 裡的 new-users 和 freebsd-questions。那些感到困惑或想要了解什麼是 FreeBSD 的人,請查看 explaining-bsd。如果你實在很想為 FreeBSD project 付出點心力,但卻因為你無法寫程式碼而感到你不能貢獻的人,請查看 contributing。 你是否曾想要了解 BSDs 如何併入至 Unix 家族之樹狀表呢?請查看 /usr/share/misc/bsd-family-tree。假如你想要創作 manpage 的話,你可以在 /usr/share/misc 找個叫 man.template 和 mdoc.template 的樣板,或者更好的方法 /usr/share/examples/mdoc 有包含三種 well-commented sample manpages 的格式。
A GUI rc.conf每當我有空時,我喜歡趁著在嘗試安裝那有趣的 sounding ports 到我的測試系統的期間, 花點時間仔細研究 ports collection。我有嘗試 thefish 了一陣子,我由安裝此套件開始:
然後,當我執行 thefish 時,它卻執行 ncurses 的版本。你該有印象當你輸入 /stand/sysinstall 時的那個藍色畫面,就是在你的滑鼠無法作用時,你得用方向鍵和 tab 來操作的畫面?那種型態的畫面是用 ncurses library 在 console 下提供 guasi-GUI。這對沒有安裝 X 的系統而言是很棒的。然而,如果你正使用 GUI 且想要個更好看的選單,你可改用 widget set 來調整你的視窗環境。 我這麼說是什麼意思?一旦我移除 console-only binary of thefish,我用此來安裝該 port:
它秀出這個選單:
GTK+ 和 QT 兩者皆是可選的 widget sets,widget sets 是用來控制視窗的介面;例如,要把最小和最大化的控制鈕擺在哪以及它們外觀如何。如果你用 Gnome desktop,你正用的是 GTK+ widget set;如果你用 KDE,那麼你用的是 QT。我較喜歡 QT 視窗的介面,所以我選擇用 QT 來安裝 thefish。如果你仔細看 thefish 網站上的 screenshots,你會發現在 QT 選單上的按鈕和 GTK+ 版的按鈕是不一樣的。 一旦你裝好 thefish,你即擁有一個容易上手的介面,它可以用來改變 /etc/rc.conf 的參數並且每個參數都附有簡短描述,如果你還有另外安裝含有 rc.conf knobs 的程式,你也可以用 thefish 來增加它的參數。
Changing Your Mind (改變你的主意)你是否曾在安裝 port 時看過它的選單選項而改變你的主意呢?例如,在安裝 QT 版的 thefish 以後,我有股強烈的慾望想要移除 QT 並安裝 GTK+ 版的 thefish。然後,當我下達 make 指令,它沒有秀出那有選項的選單,反而有行提示說我的設定檔已經儲存,而接著繼續安裝原先指定的 QT 版。 在我翻查了一下過後,我找到:
我移除了那個檔案,且重新 make 一次,嘿嘿,就是它!我再次見到了那有選項的選單,我可以從那兒選擇安裝 GTK 版。在你自己的系統中下指令
RSS我有一份我每天都會訪問的網站的名單像是 news, weather, articles, and blogs。我早已聽說過 RSS,但直到現在我才有空去嘗試各家的 RSS clients,我從 ports collection 搜到近一打左右的 RSS clients,每一個我試過的 client 我都會想要有吸引人且容易設定的 GUI 介面。從我的書中可明顯的知道我最後所選擇的是 /usr/ports/www/akregator。 一些其它的 RSS clients 已附有一些內建的名單,儘管它很方面挑出一些常見的網站,例如 Slashdot 和 FreeBSDDiary,它這名單中的 URLs 有許多已過時了,所以我仍然需要到該網站找尋正確的 RSS URL。 在眾多的 clients 當中,akregator 是最容易操作且容易新增一個 feed,大部分的 clients 不會檢驗 URL 直到你嘗試下載一個 feed 的時候;如果輸入錯誤,或你沒有具體的指出完整的路徑給 RSS feed 的話,這個步驟即會失敗。 用 akregator 的話,我可以只輸入 slashdot.org 然後它會連接到 Slashdot 並找出其 feed,並儲存正確的 URL,就像 http://slashdot.org/index.rss,這個功能在我試過的所有網站中都適用,它實在極為簡單實用。 另外一點,我也有用 Firefox,它也支援 RSS feeds 如 live bookmarks,這連結有幾張 screenshots 且有解釋 RSS 的基本概念以及如何使用 live bookmarks,它也有連結到 del.icio.us 這網站你大概不會想逛,除非你真的閒到沒事可做。儘管 live bookmarks 整合至瀏覽器中是件很方便的事,但我還是較喜愛 akregator 的介面。 現在我成為 RSS 愛用者之一,如果生活中沒有了它,我不知道該如何活下去。只要有新的 日誌/文章 發佈、氣象改變(嘿,我並不時常往窗外看)亦或是 有新增或修改 port,我都可以隨時接到通知。 例如,我在 /usr/ports/sysutils/pkg_rmleaves 被核准的八分鐘後,我立即從 Freshports feed 得知這個消息,我曾使用過 /usr/ports/sysutils/pkg_cutleaves 來清除用不到的 ports,我被它的實用所迷住了,因為這個 port 才剛被核准,為了要安裝此 port,我即執行 cvsup 來抓取 sources。當我執行 pkg_rmleaves 時,它秀出一個核對清單的 dialog 選單,從這兒我可以很容易地挑選出哪些 ports 要移除的,這個 port 帶來了更方便的方法來管理那些不再使用的 ports。
Conclusion (結論)我希望你也能有機會來玩弄並更了解你的 FreeBSD 系統。你是否曾經歷任何有趣的事,且它未曾被提出來討論過呢?如果有的話,請再此留下評論並述說你的心得,好讓其它人能從中受益。 Dru Lavigne 是在 Ottawa(渥太華,加拿大首都) 的 Marketbridge Technologies 裡擔任講師,另外也是 Open Protocol Resource 的維護者。
Read more FreeBSD Basics columns. Return to the BSD DevCenter |