台大計算機中心網路推廣協會
網路課程講義
課程名稱:使用網路工具(一)
上課日期: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)
二、檔案系統(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. 管道 ── 在兩個命令中間加上'|',即可將前方指令的輸出當成後方指令
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
設定編輯按鍵 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
: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 沒有行程控制