底下只針對一些FreeBSD常用的命令及功能做一簡單的介紹。若想對這些指令做進一步的了解,請參閱man指令的用法:教你如何查詢指令功能。
基本指令:
常用指令:
檔案和目錄的處理:cd cp ls mkdir mv rm rmdir
和文字檔有關者:cat diff grep more
尋找檔案或程式:find where
清除螢幕:clear
顯示目前所在路徑:pwd
跳離UNIX:exit logout
不常用指令:
和行程有關者:bg fg kill nohup ps
和使用者有關:chfn chsh passwd who whoami
使用者之間傳送訊息:mesg wall write
顯示或設定時間、日期:date
檔案的連結:ln
列印檔案:lp
系統指令:
和磁碟或檔案系統有關:df du mount quota showmount umount
更改權限:chgrp chmod chown
關閉FreeBSD或顯示FreeBSD系統的一些訊息:shutdown uname
增加使用者:adduser
變換使用者帳號成為另外一個使用者:su
man指令用法:
man指令是用來查詢系統中各種指令的用法、各種設定檔的說明及寫程式所需要的資訊。UNIX的指令相當的多,甚至每個指令可能都會有十幾種可用的參數。所以當我們忘記指令的用法時我們都會利用man來查詢。有時我們安裝新的軟體的時候,這些軟體甚至都會自已將說明檔安裝在man的目錄。各位可以試看看這個指令:man joe。如果你有安裝joe軟體的話,你可以發現用man竟然可以查詢到joe的說明檔。底下我們將介紹一下如何使用man這個程式,以及man的輸出所代表的意義。請看這裡!
文書編輯器:vi joe
目前UNIX中最常用的編輯器為vi、joe和q。vi是所有UNIX系統都會提供的編輯器,不過UNIX的新手幾乎都認為vi是個超級難用的編輯器。但是因為vi是最基本的編輯器,所以學習vi可以預防系統中剛好沒有提供joe。另外joe和q因為都和pe2有點類似,所以目前大多數的使用者最常用的編輯器不外乎這兩者。不過我發現在FreeBSD中joe和q似乎是同一個程式。所以我們在此只介紹vi和joe。q的部分請參閱joe。
壓縮指令:
compress gzip pack unpack tar uncompress
若你拿到一個已壓縮的檔案時,如何判斷它是用何種壓縮程式壓縮的?其實只要看附檔名,大部分的壓縮檔都可以判斷出來。底下我們列出附檔名和相對的壓縮程式:
- .Z(Z大寫) compress、uncompress
- .gz gzip
- .z(z小寫) pack、unpack
- .tar tar
- .tar.gz tar+gzip
- .tgz tar+gzip
最上面一行我們列出了六個壓縮程式,這些都是目前UNIX中最常使用的壓縮程式。不過若你常到各大FTP站去抓檔案的話,你可以發現幾乎所有的壓縮檔都是.tar.gz或是.tgz,也就是它們都是經過tar和gz壓縮過。其它型式的壓縮檔已經很難找到。其實你只要背tar這個壓縮檔的使用方式,就可以解開目前大部分的壓縮檔(因為tar也可以解經過gzip壓縮過的檔案)。
其實tar並不是個壓縮檔。它的功用是它可以把數個檔案(甚至包目錄)合並成一個檔案。而UNIX的使用者又特別喜歡把這一個檔案再經過gzip壓縮一次。所以你看到的壓縮檔型式就會是:.tar.gz。因為它分別經過tar和gzip處理過。而.tgz的意思也是和.tar.gz一樣,它也是經過tar和gzip壓縮過。
不過tar也具有壓縮或解開.gz壓縮檔的能力。只要在參數中加入z這個參數,tar就可以具有gzip的能力。請看下列這兩行指令:
- tar cvf aaa.tar aaa/
- tar xvf aaa.tar
- tar czvf aaa.tgz aaa/
- tar xzvf aaa.tgz
網路介紹:
基本網路指令:
底下介紹幾個比較重要的網路指令。前兩個指令是很常用的指令。若你想確定本地電腦和某台遠端電腦的連線是否正常時,可以用ping指令來測試;finger可以查詢本地或遠端使用者的資料;talk可以讓使用者在線上交談,類似BBS中聊天的功能;ifconfig用來設定網路介面;netstat用來查詢網路的使用情形;nslookup可以將IP轉成domain name,或將domain name轉成IP;route和traceroute都和router有關。
和網路服務相關的指令: 底下介紹目前常用的網路服務和相關指令:
adduser:建立新的使用者帳號的指令,此指令還會自動建立使用者的HOME目錄
【常用範例】
- adduser:輸入此指令後,會出現一堆訊息要你輸入使用者名稱和其它的訊息
- bg
- cat file:顯示file這個檔案的內容
- cd /tmp:進入/tmp這個目錄
- cd:回到家目錄
- cd ..:回到上層目錄
- chgrp project report:將report檔案的群擁有者改變為project
- chmod a=rw note:設定note,將這個檔案設定為所有使用者都可以讀、寫,但不能執行
- chown manager table:將檔案table的擁有者名稱改成manager這個人
chsh:在一般的UNIX中chsh的功能在於改變你所使用的shell , 不過在FreeBSD中chsh和chfn似乎是一模一樣的程式
【常用範例】
- chsh:當你執行這個指令以後,它會要求你輸入你要使用的shell
chfn:改變使用者的資料,包括使用者預設的shell、使用者全名、電話號碼....等等,這些資料在其它user使用finger指令查詢你的時候會看到
【常用範例】
- chfn:當你執行這個指令以後,會出現q編輯器讓你編輯資料
- clear
compress:壓縮檔案,壓縮後的附檔名為.Z
【常用範例】
- compress -v letter.txt:壓縮letter.txt,並顯示壓縮比例和壓縮後的檔名
cp:複製檔案
【語法】
cp [-i] [-p] [-r] file1 [file2...] target
【選項】
-i:當目地的的檔案已經存在時,會要求使用者確認是否要覆蓋原有的檔案
-r (recursive):若filen是個目錄,則會將整個目錄樹及檔案複製過去
【常用範例】
- cp file /tmp:將file拷貝到/tmp目錄
- cp * /tmp:將目前目錄下的所有檔案拷貝到/tmp目錄
- cp -r /usr/eric /tmp:將eric目錄拷貝到/tmp目錄下
- date:印出現在的時間,日期
df:查詢檔案系統剩餘的空間或inodes的使用情形
【常用範例】
- df -k:查詢還有多少儲存空間可以使用。執行後會出現此畫面,此畫面左邊有Filesystem和Mounted on這兩個欄位,分別表示這個檔案系統的名稱,還有這個檔案系統被mount到那一個目錄。右邊有1K-blocks、Used、Avail、和Capacity四個欄位。分別表示這個檔案系統的容量(以1024 butes為單位)、已使用的空間、剩餘的空間、和使用率。
- df -i:和df -k這個指令功能類似,不過它會顯示inodes的使用情形。inodes代表你可以建立的檔案及目錄總數。
- diff file1 file2:比較file1,file2兩個檔案的不同處
- diff -c file1 file2:詳細比較兩個檔案
du:印出目前工作目錄下所有子目錄及檔案所使用的區塊數
【常用範例】
- du -k:以1024bytes為單位顯示目前目錄及以下各層子目錄所使用的空間大小。如圖。右邊欄位顯示目錄名稱。左邊顯示這個目錄所使用的空間大小(以1024 bytes)來計算。
exit:登出Unix ,功能相當於logout
【常用範例】
- exit
- fg
find:找尋檔案
【語法】
find path-name-list expression
【選項】
-name pattern:設定所要尋的檔案名稱,若有萬用字元則須將檔名加上引號
-exec cmd:當找到檔案時,則執行cmd所指定的指令
-ok cmd:同exec,但是找到檔案時會問你要不要執行指令
-print:當找到檔案時,列印出檔案的路徑名稱和檔名
-local:要找尋的檔案是在本地電腦上
-type c:要找尋的檔案符合c所指定的型式,c有以下幾種:
b:區塊特殊檔
c:字元特殊檔
d:目錄
l:符號連接檔
p:pipe檔(fifo)
f:一般檔案
-nouser:設定所有找尋的檔案不是在/etc/passwd檔案中所列使用者所擁有的
-nogroup:設定要找尋的檔案不是在/etc/group檔案中所列的群所擁有
【常用範例】
- find . -name "file*" -print:找出目前目錄及子目錄下以file為開頭的檔案
- find . -name "file*" -exec rm {} \; :同上,但找到後刪除它
finger:可查詢本地或外地使用者的資訊,這些資料可以利用chfn來設定
【常用範例】
- finger zulu:查詢同一台機器使用者zulu的資訊,執行後出現此畫面。這些資訊包括幾個項目:Login--使用者的ID;Name--使用者全名;Directory--使用者的Home目錄;Shell--使用者預設的Shell;最後幾行顯示使者上次login的時間、有沒有新的信件到達、還有使用者自已編輯的計畫檔。
- finger zulu@turtle.ee.ncku.edu.tw:功能同上。只是這個指令所查詢的是在turtle.ee.ncku.edu.tw這台機器上的使用者zulu。
- grep car file1:找尋file1檔案中那裡出現car這個字
- grep car *:找尋整個目錄下有那些檔案有包含car這個字
- gzip -1 prog.exe:快速壓縮prog.exe檔
- gzip -9 prog.exe:最佳化壓縮prog.exe檔
- gzip -9 -r test/:將test目錄下的檔案個別壓縮起來
- gzip -d
ifconfig:用來設定與管理網路介面,網路介面包括網路卡、PPP、SLIP、與lookback
【常用範例】
- ifconfig -a:查詢所有網路介面的情形。在turtle上執行出現此畫面。由此畫面我們知道turtle上有三個網路介面:ed0、lp0、和lo0。其中ed0這個網路介面的IP=140.116.72.72;netmask=0xffffff00;broadcast位址=140.116.72.255;網路卡的MAC address=00:80:c8:53:0b:aa。
- ifconfig ed0 140.116.72.72 netmask 255.255.255.0:設定網路介面ed0的參數。此例設定IP為140.116.72.72,netmask為255.255.255.0。
- ifconfig ed0 down:停止網路介面ed0。當你再執行ifconfig -a就看對到ed0介面了。
- ifconfig ed0 up:啟動網路介面ed0。
- ifconfig ed0 140.116.72.74 netmask 0xffffffff alias:這是IP Alias,也就是你可以讓你的機器有兩個以上的IP。這裡設定第二個IP為140.116.72.74。
- ifconfig ed0 140.116.72.74 delete:移除IP alias。
kill:停止程式的執行
【語法】
kill [-signal] pid...
kill -signal -pgid..
kill -l
【選項】
-l (list):印出signal的符號名稱
【常用範例】
- kill 111:刪除111號行程
- kill -9 111:強制刪除111號行程
ln:替檔案做硬連結(hard link)或符號連結(symbolic link)
【語法】
ln [-f] [-n] [-s] file1 [file2...] target
【選項】
-s (symbolic):建立符號連結
【常用範例】
- ln report answer:建立硬連結
- ln -s report answer:建立符號連結
- lp jan feb mar:列印jan、feb、mar三個檔案
- lp -n 30 today:將today列印30份
ls:列出目錄內容
【語法】
ls [-RadLCxmlnogrtucpFbqisfl] [names]
【選項】
-r (recursive):遞迴式印出該目錄下的檔案及子目錄內容
-a (all):印出所有的檔案,包括隱藏檔
-d (directory):當names是指某個目錄時,則會列印出這個目錄的資訊,所不是印出該目錄的內容
-l (long):詳細印出檔案資訊
-t (time):依檔案修改時間的順序印出
【常用範例】
- ls:印出目前目錄的資訊
- ls -l /tmp:詳細印出/tmp內的檔案資訊
- ls -ld /tmp:詳細印出/tmp這個目錄的資料
- ls -a:印出目前目錄的所有檔案,包括隱藏檔
- logout
- mount /dev/sd1s1a /home:將/dev/sd1s1a這個裝置掛在/home目錄上
- mesg:查詢其他使用者能否傳送訊息過來
- mesg n:讓其他使用者不能傳送訊息過來
- mesg y:讓其他使用者能夠傳送訊息過來
- mkdir newdir
more:以單頁方式印出檔案內容,常和ls和cat合用
【常用範例】
- more file1:以一頁一頁方式印出檔案內容
- cat file1 | more:功能相同於more | file1
- ls | more:以一頁一頁方式印出目錄資訊
mount: 掛上檔案系統
【語法】
mount -t
mount_
若
【常用範例】
- mount -o ro /dev/sd1s1a /home:掛入UFS檔案系統。將/dev/sd1s1a掛到/home目錄下,且設為唯讀。/dev/sd1s1a的檔案系統必須是UFS格式。-o後面接著參數,其中ro即指定檔案系統為唯讀。
- mount -t nfs -o intr,soft,bg
mv:改變檔案名稱或移動檔案到別的目錄
【語法】
mv [-f] [-i] file1 [file2...] target
【選項】
-i:當檔案target已存在時,會要求使用者確認是否要取代
-f:即使檔案target已存在,而且為禁止寫入的狀態時,也會將file1更名為target
【常用範例】
- mv test test.old:將test檔案更名為test.old
- mv test /tmp:將test檔案搬移到/tmp目錄
- netstat -i:查詢網路介面流量。在turtle上執行出現此畫面。其中比較重要的項目有:Ipkts表示接收到的封包;Ierrs表示接收到但是破損的封包;Opkts表示送出去的封包;Oerrs表示送出去但是破損的封包;Coll表示發生碰撞的次數。這些都是很重要的網管資料。如果Ierrs、Oerrs和Coll的值太大的話,表示網路可能出現某些問題。
- netstat -t:查詢TCP網路連線情形。在venus上執行出現此畫面。比較重要的是上面的Active Internet connections。如果(state)項目標示為ESTABLISHED的話,表示這個這是一條已建立的連線,其中Local Address和Foreign Address分別表示本地電腦和遠端電腦的網路位址和連線的port。例如由第一行我們可以得知,從turtle端有某個使用者使用telnet連線到local電腦venus。
- netstat -a:使用-a選項比-t選項多了那些正在等待連線的service daemon。若(state)項目標示為LISTEN的話,則表示有程式正在這個port等待連線。
- netstat -rn:查詢routing table。在venus上執行出現此畫面。第一行開頭為default的那一行指定了預設的router:140.116.72.253。若沒有特別指定router,則會以140.116.72.253當做router;第二行127.0.0.1為localhost,它的router要設為127.0.0.1;第三行140.116.72/24指定所有通往140.116.72.*的連線皆經由link#1,也比是default;第四行140.116.72.14指定若要通往140.116.72.14,則經由8:0:20:c:3f:e3,這是router的MAC Address;最後一行140.116.72.255通往ff:ff:ff:ff:ff:ff,表示這是broadcast address。
nohup:此程式可以讓使用者logout出去後,仍能繼續執行所指定的程式
【常用範例】
- nohup exefile &:執行exefile程式,且使用者logout以後,仍能繼續執行
nslookup:此指令可以將你輸入的domain name轉成IP位址,也可以將IP位址轉成domain name。它是透過domain name server去轉換domain name或是IP
【常用範例】
- nslookup:執行後會出現此畫面。前兩行表示這個指令會去domain name server:sun4.ee.ncku.edu.tw查詢資料,而這個server的IP位址是140.116.72.14。第四行'>'表示要你輸入所要查詢的domain name或IP,我們輸入domain name:www.ncku.edu.tw, 結果它傳回此domain name所對映的IP:140.116.241.101;而在第十二行我們輸入IP:140.116.72.72,結果它傳回此IP對映的domain name為turtle.ee.ncku.edu.tw。
- pack letter.txt
- passwd:更改密碼
ping:此指令常用來判斷網路是否暢通、對方是否開機、或者用來判斷連線速度
【常用範例】
- ping www.adaptec.com:判斷www.adaptec.com這台機器的連線狀態。如圖。當按ctrl - c時,會立即終止偵測,同時會列出偵測結果(最下面兩行)。由結果我們可以看出,我們送出了9個封包,對方只回應了4個。有55%的封包遺失。可見網路並不是很暢通。同時上面4行分別列出了所收到4個封包的資訊。如第1個封包:從送出封包到收到對方回應的封包總共經過了372.298 ms。可見連線速度也很慢。
ps:印出系統正在執行中的行程資訊
【語法】
ps [options]
【選項】
-l (list):印出較多的資訊
-t termlist (terminal):列出所指定termlist終端機所產生的處理程序
-u uidlist (user ID):只列出在uidlist中所指定使用者識別碼或使用者名稱所產生的程序
-g grplist (group ID):只列出在grplist中所指定群識別碼所產生的處理程序
【常用範例】
- ps:顯示使用者本身正有那些程式正在執行
- ps -l:列出詳細內容
- pwd
quota:若你的系統有支援quota,則可利用這個指令來查詢系統給你多少的硬碟空間,還有自己已使用多少空間
【常用範例】
- quota -v:查詢自己quota的使用情形。請看此例。Filesystem項目指出這是在/home檔案系統的quota配置;blocks項目指出你在這個檔案系統(/home)已使用7176個blocks;quota項目表示系統允許你在這個檔案系統使用10000個blocks。
rm:刪除檔案或目錄
【語法】
rm [-f] [-i] file...
rm -r [-f] [-i] dirname... [file...]
【選項】
-f:不會要使用者輸入確定要刪除的動作
-r (recursive):遞迴式刪除整個目錄樹
-i (interactively):以交談方式進行刪除
【常用範例】
- rm file1:刪除file1檔案
- rm *:刪除此目錄下的所有檔案
- rm -r -f /tmp/aaa:將/tmp/aaa目錄整個刪除
- rmdir /tmp/aaa:刪除/tmp/aaa空目錄
route:用來設定routing table。routing table的內容可以用netstat -rn來查詢
【常用範例】
- route flush:清除routing table。若你是透過網路進去的話,最好不要執行這樣的指令。否則網路會斷線,你就無法再操作這台電腦了。
- route add default 140.116.72.253:設定default的router,但是必須先清除原先的default router才行。
- route add 140.113.1.1 140.113.199.254:將通往140.113.1.1的封包經由140.113.199.254轉送。
- route add -net 140.113.199 140.113.199.254:將通往140.113.199.*的封包經由140.113.199.254來轉送。
- route delete 140.113.1.1:如果有設定140.113.1.1的routing path,則移除它。
- showmount -a venus:觀看目前正有那些機器掛上venus所提供的NFS檔案系統。如圖的第一行:carpet:/home/ftp/private1,它指出carpet這台電腦目前正在使用venus所提供的NFS目錄/home/ftp/private1。
- showmount -e turtle:觀看turtle提供那些NFS目錄供其它電腦mount。如圖。它顯示turtle提供三個NFS目錄供別人mount,而Everyone的意思是指所有的電腦都可以使用turtle所提供的NFS目錄。
- shutdown -r now Now the system will shutdown.:立即關閉UNIX系統,並通知其它使用者系統即將關閉。其它正在系統上的使用者會看到這樣的訊息:Now the system will shutdown.
- shutdown -r +10 After 10 minutes, the system will shutdown.:十分鐘以後關閉UNIX系統,並通知其它使用者系統即將關閉。其它正在系統上的使用者會看到這樣的訊息:After 10 minutes, the system will shutdown.
su:改變目前的使用者身份。若想要從遠端以root身份登入系統時,常常會先以其它身份從遠端登入系統,再用此指令將身份轉換成root。此做法可以確保系統安全
【常用範例】
- su Jack:將使用者身份轉換成Jack。轉換前會先要求你輸入Jack的密碼。
- su:轉換成root。
talk:此指令可以和本地或遠端的使用者交談。當你和別的使用者有事情要討論時,這個指令是個很好用的工具。BBS的talk功能和此指令很像
【常用範例】
- talk Mickey@turtle.ee.ncku.edu.tw:執行此指令後,在turtle上的Mickey會出現這樣子的訊息。它的意是說使用者zulu@venus.ee.ncku.edu.tw要和你talk,如果你要和他talk的話,請下這個指令:talk zulu@venus.ee.ncku.edu.tw。當然如果你不想和他talk的話,你可以乎略這個訊息。如果你下了這個指令,則你們雙方會建立連線,並出現這種畫面。這個畫面中間有一條橫線,線的中間寫著:zulu@venus。這個意思表示你目前正和venus上的zulu使用者交談。你所有打入的字都會出現在這條線的上半部,而venus上的zulu所打的字都會出現在這條線的下半部。
tar:將檔案以保存檔方式從磁帶或磁碟片中取出或存放,tar也可以壓縮或解壓縮gzip產生的檔案
【語法】
tar -c[vwfbL[#s]] device block files..
tar -r[vwfbL[#s]] device block files..
tar -t[vfL[#s]] device [files..]
tar -u[vwfbL[#s]] device block files..
tar -x[lmovwfL[#s]] device [files..]
【選項】
-c (create)建立新的保存檔
-r (replace):新增到保存檔的尾端,而不會重新建立保存檔
-t (table):列出保存檔所包含的檔案名稱
-u (update):更新檔案
-x (extact):將指定的檔案名稱從保存當中取出
【常用範例】
- tar czvf aaa.tgz aaa/:把aaa目錄壓成aaa.tgz檔
- tar xzvf aaa.tgz:將aaa.tgz解壓縮
- tar cvf aaa.tar aaa/:建立aaa/目錄的保存檔aaa.tar
- tar xvf aaa.tar:將保存檔aaa.tar解開
traceroute:讓你知道通往某機器經過那些router,以及連線到底中斷或者那邊的連線比較緩慢
【常用範例】
- traceroute 140.116.6.12:查詢連線到140.116.6.12經過那些router。如圖。總共經過4個router。右邊則顯示了封包通過各個router所經過的時間。
- umount /mnt:不管/mnt掛上的是ufs、DOS或是NFS檔案系統,都可以利用這個指令來卸下檔案系統。
uname:印出Unix系統的相關資訊
【語法】
uname [-amnrsv]
uname [-S system_name]
【選項】
-a (all):印出所有的資料
-m (machine):只印出機器的硬體名稱
-n (node name):只印出網路的節點名稱
-r (release):只印出作業系統的release編號
-s (system):只印出系統名稱
-v (version):只印出作業系統的version編號
【常用範例】
- uname:印出機器的節點名稱
- uanme -a:印出所有資訊
uncompress:解開以compress壓縮的檔案(以.Z為附檔名的檔案)
【常用範例】
- uncompress -v letter.txt.Z:解開壓縮檔letter.txt.Z並觀看壓縮訊息
- unpack letter.txt.z
【常用範例】
- wall <>
where:這個指令會去系統內定的目錄找尋執行檔所在位置
【常用範例】
- where ls:找尋ls放在那個目錄
- who
whoami:當使用者不斷使用su更換身份時,可用此指令提醒自已正在使用那個帳號
【常用範例】
- whoami
- write steve ttypa:和在ttypa終端機的steve交談
沒有留言:
張貼留言