UNIX常用命令
以下只說明各常用指令的基本用法, 若需詳細說明, 請用 man 去讀詳細的 manual.
1.關於檔案/目錄處理的命令
ls——列目錄
這是最基本的檔案指令。 ls 的意義為 "list",也就是將某一個目錄或是某一個檔案的內容顯示出來。
格式:ls -1ACFLRabcdfgilmnopqrstux -W[sv] [files]
例:/vU'u*
#ls (不跟任何參數以簡單格式列出目前的目錄中所有檔案)
#ls bin (簡單格式列出名為bin的檔案或目錄下的所有檔案)
#ls /u/ilasII_GB/lib (全路徑,列出lib目錄下的所有檔案)
ls 的常用參數如下:.;
-a : 在 UNIX 中若一個目錄或檔案名字的第一個字元為 "." , 則使用 ls
將不會顯示出這個檔案的名字,我們稱此類檔案為隱藏檔。如 .profile、.tcshrc等
如果我們要察看這類檔案,則必須在其後加上參數 -a 。
-l : 這個參數代表使用 ls 的長( long )格式,可以顯示更多的資訊,如檔案存取權,檔案擁有者( owner ),檔案歸屬組,檔案大小,檔案最後更新時間,甚而 symbolic link 的檔案是 link 那一個檔等等。顯示結果如下所示:_
drwxrwxrwx 30 root bin 1024 May 23 10:38 u
drwxrwxrwx 2 root sys 512 Jul 28 1999 uacn
drwxrwxrwx 5 root sys 512 Jul 27 1999 udk
lrwxrwxrwx 1 root sys 11 Jul 27 1999 unix -> /stand/unix
drwxrwxrwx 35 root auth 1024 Apr 3 13:45 usr
在開始的10個字元上系統給出檔案的使用者權限。該序列分成四個域。第一個字元為類型域,第2、3、4個字元為使用者主域,第5、6、7個字元為同組使用者域,第8、9、10個字元為其它使用者域,域中字元的含義如下:k
l在類型域中:
d 表示此檔案是一個目錄
-表示此檔案是一個普通檔案
b 表示此檔案是一個特殊的塊裝置I/O檔案
c 表示此檔案是一個特殊的字元裝置I/O檔案
l 表示此檔案是一個串連檔案。在其檔案名稱後緊跟與它串連的檔案路徑及名稱。如:
unix -> /stand/unix[<
l在“使用者主”、“同組使用者”、“其它使用者”域中:
r 表示有讀許可權。含義是可以拷貝或顯示該檔案或目錄中的內容。
w 表示有寫入權限。含義是可以改變或修改該檔案。
x 表示有執行許可權。含義是可以執行該檔案或用cd命令進入該目錄,在該目錄中建立檔案或子目錄等。{"/;
-表示無許可權。
chmod——變更檔案模式( change mode )
這個指令是用來更改檔案的存模數式( access mode )。在 UNIX 一個檔案上有可讀(r)可寫(w)可執行(x)三種模式,分別針對該檔案的所有者( onwer )、同組者( group member )( 你可以 ls -lg來觀看某一檔案的所屬的 group ),以及其他人( other )。一個檔案如果改成可執行模式則系統就將其視為一個可執行檔,而一個目錄的可執行模式代表使用者有進入該目錄之權利。chmod 就是用來變更一些檔案的模式。
格式:chmod [ -fR ] mode filename ...
主要參數的意義如下:
-f(Force): chmod 不會理會失敗的動作。 -R(Recurive): 會將所有子樹下的所有子目錄及檔案改為你所要改成的模式。
Mode:指改變模式。包括三個方面:
A.為哪些使用者改變
u——使用者本身
g——同組使用者
o——其他使用者
B.如何改變
+——增加許可權
-——去掉許可權
C.什麼許可權
r——讀許可權)
w——寫入權限
x——執行許可權
例:
#chmod g0+w file1
修改前file1的許可權為:-rwxr--r--
修改後file1的許可權為:-rwxrw-rw-
也可以用一個三位八進位元字來表示對某些對象的存取權。
例:
#chmod 666 * (所有使用者都可讀、寫)
#chmod 777 * (所有使用者都可讀、寫、執行)
cat——串聯顯示命令
例:#cat file1 (將檔案file1的內容在螢幕上不停地顯示出來)
Cat命令還可以用來建立檔案,如:
#cat>newfile
this is a text
Ctrl+D
即建立newfile檔案,內容為:this is a text
#cat file1 file2 >file3 (將file1,file2兩個檔案接起來組建檔案file3)
#cat f1 f2>>f3 (將f1,f2兩檔案接在f3檔案的尾)
more——分屏顯示檔案內容
more 可以將所觀察的檔案根據分屏顯示出來,並根據使用者的要求換頁或卷行。
如果使用者要在某一個檔案中搜尋一個特定的字串,則按 / 然後跟著打所要搜尋的單字即可進行搜尋。
如果你在使用中覺得已經看到了所要看的部份,可以按'q'離開 more 的使用。
在使用中按'v' 亦可以使用編輯器來編輯所觀看的檔案。
格式: more filename
cd——改變目前的目錄
格式:cd dirname
例:
#cd (到使用者的“家”目錄)
#cd /usr (將目前目錄轉移到/usr目錄,也即進入/usr)
#cd .. (返回上一級目錄)
#cd ../.. (返回上一級目錄的上一級目錄) .
cp——拷貝
這個指令的意義是複製("COPY") , 也就是將一個或多個檔案複製成另一個檔案或者是將其複製到另一個目錄去。
格式: cp [-fip] source_file target_file (拷貝檔案)
cp [-r|-R][-fip] source_file... target_file (拷貝目錄)
常用參數如下:
-i : 此參數是當已有檔名為 f2 的檔案時,若逕自使用 cp 將會將原來 f2的內容掩蓋過去,因此在要蓋過之前必須先詢問使用者一下。如使用者的回答是y(yes)才執行複製的動作。
-r : 此參數是用來做遞迴複製用,可將一整顆子樹都複製到另一個目錄中。 cp 的用法例舉如下:
#cp f1 f2 (將名為 f1 的檔案複製一份名為 f2 的檔案)
#cp f1 f2 f3 ... dir (將檔案 f1 f2 f3 ... 複製一份放到目錄 dir 裡面)
#cp -r dir1 dir2 ( 將 dir1 的全部內容全部複製到 dir2 裡面)
mv——移動或改名
mv 的意義為 move , 主要是將一檔案改名或移至另一個目錄。
格式: mv [-fi] source_file... target_file 主要參數:
-i : -i 的含義與 cp 的相同,均是 interactive詢問之意。
-f: 強迫( force )執行 。所有其他的參數遇到 -f 均失效。
例:
#mv f1 f2 (將名為 f1 的檔案變更成名為 f2 的檔案)
#mv dir1 dir2 ( 將名為 dir1 的目錄變更成名為 dir2 的目錄)
#mv f1 f2 f3 ... dir (將檔案 f1 f2 f3 ... 都移至目錄 dir 裡面)
rm——刪除XV-cp
rm 的意義是 remove ,也就是用來刪除一個檔案。在 UNIX 中一個被刪除的檔案除非是系統恰好有做備份,否則是無法像 DOS 裡面一樣還能夠恢複。所以在做 rm 動作的時候使用者應該要特別小心。D
格式: rm [-fiRr] file...
主要參數:
-f : 將會使得系統在刪除時,不提出任何警告訊息。
-i : 在除去檔案之前均會詢問是否真要除去。
-r : 遞迴式的刪除。
注意:^
不要隨便使用 rm -rf , 否則有一天你會"欲哭無淚"......
例:
rm f1 (刪除名為f1的檔案)jm
rm -r dir1 (刪除名為dir1的目錄及其下的所有檔案)jT"0
rm -i sendmarc1 (刪除名為sendmarc1的檔案前先提示,待回答(Y/N)?)如下:
remove sendmarc1 ? y
mkdir——建立目錄
mkdir 是一個讓使用者建立一個目錄的指令。你可以在一個目錄底下使用 midir 建立一個子目錄。
格式:mkdir dirname1 [ dirname2 ... ]
例:
#cd /u/ilasII_GB (將當前路徑置換為/u/ilasII_GB)
# mkdir ilasbak (在/u/ilasII_GB目錄下建立一個名為ilasbak的子目錄)
rmdir——刪除目錄
rmdir 是用來將一個"空的"目錄刪除。如果一個目錄下面沒有任何檔案,你就可以用 rmdir 指令將其除去。 格式:
rmdir dirname1 [ dirname2 .... ] 如果一個目錄底下有其他的檔案, rmdir 將無法將這個目錄刪除,除非使用 rm 指令的 -r 選項。
例 :
rmdir ilasbak (刪除名為ilasbak的空目錄)
pwd——顯示當前路徑
例如:
#pwd
/u/ilasII_GB/database (顯示當前路徑為:/u/ilasII/database)
2.關於進程處理的命令:
ps——顯示目前你的 process 或系統 processes 的狀況
格式:
ps [-aAdefl] [-G groups] [-o format] [-p pids] [-t termlist] [-u users] [-U users] [-g pgrplist] 常用參數:
-a 列出所有使用者的 process 狀況。
-u 顯示 user - oriented 的 process 狀況 。
-x 顯示包括沒有 terminal 控制的 process 狀況 。
-w 使用較寬的顯示模式來顯示 process 狀況 。
例:
#ps -ae (顯示所有進程的進程號及狀態)
#ps -u ilasnt1 (顯示使用者ilasnt1的進程狀態) PID TTY TIME CMD
1194 ttyp0 00:00:00 sh
#ps -t tty1a (顯示裝置tty1a上的進程)
如上所示:我們可以經由 ps 取得目前 processes 的狀況,如 PID(進程號) , TTY(裝置名稱)、TIME(時間)、CMD(程式名) 等。
kill——殺進程
kill 指令的用途是送一個訊號給某一個進程。因為大部份送的都是用來殺掉進程 ,因此稱為 kill 。
格式:
kill [ -SIGNAL ] pid ...
kill -l
SIGNAL :為一個訊號的數字,從 0 到 31 ,其中 9 是 SIGKILL ,也就是一般用來殺掉一些無法正常終止進程的訊號。
你也可以用 kill -l 來察看可代替 signal 號碼的數目字。
#kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2
CLD PWR WINCH URG POLL STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ WAITING
LWP FREEZE THAW CANCEL LOST RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMAX-3 RTMAX-2
RTMAX-1 RTMAX
Who——查詢目前有那些人線上
例:
#who
ilasnt1 ttyp0 May 24 10:23
root ttyp3 May 24 11:27
root ttyp4 May 24 09:39
w——查詢目前有那些人線上上,同時顯示出那些人目前的工作
例:
#w
12:17pm up 3:59, 3 users, load average: 2.03, 2.02, 2.00
User Tty Login@ Idle JCPU PCPU What
ilasnt1 ttyp0 10:23am 1:54 1 - -sh
root ttyp3 11:27am 2 1 - w
root ttyp4 9:39am 38 1 - -sh
chgrp——改變組的屬性
格式:
chgrp [-R] group file... 例:
#chgrp library file1 file2… (將file1、file2…等的使用者組改為library)
chown——改變檔案或目錄的所有者
格式:
chown [-R] owner[:group] file...
例:
#chown ilasnt1 ilasII_GB (將ilasII_GB的使用者主改為ilasnt1)
passwd——更改使用者口令
格式:
passwd 使用者名稱 (後面不跟使用者名稱,為修改root的口令)
4.網路指令
UNIX 提供網路的串連,使得你可以在各個不同的機器上做一些特殊的事情。有些工作可以利用 UNIX 的網路指令,在你的位子上連到各個不同的機器上工作。如此一來,即使你在寢室,也能輕易的連至繫上或計中來工作,不用像以前的人必須泡在冷冰冰的機房面。3Y2Y3D
這些網路的指令如下所述:
telnet——模擬終端程式
telnet 是一個提供 user 經由網路連到 remote host。
格式:
telnet [ hostname | ip-address ] [ port ]
其中:B,ftY6
hostname:為一個像 ccsun1 或是 ccsun1.cc.nctu.edu.cn 的 name address
ip-address:則為一個由四個小於 255 的數字組成的IP地址,如 140.113.17.173 、210.26.147.1等。
Port:為一些特殊的程式所提供給外界的溝通點。如對方沒要求,則不需要此項。
例:
#telnet ccsun1
#telnet 140.113.17.173
ftp——檔案傳輸通訊協定
ftp 的意義是 File Transfer Program ,是一個很常應用在網路檔案傳輸的程式。
格式:
ftp [ hostname | ip-address ]0rpv
其中 hostname | ip-address 的意義同telnet 。(Imgo在進入 ftp 之後,如果與 remote host 串連上了,它將會詢問你使用者名稱 與密碼,如果輸入對了就可以開始進行檔案傳輸。
ftp中常用命令:
ascii:將傳輸模式設為 ascii 模式。通常用於傳送文字檔。
binary:將傳輸模式設為 binary 模式,通常用於傳送執行檔,壓縮檔與影像檔等。
cd remote-directory:將 remote host(遠方)上的工作目錄改變。
lcd [ directory ]:更改 local host (本地)的工作目錄。
ls [ remote-directory ] [ local-file ]:列出 remote host 上的檔案。
get remote-file [ local-file ]:取得遠方的檔案。
mget remote-files :可使用通用字元一次取得多個檔案。
put local-file [ remote-file]: 將 local host 的檔案送到 remote host。
mput local-files :可使用通用字元一次將多個檔案放到 remote host 上。
help [ command ]: 線上輔助指令。
mkdir directory-name :在 remote host 造一個目錄。
prompt 更改交談模式,若為 on 則在 mput 與 mget 時每作一個檔案之傳輸時均會詢問。
quit/bye 離開ftp .
5.其他指令
vi——編輯命令
任何使用者最常做的事要數建立和編輯檔案,包括文檔、報告和文字,vi(Visual Editor)是一個有效而相對簡單的全熒幕編輯,使用vi,只要記著少量基本指令,就可以開始起步,再學習其他更複雜的指令,而系統管理員則使用vi管理和維護系統。
vi是包含在SCO System V作業系統中的全熒幕編輯,其實,vi不獨存在於SCO UNIX內,而是UNIX內相當普及的檔案編輯。開啟檔案無論是開啟新檔或修改舊檔案,都可以使用vi。
格式:>q_YRR
#vi filename'x8PXh
如果檔案是新的,就會在熒幕底部看到一個資訊,告訴使用者正在建立新檔案。如果檔案早已存在,vi則會顯示檔案的首廿四行,使用者可再用遊標(cursor)移動檔案。
這是執行Vi後的螢幕樣式:
~
~
上面是一個經vi開啟的類比檔案,一行開始處的波折號(~)表示檔案的結尾。 vi使用了兩種狀態,一是指令態(Command Mode),另一是插入態(Insert Mode)。當vi處於指令態時,打入的內容會視作指令來解釋;另一方面,當vi處於插入態時,就可以打入本文(text)給檔案。
大多數vi指令是單字元,由插入態改變為指令態,按〈Esc〉鍵;而由命令態轉為插入態,則可以使用下面的插入令,直接打入,無需再按〈Return〉鍵。
i 在遊標處插入本文
I 在一行開始處插入本文
a 在遊標後追加本文
A 在行尾追加本文
o(小寫歐) 在遊標下面新開一行
O(大寫歐) 在遊標上面新開一行
要記著一點,在插入態處,不能打入指令,必需先按〈Esc〉鍵,返回指令態。假若戶用不知身處何態,也可以按〈Esc〉鍵,不管處於何態,都會返回指令態。 l存檔及退出
在修改檔案時,如何存檔及退出指定檔案都非常重要。在vi內,行使存檔或退出的指令時,要先按冒號(:),改變為指令態,使用者就可以看見在熒幕左下方,出現冒號(:),顯示vi已經改為指令態,可以進行存檔或退出等工作。ELU)
下面就是一些這方面常用的指令。
:q! 放棄任何改動而退出vi,也就是強行退出
:w 存檔
:wq 存檔並退出
:x 與wq的工作一樣
:zz 與wq的工作一樣刪除本文
l刪除
刪除或修改本文都是利用插入態,故此,下面所提及的指令只需在插入態內,直接選入指令即行。
x 刪除遊標處字元(Character)
nx 刪除遊標處後n個字元
nX 刪除遊標處前n個字元
ndw 刪除遊標處下n個單詞(word)
dd 刪除整行
d$或D 刪除由遊標至該行最末
u 恢複前一次所做的刪除
l修改本文~
當使用vi修改本文,加減字元時,就會採用另一組在插入態操作的指令。
— r char由char代替遊標處的字元
—Rtext〈Esc〉由text代替遊標處的字元J
—cwtext〈Esc〉由text取代遊標處的單詞^
—Ctext〈Esc〉由text取代遊標處至該行結尾處
—cc使整行空白,但保留遊標位置,讓你開始打入
—如刪除指令一樣,在指令前打入的數,表示執行該指令多少次。
l本文模式檢索W
要檢索檔案,必需在指令態下進行。所謂「模式」,就是一個特定字串,其中可含空格符。
/str〈Return〉 向前搜尋str直至檔案結尾處
?str〈Return〉 往後搜尋str直至檔案開首處
n 同一方向上重複檢索
N 相反方向上重複檢索
vi纏繞整個檔案,不斷檢索,直至找到與模式相匹配的下一個出現。其他如果要在 vi執行期間,轉到shell執行,使用驚歎號(!)執行系指令,例如在vi期間,列出目前的目錄內容,可以打入:!If
另一方面,使用者可以在主目錄中建立.exrc環境檔案,用set打入選項,每次調用vi時,就會讀入.exrc中的指令與設定。下面是.exrc環境檔案的執行個體:
set wrapmarging
set showmode
set autoindent
set number
備份命令:tar(c)
tar 是對非特權使用者最易用和最可靠的公用程式(utility),從歸檔介質上保留和恢複檔案,亦能從多檔案歸檔中抽取單個檔案。
tar 歸檔使用檔案和目錄的相對或絕對路徑名。
打入 tar,即會顯示所有變數選項;
如:
tar -{txruc}[0-9vfbkelmnopwAFLTP] [tapefile] [blocksize] [tapesize] files...
Key Device Block Size(K) Tape
0 /dev/rfd048ds9 18 360 No
1 /dev/rfd148ds9 18 360 No
2 /dev/rfd096ds15 10 1200 No
3 /dev/rfd196ds15 10 1200 No
4 /dev/rfd0135ds9 18 720 No
5 /dev/rfd1135ds9 18 720 No
6 /dev/rfd0135ds18 18 1440 No
7 /dev/rfd1135ds18 18 1440 No
8 /dev/rStp0 20 0 Yes
9 /dev/rctmini 20 0 Yes
10 /dev/rdsk/fp03d 18 720 No
11 /dev/rdsk/fp03h 18 1440 No
12 /dev/rdsk/fp03v21 10 20330 No
其中: R
“cv”是建立歸檔;
“cv#”用於來自 /etc/default/tar 的裝置號 #;
“rv”追加已有歸檔;
“uv”更新在已有歸檔上的檔案;
“tv”顯示歸檔內容表;
“xv”從歸檔中抽取檔案;
“f”從指定檔案中讀入或寫出;
“L”使 tar跟隨符號串連繼續追查下去,預設情況下則會忽略符號串連。
例:
(1)要歸檔指定檔案,而複蓋盤上的已有資料,指令如下:
$cd pub
$tar cv8 ascii greek (8為磁帶機)
volume end at 1199k, block factor=5k
seek=0k a ascii 3k
seek=3k a greek 1k
(2)要列出 tar 歸納的內容:
$tar tv8C>qE-
rwxrwxrwx201/50 1731 Apr 11 00:58 1997 web50/WEB/srchbib.htm
rwxrwxrwx201/50 1002 Apr 11 00:58 1997 web50/WEB/readinfo.htm
rwxrwxrwx201/50 1070 Apr 11 00:58 1997 web50/WEB/stflag.gif
rwxrwxrwx201/50 45 Mar 22 01:27 1997 web50/WEB/cgi-bin/ILASPROF
rwxr-xr-x201/50 136799 Apr 10 04:10 1998 web50/WEB/cgi-bin/openhold
注意:建立 tar 歸檔,使用相對路徑名,否則,恢複另一系統就會蓋寫其他系統的檔案。如:
#tar cv8 /etc/motd
#cd /tmp
#tar xv8
x /etc/motd, 943 bytes,2k
Df——顯示硬碟空間使用方式
磁碟空間以塊為單位進行分配,典型的塊是512位元組。
例:
#df -vL7a
Mount Dir Filesystem blocks used free %used
/ /dev/root 2123740 990450 1133290 47%
/stand /dev/boot 100000 19796 80204 20%
/u /dev/u 15000000 12529568 2470432 84%
Du——檢測一個目錄和(遞迴地)所有它的子目錄中的檔案佔用的磁碟空間,用塊大小標識。
例:
#du
#du -s 只顯示整個目錄佔用的空間
Find——從指定路徑開始尋找帶有規定特徵的檔案
例:
#find / -name ilas.ini (從根目錄開始遞迴地尋找出名為ilas.ini的檔案,並將它所在目錄顯示在螢幕上)
Date——顯示系統日期
例:
#date
Thu May 24 14:31:49 CST 2001
format——磁碟片格式化
例:
#format /dev/rfd096ds15 (格式化5寸高密磁碟片(A磁碟機))
Haltsys——緊急關機
格式:#haltsys 斷行符號 (此時未執行關閉資料庫等,最好用Shutdown)
Shutdown——多使用者情況下關機
格式:
#shutdown -g0 -y -i0