台大計算機中心網路推廣協會 網路課程講義 課程名稱:使用網路工具(一) 上課日期:82年11月3日 講師:蕭永慶 ─────────────────────────── <<<版權聲明>>> 本著作物版權屬於國立台灣大學電子計算機中心。為了推廣網路的使用,除了下列的限 制之外,任何人均可以任何型式複製或修改這份講義。 一、不得有任何的商業行為 二、複製或修改這份講義時,必須將本版權聲明列入,並註明之 三、國立台灣大學電子計算機中心不對修改過後的內容負任何的責任 ─────────────────────────── □電子郵件(E-mail) 一、郵件地址 寄信一定要有地址,如羅斯福路四段一號,電子郵件也不例外。電子郵件位址 的名字有以下幾點特性: 1. 能夠橫跨各種不同的網路 網路的種類很多,如Novell的Netware ,大部分由IBM 主機構成的BITNET,由 UNIX構成的UUCP網路... ,甚至BBS的FidoNet亦是一種形式的網路。網路位址 必須能夠涵括這些網路。 2. 地址必須方便好用 網路命名最差的就是FidoNet ,因為它用數字編碼。好的名字要一看就知道意 義。另外一種考慮是傳送郵件的路徑,是由使用者自行決定,還是由系統決定 幫使用者決定。 在UNIX下電子郵件的位址有下列兩種常用的方式: 1. 使用者決定傳送郵件的路徑: 例:uunet!mwc!support 這是UUCP上的方式。此方式的特色為使用者必須自行決定自己的mail要如何傳 送;傳送時要經由哪些機器。此位址的意思為寄給mwc這台機器的叫做support 的使用者。 2. 使用者只要指定收信人的地址: 例:president@whitehouse.bitnet syc@cc.ntu.edu.tw listserv@twnmoe10.edu.tw 這是新的趨勢。使用者不需要知道mail要如何傳送。基本的格式為 username@address username與address 就像是你平常寄信的時候要寫收信人姓名與地址一般。 username是收信人的帳號,而address 是收信人所使用的機器,在Internet上 則是機器的domain name 。比如你在計中所申請的工作站帳號是b2101001,則 你的E-mail地址是 b2101001@cc.ntu.edu.tw 而cc.ntu.edu.tw正是你向計中所申請的工作站的domain name。 二、E-mail地址的特色 E-mail的位址與Internet的位址看起來很像,其中大有玄機。細心的人一定會 注意到向計中申請的工作站有十幾台怎麼E-mail的地址只有一個。其實E-mail地址 與Internet無關,只是大部分的情況是重疊而已。一群工作站有一個代表位址可以 方便使用,也不需要到每個機器讀信。另外一個現象是Bitnet的位址。Bitnet上有 個listserver listserv@uga.bitnet 寄個help到此位址試試看: echo help | mail listserv@uga.bitnet 不久就會有回音。但是telnet試試看 telnet uga.bitnet 就是接不過去。原因就是此機器在bitnet上,Bitnet與Internet只能E-mail而已。 三、E-mail的其它觀念 1. E-mail中常見的術語 A. BSD ── 柏克萊大學的UNIX (Berkeley Software Distribution) B. PD ── Public Domain C. UA ── User Agent,Mail的使用者界面 D. MTA ── Mail Transport Agent,郵差之意 E. 別名(alias), Phone Book Email的位址太長太難記,alias 及Phone Book分別是elm及pine的術語, 是簡稱的意思。(elm和pine是處理信件的軟體)。 F. Bounced mail,Mail_Daemon 有時候Email地址打錯或是其他的原因Email送不出去,此時系統負責送信 的程式會用Mail_Daemon的名義把信退回,退回的信叫Bounced mail。 G. Forwarding mail 把這封信傳給別人 H. Replying 回信 I. Carbon Copy 副本 2. E-mail儲存信件的方式 E-mail在儲存信件時,會將一封封的信放在同一個地方,這個地方其實就是信 箱 (Mail Folder/Mail Box) ,有些軟體可以設定許多信箱,以及使用那一個 信箱。 3. E-mail信件格式 當你收到一封信時,你會看到這封信的長像就長這個樣子: ┌───┬─────────────┐ │header│From: (寄信人) │ │ │To: (收信人) │ │ │... │ │ │Subject: (標題) │ ├───┼─────────────┤ │Body │信件內容 │ │ │ │ │ │ │ │ │ │ │ ├─────────────┤ │ │簽名(可有可無) │ └───┴─────────────┘ 四、處理信件的軟體 1. /bin/mail及/usr/ucb/Mail (Berkeley mail): /bin/mail 是最原始的讀信程式,只能循序讀取,目前幾乎只有系統本身會用 到。Berkeley Mail是Berkeley對/bin/mail的加強,包括了允許處理個別信件 的能力。我只介紹Berkeley mail。要使用Berkeley mail時,在UNIX下打 mailx 或 Mail 或 mail (有時候是Berkeley Mail) 以下提到Berkeley mail 時則以Mail稱,接下來則講解如何寄信及讀信。 A. 寄信 如果你要在UNIX用Mail下寄信,可以打: Mail 其中是收信人的電子郵件地址。例如 Mail u1234567@cc.cis.nctu.edu.tw Mail沒有附編輯器,所有的編輯功能都是終端機提供的。換句話說,每一 行按完 之後就不能修改了。所幸Mail提供了Escape的功能。如同 vi一樣,Escape的意思就是跳出正常的輸入模式,對Mail下命令。Escape 命令必須在每一行開頭才有效。Escape命令以'~' 開頭,而下方列出一些 Escape命令: ~p print ~s subject ~h print headers ~c Carbon Copy ~? help ~v visual editor 打完信之後,在第一行開頭打ctrl-D 或句點 '.'就可以結束輸入把 信送出去了。 B. 讀信 如果你已經收到別人送給你的信,而想要讀它時(UNIX會告訴你你的信箱 內是否有信),你可以打: Mail 這個時候你已經進入了Mail。而Mail的提示號是'&' 。下方是在Mail中的 一些命令: # read x quit without modifying q quit and modify s save as d delete h help (same as ?) 2. elm elm也是一個寄信�讀信的程式,但是比Mail方便好用。在UNIX中進elm有 下列幾種方法: A. 直接在命令行打elm,讀系統的信箱 B. elm -f mailbox,讀自己的信箱mailbox C. elm -f =received,讀在$HOME/Mail/received這個檔案 進入elm後看到的是Index Menu。elm會把收到的信條列出來。下方有命令 的提示,其意義與Mail相同。新手所需的功能都在提示內。 如果你的目錄下有一個叫.signature 的檔案,elm會自動的讀進來,作為 你的簽名。 比較特別的是elm有一個 O (Option)命令,可以調整設定,如信件排列的 方式,是以人名排列或是收信的日期,也可以設定自己最拿手的編輯器。 3. pine pine是一個整合環境,其設計基本理念是使用者用機器的目的僅是要使用 E-mail,所以附了一個編輯器,還有很多其他整合功能。唯一要注意的是請勿 使用Pine的Lock Screen 功能,因為此功能不能正常工作。要使用Pine則打 pine pine又比 elm更為方便好用,使用者只要一進入就知道如何使用,所以詳細的 使用這裡則省略。 五、讀寫中文信 在國內寄中文信沒有問題。寄往國外就不敢保證沒問題,最好用下面方法加碼 ,以免國外轉信站不認識中文把中文截掉。 uuencode filename filename | mail username@address uuencode的第一個參數是要加碼的檔案,也就是你信件的內容。第二個參數是希望 收信人解開後檔案叫什麼名字。解開檔案用uudecode,使用方法如下 uudecode < save_file 此方法也可以用來寄二進位檔,如PC的可執行檔。 六、討論群 ── Mailing List 一群有相同話題的人組成的Discussion Group。比如說有些人對寵物、音樂或 是數學等有興趣,Mailing List就是他們交換心得的地方。首先,有個系統管理者 先安裝個特別的軟體,然後大家就可以把信寄到那台機器去,由那台機器轉送到訂 閱此Mailing List的使用者。 加入Mailing List的方法沒有標準,最好先得到help。通常寄一封Mail Body 只有一行'help'的信,甚至不需要有Mail Body,到Mailing List的address就可以 了。 但是Mailing List有兩種,一種是同一個address 負責處理普通的信件以及申 請加入的請求,另一種Mailing List是有個address 負責處理信件,另一個位址負 責處理加入的請求。寄help時要先研究清楚,否則寄錯位址會被....K。 比如說教育部有個Mailing List ── listserv@twnmoe10.edu.tw裡面有各式 各樣的討論群。如果你想要有教育部Mailing List的更多訊息,可在UNIX中打 echo help | mail listserv@twnmoe10.edu.tw可得到求助訊息。 第二種形式的Mailing List 有兩個address,如 physics@aaa.bbb.ccc.ddd 及 physics-request@aaa.bbb.ccc.ddd 如果要加入這種Mailing List必須把命令寄至physics-request 去,包括了help。 加入之後擬就可以把你的高見寄往physics@... 去了。大家可以想像如果不小心寄 個help到physics@... 去,讓大家都看到的話不僅會很丟臉,而且如果大家都很熱 心幫忙的話,你就要小心收到很多... 回不完的help了。 □網路新聞(USENET NEWS) 一、News的歷史 USENET在1979年末,UNIX V7公佈、引進UUCP後不久誕生。由Duke University 兩位研究生Tom Truscott 及Jim Ellis提出構想、用來在UNIX間交換訊息。由南加 大的Steve Bellovin設計。Steve Daniel用C程式語言重新改寫,經Tom Truscott 修改後為第一個正式版本(RELEASE A)。 1981年Berkeley的研究生Mark Horton及高中生Matt Glickman重新改寫,以增 加功能,並且處理日益增加的News流量。此版本為"B" ── B News。 在Center for Seismic Studies的Rick Adams接替維護B News的工作。在1986 年年末,B News 2.11 公佈,奠定了目前USENET的規模。現在B News已經退休了, 為C News或INN所取代。 1986年三月,公佈了一個新的套裝程式,使用一種新的傳輸News的協定 Network News Transfer Protocol (NNTP) 。此協定使用TCP/IP的方法交換資料, 而非傳統使用UUCP的方法。 1987年秋,C News公佈。1992年八月二十InterNetNews公佈 (INN)。 二、讀News應有的知識 1. 文章(article)與group 基本上News是由一篇篇的文章(article) 所組成,而同樣性質的文章則會聚在 同一個地方,這是group 的基本觀念。如alt.guitar.tab這個group 中就是專 門討論有關吉他方面及樂譜的地方。現在News中有6000個以上的Group ,而下 面會談到一些大家常讀的News group。 2. News中的慣用語 在News中有一些大家慣用的常用語,第一次看到時可能不知道是什麼,但是看 久了就會習慣。以下介紹News中常見的慣用語 BTW - By The Way IMHO - In My Humble Opinion RTFM - Read The F* Manual FYI - For Your Information RFD - Request For Discussion CFV - Call For Vote FAQ - Frequently Asked Questions aka - Also Know As :-) - smiling :) - smiling :-( - sad :~( - cry 2 - to, too u - you r - are c - see 三、tin的使用 1. tin中的階層 News的基本單位是文章(Article),而tin 把news分成好幾個階層 ── groups,threads,articles。在不同的畫面上,tin的命令都略有不同。tin 按 h就可以得到help,但是在每個階層下得到的Help也不一樣。 進tin後的第一個畫面就是group畫面,列舉了訂閱了的News group。要到 某個Group 中閱讀,只要移動上下鍵,到你所要的Group ,再按Enter 就可以 了。如果要訂閱新的news group必須先用y(yank)命令取得一份最新的group 清單,要訂閱就按s,已經訂閱的group 可以用u停止訂閱。 按Enter後進入的畫面就是threads與articles的畫面。如果一篇文章沒有 人覆議(Follow-up)的話,tin就直接列出來,如果有人覆議的話,tin 就會印 出thread的主題。 要閱讀文章的話直接按Enter即可,要回到上一層要按q 要把thread的article 列出來的話要用l命令,如果沒有按l,直接按 的話就會循序的把整個thread讀完。 tin會把讀過的文章做記號,下次進tin時,讀過的就不會顯示出來了。如 果一篇文章看標題就不想看,那可以用K命令直接把此文章做記號。z可以把 讀過的文章標成沒有讀過。此外,tin有一個命令u可以強制tin把已經讀過的 印出來。 讀article時可用s命令把文章存起來。基本上tin會把文章存在 $HOME/News這個目錄下。 如同elm一樣,tin亦有一個option命令: o,可以改變tin 的預設狀態, 如預設的編輯器等。 2. 發表自己的文章 首先建議大家對陌生的group 先觀察一陣子再考慮post,以免成為不受歡 迎的人。要發表意見的方法有以下幾種命令: w:寫(write)一篇文章。此時你必須告訴tin你的標題。之後就進入 編輯器了。在編輯器的前幾行tin會預先寫了以下幾行: Subject: 就是剛才告訴tin的標題。 Group: 此篇文章要寫到哪個group去。如果要同時 寫在好幾個group也可以,用逗號分開就可 以了。 Distribution: 此文章的擴散範圍,可以是local,tw,或world 沒寫就是world 有一點要注意的是header與本文之間必須要有一個空行(tin啟動 編輯器時就偷偷留了一個,大家不要自找麻煩把他刪了)。 f:follow up a thread。 r:用E-mail回信給文章的原作者。 3. 刪除自己所發表的文章 在News內只能刪自己寫的文章。要刪除時請按D,而且要在tin 的最低一 層(也就是看到自己的文章本文時)才能刪除。 4. 簽名 和elm 一樣,tin也接受.signature檔。如果你不希望Elm 有signature的 話,tin接受.Sig為signature檔。但是不要同時存在這兩個檔案,否則文章內 會有兩個簽名。 5. 其它觀念 因為系統儲存資訊的容量不是無限大,所以會定時將過期的文章刪除。所 以你可能在幾天前看到的某篇文章,幾天後則不見了。 有些話題很討厭,有些人怎麼看都不順眼,而不想看到這些文章,此時你 可以設定那些話題、或是那個人的文章你不想看。tin 還有其它許多功能,這 裡無法一一介紹。如果對這些有興趣,可以參加進階課程<活用網路工具>。 四、Group簡介 世界上常見的News group以下列幾個字開頭 comp, news, sci, misc, soc, talk, rec, gnu, alt comp -> computer rec -> recreation sci -> science alt -> alternate 例: comp.os.unix.help news.answers sci.math misc.test news.announce 而台灣常見的News group如下 tw, ntu, nthu, nctu... 例: tw.comp.unix tw.comp.msdos ntu.talk ntu.announce 而有些group 是有管制的,一般人不能夠隨便亂寫東西。要寫東西一定要經過管制 人 (moderater) "准予張貼" ── 要把你的文章用E-mail寄給moderater ,由 moderater 幫你公佈。大部分以announce結尾的group 皆是受管制的。 □Gopher 一、Gopher簡介 查查字典,Gopher是一種北美的地鼠。除此之外,在網路上,Gopher是指一種一種 靜態的資料庫(電子圖書館)。使用者可以使用Gopher取得網路上的資訊,比如藝 文活動的時間表等。基本上,Gopher是一個資料庫系統,一般的使用者不能像News 一樣可以在其上發表文章。 二、使用Gopher 使用Gopher時,必須先連接上有Gopher資料庫的機器(稱為Gopher server) ,而 後才使用其中的資料庫。一但連接上Gopher server 之後,其使用很簡單,如按上 下鍵選擇你要看的項目,右鍵是進入,左鍵是退出,這些都會列在螢幕下方。以下 是連接到Gopher server 的方法: 1. 利用telnet 我們可以telnet到Gopher server 。進入之後,以gopher這個帳號login ,之 後會問你一大堆問題,問完之後就可以使用。 2. 利用gopher程式 另一種方法是用gopher這個程式連接。通常系統會預設兩個gopher host ,直 接打gopher就會隨機接到其中一個。另外一個方式是把gopher這個程式當 telnet用,如下 gopher gopher.ccu.edu.tw gopher gopher.csie.nctu.edu.tw 利用這個方式使用Gopher比較好,因為這樣子節省網路資源,系統整合也比較 好,特別是在X Windows下可以有圖片。 三、國內常見的Gopher server的domain name 中正大學 gopher.ccu.edu.tw 中山大學 gopher.nsysu.edu.tw 交通大學資工系 gopher.csie.nctu.edu.tw □hytelnet hytelnet為telnet的應用。有很多主機提供一些公用帳號,如圖書館查詢等。一般人很 難記住所有的資料,hytelnet就因而誕生,其功用如同電話號碼簿一般。國內只有一個 Hytelnet server: NCTUCCCA.edu.tw。使用方法為 telnet NCTUCCCA.edu.tw 然後用hytelnet這個帳號login。 附錄A UNIX的使用 一、Shell 在UNIX中,當使用者完成login 的動作後,需有一個與使用者交談及接受命令 的程式,這即是Shell 。而常見的Shell 有sh, csh, ksh, tcsh, bash, zsh等。 以下是使用這些Shell 的基本觀念及方法。 A. 提示號 在Shell 中每下一行命令之前,會在前方出現一些訊息,告訴你你可以下命令 了。這就是提示號的作用。你可以設計自己的提示號,而在316 的工作站提示 號的預設值如下 ccthsXX% 而XX表示你使用那一部機器。 B. 命令的組成 你要電腦幫你做事時,就必須下命令給電腦。UNIX Shell的基命令格式如下 command arg1 arg2 arg3 ... command 是你所下的命令,argX表示這個命令所需要的參數。 C. Shell的行編輯 不同的Shell 其行編輯鍵不同,但一些基本的鍵所有的Shell 均相同。以下是 Shell 的行編輯鍵 ── 將整行刪除 or or ── 將前一個字刪除 二、檔案系統(file system) 1. 檔案的概念 在UNIX中免不了要處理一些文件,而這些一篇篇的文件我們就叫做檔案。就像 是一篇文章有它的標題一般,一份檔案我們也可以替它取名字,不同的檔案名 字必然不同。 2. 目錄的概念 如果所有檔案都放在一起,一旦檔案一多,無論查看、管理起來都很麻煩。這 個時候就有目錄的概念產生:我們可以把相同性質的檔案放在同一個目錄下。 目錄和檔案一樣也有自己的名字。而一個目錄下面除了可以放檔案之外,還可 以存放目錄,稱為這個目錄的子目錄。這個子目錄之下還可以有它自己的子目 錄,而形成一個樹狀目錄結構。其中最上層的目錄我們稱為根目錄,而系統內 的所有目錄都是根目錄的子孫目錄。下圖是一個目錄結構的範例: ┌ Joe ..... │ ┌ Mail ┬ joe │ │ ├ Mary ┌─ users ┼ Tom ┤ └ Eric │ │ └ dead.letter │ └ Mary ┬ Mail ..... │ └ .... / ┼─ bin ┬ ls │ ├ mail │ ├ rm │ └ cp └─ tmp 3. 工作目錄 要處理檔案之前,都會有一個參考目錄,這就是工作目錄。每當我們一login 後所在的工作目錄就叫做家(Home),且我們可以任意切換工作目錄。 4. 檔案及目錄的命名 除了'/' 之外的所有字元都可以形成檔案或目錄的名稱,而檔案及目錄名字的 長度沒有限制(有些版本的UNIX限制在255 字之內)。 5. 路徑 如果要存取不在工作目錄中的檔案,則除了檔案名稱之外,也要指定目錄的位 置,而這就是路徑。而路徑由一堆檔案和工作名稱所組成,中間再用'/' 隔開 。比如a目錄下的b目錄下的c檔案,其路徑就是a/b/c 。而路徑又分成以下 兩種: A. 絕對路徑 ── 路徑名稱以'/'開頭,而檔案或目錄的位置從根目錄算起。 B. 絕對路徑 ── 路徑名稱不以'/'開頭,而檔案或目錄的位置從工作目錄算 起。 6. 處理檔案的命令 ls 列出目錄的內容。 ls -l 列出目錄的詳細內容。 cd 切換工作目錄為 mkdir 建立名叫的目錄 rmdir 刪除名叫的目錄 cat 的內容 more 的內容,並且每印滿一頁後則暫停 rm 刪除 cp 拷貝一份成 mv 改名為 echo 顯示在螢幕上 7. IO重新導向 UNIX所有的程式執行時,均需要資料的輸入以及輸出資料。一般而言,資料是 從鍵盤輸入,並將資料輸出到螢幕上,這就叫做標準輸入及標準輸出,而我們 可以更改標準出輸出入。 A. 更改標準輸入 ── 在命令後方加"< " ,即可從這 個檔案輸入資料。 B. 更改標準輸出 ── 在命令後方加"> " ,即可將螢幕輸出的資 料導向到這個檔案上。 C. 更改標準輸出 ── 在命令後方加">> ",功能與B.相似,只不 過這會將資料加在檔案後方。 D. 管道 ── 在兩個命令中間加上'|',即可將前方指令的輸出當成後方指令 的輸入。 例: cd /tmp ls -l > /tmp/ls.out cat /tmp/ls.out more /tmp/ls.out rm /tmp/ls.out ls | more ls | wc -l (word count, count line number,算出檔案數目) 三、終端機與編輯器 1. 終端機型別 vt100 ansi vt102 vt220 vt300 在csh及tcsh中: % set term = vt100 在sh, bash, ksh, zsh中: $ TERM=vt100 $ export TERM 2. 控制終端機 ── stty 修理終端機: stty sane 設定編輯按鍵 stty erase '^H' kill ^U erase ── ^H (BS) or DEL kill ── ^U ^D ── End of File, End of Input Flow Control ── Xon -> ^S, Xoff ->^Q 3. 編輯器 A. 列編輯器(line editor) 在Shell中打 e 或 ed 或 ex 或 edit 即進入列編輯程式。而要跳出時打 或 q 或 q! B. 全螢幕編輯器 vi ── VIsual editor joe ── Joe's own version of editor emacs ── Editor MACroS Jove ── Jxxx's own version of Emacs 在Shell 中要進入時打vi, joe, emacs, Jove等即可進入 C. vi的使用 vi工作時有兩種模式,輸入資料時則要在輸入模式中,而編輯時要在編輯 模式中。一進入vi後是在命令模式中,而在輸入模式進入命令模式,則按 。 1. 進入輸入模式的方法 a. 按i 游標不動,進入輸入模式,輸入則插在原有的文章中。 b. 按A 游標移至這一行的行尾,進入輸入模式。 c. 按o 在游標下方加一空白行,並從這一行輸入資料。 2. 命令模式按進入 上 左 h j k l 右 下 x 刪除一個字 dd 刪除一行 向下方翻一頁 向上方翻一頁 3. 檔案 在命令模式下 ZZ save & quit :w! write (save) unconditionally :wq write & quit :q quit :q! do not save and quit :e filename edit a file :r filename read in a file D. joe的使用 進入時按 H會顯示簡單的使用方法 E. Jove & Emacs 離開時打 T會教你Emacs簡單的使用方法。 四、行程控制(job control) 因為UNIX是多人多工的作業系統,所以在同一時間內會有許多程式同時執行。我們 稱每一個正在執行的程式叫做行程。一個人也可以同時執行很多個程式。 行程控制命令: ^Z 暫停執行 suspend jobs 列出現在正在執行的工作 (以下過的命令當單位印出) fg forground the last job. fg %3 forground number 3 job %3 same as 'fg %3' ps 列出現在正在執行的程式 owner 代表執行此程式的人 pid 一個程式在系統內的唯一編號。 kill pid 請程式結束執行 kill -9 pid 飭令式結束執行 kill -9 -1 把所有屬於自己的程式清光,全部結束執行。 註: sh 沒有行程控制 ╭─────────────────────────────────╮ │ ☆ ㄙ ┼ 〨┼ ┌┼╮ ☆ bbs.ntu.edu.tw │ │ ☆ O Λ Ο│ ╰┼╯ ☆ < 140.112.8.19 > │ ╰─────────────────────────────────╯   .