UNIX簡介(轉)
UNIX簡介(轉)[@more@]登入工作站==========..透過 PC 登入工作站===================執行格式:telnet hostname (在 dos 下執行)telnet ip-addressExample:telnet doc telnet 140.122.77.120目前繫上可用的工作站如下:sun1 sun2 sun6 sun7 sun8 sun9 sun10 sun11 sun12 sun13 snow pacific atlanticindian graph1 doc happy grumpy sneezy bashfule dopey ice注: 可利用指令 arp hostname 或 arp domain_name 查詢 ip_address..登入步驟=========login : _______ => 輸入 usernamepassword : _______ => 輸入密碼..登出步驟=========% logout或 % exit或 % 更改帳號密碼============% yppasswd => 執行後將會出現下列訊息Changing NIS password for user on ice.Old password: ______ => 輸入舊密碼New password: ______ => 輸入新密碼(最好6-8字,英文字母與數字混合)Retype new password: ______ => 再輸入一次密碼線上指令說明============執行格式: man command-nameExample: % man ls進入遠端電腦系統================執行格式:rlogin hostname [-1 username]Example:%rlogin docremote login 進入工作站 doc 中。%rlogin doc -l user使用 user 帳號進入工作站 doc 中。執行格式:telnet hostname 或 telnet IP addressExample:%telnet doc or %telnet 140.109.20.251檔案或目錄處理==================.列出檔案或目錄下之檔案名稱執行格式: ls [-atFlgR] [name] ( name 可為檔名或目錄名稱。)Example :ls 列出目前目錄下之檔名。ls -a 列出包含以.起始的隱藏檔所有檔名。ls -t 依照檔案最後修改時間之順序,依序列出檔名。ls -F 列出目前目錄下之檔名及其型別。"/" 結尾表示為目錄名稱,"*" 結尾表示為執行檔,"@" 結尾表示為 symblic link。ls -l 列出目錄下所有檔案之許可權、擁有者、檔案大小、修改時間及名稱。ls -lg 同上,並顯示出檔案之擁有者群組名稱。ls -R 顯示出目錄下,以及其所有子目錄之檔名。( recursive listing )目錄之縮寫:===========~ 使用者 login 時的 working directory ( 起始目錄 )~username 指定某位 user 的 working directory ( 起始目錄 ).. 目前的工作目錄 ( current working directory ).. 目前目錄的上一層目錄 ( parent of working directory)改變工作目錄位置================執行格式:cd [name] :name 可為目錄名稱、路徑或目錄縮寫。Example:cd 改變目錄位置,至使用者 login 時的 working directory (起始目錄)。cd dir1 改變目錄位置,至 dir1 之目錄位置下。cd ~user 改變目錄位置,至使用者的 working directory (起始目錄)。cd .. 改變目錄位置,至目前目錄的上層( 即 parent of working directory)cd ../user 改變目錄位置,至相對路徑 user 之目錄位置下。cd /../.. 改變目錄位置,至絕對路徑( Full path ) 之目錄位置下。複製檔案========執行格式: cp [-r] source destinationExample:cp file1 file2 將檔案 file1 複製成 file2cp file1 dir1 將檔案 file1 複製到目錄 dir1 下,檔名仍為 file1。cp /tmp/file1 . 將目錄 /tmp 下的檔案 file1 複製到現行目錄下,檔名仍為 file1。cp /tmp/file1 file2 將目錄 /tmp 下的檔案 file1 複製到現行目錄下,檔名為 file2□cp -r dir1 dir2 (recursive copy) 複製整個目錄。若目錄 dir2 不存在,則將目錄 dir1,及其所有檔案和子目錄,複製到目錄 dir2 下,新目錄名稱為 dir1。若目錄 dir2 不存在,則將dir1,及其所有檔案和子目錄,複製為目錄 dir2。搬移或更改檔案、目錄名稱========================執行格式: mv source destinationExample:mv file1 file2 將檔案 file1,更改檔名為 file2。mv file1 dir1 將檔案 file1,移到目錄 dir1 下,檔名仍為 file1。mv dir1 dir2 若目錄 dir2 不存在,則將目錄 dir1,及其所有檔案和子目錄,移到目錄 dir2 下,新目錄名稱為 dir1。若目錄 dir2 不存在,則將dir1,及其所有檔案和子目錄,更改為目錄 dir2。建立新目錄==========執行格式: mkdir directory-nameExmaple :mkdir dir1 建立一新目錄 dir1。刪除目錄========執行格式: rmdir directory-name 或 rm directory-nameExample :rmdir dir1 刪除目錄 dir1,但 dir1 下必須沒有檔案存在,否則無法刪除。rm -r dir1 刪除目錄 dir1,及其下所有檔案及子目錄。刪除檔案========執行格式: rm filename (filename 可為檔名,或檔名縮寫符號。)Example :rm file1 刪除檔名為 file1 之檔案。rm file? 刪除檔名中有五個字元,前四個字元為file 之所有檔案。rm f* 刪除檔名中,以 f 為字首之所有檔案。檔名的縮寫符號==============? 代表檔案名稱中之單一字元。* 代表檔案名稱中之一字串。列出目前所在之目錄位置======================執行格式: pwd檢視檔案內容============執行格式: cat filenameExample :cat file1 以連續顯示方式,檢視檔名 file1 之內容。執行格式: more filename 或 cat filename | moreExample :more file1 以分頁方式,檢視檔名 file1 之內容。cat file1 | more 同上。檢視目錄所佔磁碟容量====================執行格式: du [-s] directoryExample :du dir1 顯示目錄 dir1 的總容量及其次目錄的容量(以 k byte 為容量)。du -s dir1 顯示目錄 dir1 的總容量。檢視自己的 disk quota 使用狀況==============================disk quota : 工作站磁碟空間的使用限額。執行格式: quota -vExample :quota -v 將會顯示下列訊息Filesystem usage quota limit timeleft files quota limit timelef./home/ice/u019344 8192 12288 1.9 days 160 0 0欄位解說:usage : 目前的磁碟用量。quota : 你的磁碟使用額度。當你的 usage 超過 quota 時,雖然可以繼續使用,但是必須七天之內降到 quota 以下,否則即使用量沒有超 limit(最高限額),也無法再寫入或複製任何檔案。limit : 最高使用額度。當你的 usage 達到 limit 時,無法再寫入或複製任何檔案。檔案傳輸========.複製檔案或目錄至遠端工作站============================執行格式: rcp [-r] source hostnome:destination( source 可為檔名、目錄名或路徑,hostnome 為工作站站名,destination 為路徑名稱.Example :rcp file1 doc:/home/user將檔案 file1,複製到工作站 doc 路徑 /home/user 之目錄下。rcp -r dir1 doc:/home/user將目錄 dir1,複製到工作站 doc 路徑/home/user 之目錄下。.自遠端工作站,複製檔案或目錄===============================執行格式: rcp [-r] hostname:source destination( hostname 為工作站名,source 為路徑名,destination 可為檔名、目錄名或路徑 )。Example :rcp doc:/home/user/file1 file2將工作站 doc 中,位於 /home/user 目錄下之目錄 dir1,複製到目前工作站之目錄下,目錄名稱仍為 dir1。rcp -r doc:/home/user/dir1 .將工作站 iis1 中,位於 /home/user 目錄下之目錄 dir1,複製到目前工作站之目錄下□目錄名稱仍為 dir1。.本地工作站與遠端工作站之間檔案傳輸====================================( 必須擁有遠端工作站之帳號及密碼,才可進行傳輸工作 )執行格式: ftp hostname or ftp ip_addressExample :ftp doc 與遠端工作站 doc ,進行檔案傳輸Name (doc:user-name) : 輸入帳號Password (doc:user-name): 輸入密碼ftp> help 列出 ftp 檔案傳輸,可使用之任何命令。ftp> !ls 列出本地工作站,目前目錄下之所有檔名。ftp> !pwd 列出本地工作站,目前所在之工作目錄位置。ftp> ls 列出遠端工作站目前目錄下之所有檔名。ftp> dir 列出遠端工作站目前目錄下之所有檔名(略同於 UNIX 的 ls -l 指令).ftp> dir . |more 同上,但每頁會暫停(可能不適用 Unix 以外的 ftp)。ftp> pwd 列出遠端工作站目前所在之目錄位置。ftp> cd dir1 更改遠端工作站之工作目錄位置至 dir1 之下。ftp> get file1 將遠端工作站之檔案 file1 ,複製到本地工作站中。ftp> put file2 將本地工作站之檔案 file2 ,複製到遠端工作站中。ftp> mget *.c 將遠端工作站中,副檔名為 c 之所有檔案,複製到本地工作站中。ftp> mput *.txt 將本地工作站中,副檔名為 txt 之所有檔案,複製遠端工作站中。ftp> prompt 切換交談式指令(使用 mput/mget 時不用每個檔案皆詢問yes/no)。ftp> quit 結束 ftp 工作。ftp> bye 結束 ftp 工作。注: 從PC與工作站間的檔案傳輸也可透過在 PC端的 FTP指令進行檔案傳輸,指令用法與上所述大致相同。檔案模式之設定==============.改變檔案或目錄之讀、寫、執行之允許權======================================執行格式:chmod [-R] mode name( name 可為檔名或目錄名;mode可為 3 個 8 位元之數字,或利用ls -l 命令,列出檔案或目錄之讀、寫、執行允許權之文字縮寫。)mode : rwx rwx rwx r:read w:write x:executeuser group other縮寫 : (u) (g) (o)Example :%chmod 755 dir1 將目錄dir1,設定成任何使用者,皆有讀取及執行之權利,但只有擁有者可做修改。%chmod 700 file1將檔案file1,設定只有擁有者可以讀、寫和執行。%chmod o+x file2將檔案file2,增加擁有者可以執行之權利。%chmod g+x file3將檔案file3,增加群組使用者可執行之權利。%chmod o-r file4將檔案file4,除去其它使用者可讀取之權利。.改變檔案或目錄之擁有權========================執行格式:chown [-R] username name ( name 可為檔名或目錄名。)Example :%chown user file1將檔案 file1 之擁有權,改為使用者 user 所有。%chown -R user dir1將目錄 dir1,及其下所有檔案和子目錄之擁有權,改為使用者 user 所有。檢查自己所屬之群組名稱======================執行格式:groups.改變檔案或目錄之群組擁有權============================執行格式:chgrp [-R] groupname name ( name 可為檔名或目錄名 )Example :%chgrp vlsi file1將檔案 file1 之群組擁有權,改為 vlsi 群組。%chgrp -R image dir1將目錄dir1,及其下所有檔案和子目錄,改為 image 群組。.改變檔案或目錄之最後修改時間==============================執行格式:touch name ( name 可為檔案或目錄名稱。)檔案之連結==========同一檔案,可擁有一個以上之名稱,可將檔案做數個連結。執行格式:ln oldname newname ( Hard link )Example :ln file1 file2 將名稱 file2,連結至檔案 file1。執行格式:ln -s oldname newname ( Symblick link )Example :ln -s file3 file4 將名稱 file4,連結至檔案file3。檔案之字串找尋==============執行格式:grep string fileExample :grep abc file1尋找檔案file1中,列出字串 abc 所在之整行文字內容。找尋檔案或命令之路徑====================執行格式:whereis command ( 顯示命令之路徑。)執行格式:which command ( 顯示命令之路徑,及使用者所定義之別名。)執行格式:whatis command ( 顯示命令功能之摘要。)執行格式:find search-path -name filename -print( 搜尋指定路徑下,某檔案之路徑 。)Example :%find / -name file1 -print ( 自根目錄下,尋找檔名為 file1 之路徑。.比較檔案或目錄之內容====================執行格式:diff [-r] name1 name2 ( name1 name2 可同時為檔名,或目錄名稱。)Example :%diff file1 file2比較檔案 file1 與 file2 內,各行之不同處。%diff -r dir1 dir2比較目錄 dir1 與 dir2 內,各檔案之不同處。檔案列印輸出============使用者可用 .login 檔中之 setenv PRINTER,來設定列印資料時的列表機名。printername :sp1 或 sp2 (1005 教室)Example :%setenv PRINTER sp2 設定自 sp2 列印資料。一般檔案之列印==============執行格式:lpr [-Pprinter-name] filename%lpr file1 或 lpr -Psp2 file1自 sp2,列印檔案 file1。執行格式:enscript [-Pprinter-name] filename%enscript file3 或 enscript -Psp1 file3自 sp1 列印檔案 file3。.troff 檔案之列印==================執行格式:ptroff [-Pprinter-name] [-man][-ms] filename%ptroff -man /usr/local/man/man1/ptroff.1以 troff 格式,自 Apple laser writer 列印 ptroff 命令之使用說明。%ptroff -Psp2 -man /usr/man/man1/lpr1以 troff 格式,自 sp2 列印 lpr 命令之使用說明。列表機控制命令==============.檢查列表機狀態,及列印工作順序編號和使用者名稱================================================執行格式:lpq [-Pprinter -name]%lpq 或 lpq -Psp1檢查 sp1 列表機之狀態。.刪除列表機內之列印工作 ( 使用者僅可刪除自己的列印工作 )========================執行格式:lprm [-Pprinter -name] username 或 job number%lprm user 或 lprm -Psp1 user刪除 sp1 中,使用者 user 的列印工作,此時使用者名稱必須為 user。%lprm -Psp2 456刪除 sp2 編號為 456 之列印工作。Job 之控制===========UNIX O.S.,可於 foregrourd 及 background 同時處理多個 process。一般使用者執行命令時,皆是在 foreground 交談式地執行 process,亦可將 process置於 background 中,以非交談式來執行 process。.檢視系統之 process====================執行格式:ps [-aux]Example:%ps 或 ps -x (檢視系統中,屬於自己的 process。)%ps -au (檢視系統中,所有使用者的 process。)%ps -aux (檢視系統中,包含系統內部,及所有使用者的 process。).結束或終止 process====================執行格式:kill [-9] PID ( PID 為利用 ps 命令所查出之 process ID。)Example:%kill 456 或 kill -9 456終止 process ID 為 456 之 process。.在 background 執行 process 的方式===================================執行格式:command & (於 command 後面加入一 "&" 符號即可。)Example:%cc file1.c &將編譯 file1.c 檔案之工作,置於 background 執行。執行格式:按下 "Control Z" 鍵,暫停正在執行的 process。鍵入 "bg" 命令,命令,將所暫停的 process,置入 background 中繼續執行。Example:%cc file2.c^ZStopped%bg.檢視正在 background 中執行的 process======================================執行格式:jobs.結束或終止在 background 中的 process======================================執行格式:kill %n(n 為利用 "jobs" 命令,所檢視出的 background job 編號)Example:%kill % 終止在 background 中的第一個 job。%kill %2 終止在 background 中的第二個 job。shell varialbe==============.檢視 shell variable 之設定值==============================執行格式:set 檢視所有 shell variable 之設定值。%set執行格式:echo $variable-name 顯示指定的 shell variable 之設定值。%echo $PRINTERsp1.設定 shell variable=====================執行格式:set var = valueExample:%set term=vt100設定 shell variable "term" 為 VT100 終端機之型式。.刪除 shell variable=====================執行格式:unset varExample:%unset PRINTER刪除 shell variable "PRINTER" 之設定值。environment variable=====================.檢視 environment variable 之設定值====================================執行格式:setenv 檢視所有 environment variable 之設定值。Example: %setenv執行格式:echo $NAME 顯示指定的 environment variable "NAME" 之設定值。Example:%echo $PRINTER顯示 environment variable "PRINTER" 列表機名稱之設定值。.設定 environment variable===========================執行格式:setenv NAME wordExample:%setenv PRINTER sp1設定 environment variable "PRINTER" 列表機名稱為 sp1。.刪除 environment variable===========================執行格式:unsetenv NAMEExample:%unsetenv PRINTER刪除 environment variable "PRINTER" 列表機名稱之設定值。alias=====.檢視所定義的命令之 alias==========================執行格式: alias 檢視自己目前定義之所有命令,及所對應之 alias 名稱。執行格式: alias name 檢視指定之 alias 名稱所定義之命令。Example:%alias dir (檢視別名 dir 所定義之命令)ls -atl.定義命令之 alias==================執行格式: alias name 'command line'Example:% alias dir 'ls -l'將命令 "ls - l" 定義別名為 dir。.刪除所定義之 alias====================執行格式: unalias nameExample:%unalias dir (刪除別名為 dir 之定義。)%unalias * (刪除所有別名之設定。)history=======.設定命令記錄表之長度======================執行格式: set history = nExample:%set history = 40設定命令記錄表之長度為 40 (可記載執行過之前面 40 個命令)。.檢視命令記錄表之內容======================執行格式: history.使用命令記錄表================執行格式: !!Example: %!! (重覆執行前一個命令)執行格式: !n ( n 為命令記錄表之命令編號。)Example: %!5 ( 執行命令記錄表中第五個命令。)執行格式: !string ( 重覆前面執行過以 string 為起始字元之命令。)Example: %!cat ( 重覆前面執行過,以 cat 為起始字元之命令。).顯示前一個命令之內容======================執行格式: !!:p.更改前一命令之內容並執行之============================執行格式: ^oldstring ^newstring將前一命令中 oldstring 的部份,改成 newstring,並執行之。Example:%find . -name file1.c -print^file1.c^core%find . -name core -print注:檔案 core 為執行程式或命令發生錯誤時,系統所產生的檔案。作為偵錯(debug)之□,因其所佔空間極大,通常將之刪除。資料之壓縮==========為了避免不常用的檔案或資料,佔用太大的磁碟空間,請使用者將之壓縮。欲使用壓縮過的檔案或資料前,將之反壓縮,即可還原成原來之資料型式。凡是經過壓縮處理之檔案,會在檔名後面附加 " .Z " 之字元,表示此為一壓縮檔案。.壓縮資料==========執行格式:compress filename 壓縮檔案執行格式:compressdir directory-name 壓縮目錄.解壓縮還原資料================執行格式:uncompress filename 反壓縮檔案執行格式:uncompressdir directory-name 反壓縮目錄pipe-line 之使用================執行格式:command1 | command2將 command1 執行結果,送到 command2 做為 command2 的輸入。Example:%ls -Rl | more以分頁方式,列出目前目錄下所有檔案,及子目錄之名稱。%cat file1 | more以分頁方式,列出檔案 file1 之內容。I/O control===========.標準輸入之控制================執行格式:command-line < file將 file 做為 command-line 之輸入。Example:%mail -s "mail test" user@iis.sinica.edu.tw < file1將檔案 file1 當做信件之內容,Subject 名稱為 mail test,送給收信人。.標準輸出之控制================執行格式:command > filename將 command 之執行結果,送至指定的 filename 中。Example: %ls -l > list將執行 "ls -l" 命令之結果,寫入檔案 list 中。執行格式:command >! filename同上,若 filename 之檔案已經存在,則強迫 overwrite。Example: %ls -lg >! list將執行 "ls - lg" 命令之結果,強迫寫入檔案 list 中。執行格式:command >& filename將 command 執行時,螢幕上所產生的任何訊息,寫入指定的 filename 中。Example: %cc file1.c >& error將編譯 file1.c 檔案時,所產生之任何訊息,寫入檔案 error 中。執行格式:command >> filename將 command 執行結果,附加(append)到指定的 filename 中。Example: %ls - lag >> list將執行 "ls - lag" 命令之結果,附加(append)到檔案 list 中。執行格式:command >>& filename將 command 執行時,螢幕上所產生的任何訊息,附加於指定的 filename中。Example: %cc file2.c >>& error將編譯 file2.c 檔案時,螢幕所產生之任何訊息,附加於檔案 error 中。檢視系統中的使用者:===================執行格式: who 或 finger執行格式: w執行格式: finger username or finger username@domainname改變自己的 username 進入其他使用者的帳號,擁有其使用權利。=========================================================執行格式: su usernameExample:%su user 進入使用者 user 之帳號passwrod: 輸入使用者 user 之密碼檢視 username:==============執行格式: who am i 檢視 login 時,自己的 username。執行格式: whoami 檢視目前的 username。若已執行過 "su"命令(switch user),則顯示出此 user 之 username。檢視目前繫上所有工作站的使用者:===============================執行格式: rusers => 結束與某工作站上的使用者交談:=========================執行格式: talk username@hostname 或 talk username@ip_addressExample:1. 可先利用 rusers 指令檢視網路上的使用者2. 假設自己的帳號是 u84987 ,在工作站 indian 上使用,現在想要與 doc 上的u84123 交談。%talk u84123@doc ==> 此時螢幕上將會出現等待畫面在對方(u84123)螢幕上將會出現下列訊息Message from Talk_Daemon@Local_host_name at xx:xxtalk: connection requested by u84987@indiantalk: respond with: talk u84987@indian此時對方(u84123) 必須執行 talk u84987@indian 即可互相交談。最後可按結束。檢查遠端電腦系統是否正常========================執行格式:ping hostname 或 ping IP-AddressExample:%ping doc電子郵件(E-mail)的使用簡介==========================本系之 E-mail address 為 ice.ntnu.edu.tw..將檔案當做 E-mail 的內容送出=============================執行格式:mail -s "Subject-string" username@address < filename%mail -s "program" user < file.c將 file.c 當做 mail 的內容,送至 user, subject name 為 program。..傳送 E-mail 給本系使用者========================執行格式:mail username%mail user..傳送 E-mail 至 外地====================執行格式: mail username@receiver-addressExample%mail paul@gate.sinica.edu.twSubject : mail test::鍵入信文內容::按下 "Control D" 鍵或 " . " 鍵結束信文。連按兩次 "Control C" 鍵,則中斷工作,不送此信件。Cc:( Carbon copy : 複製一份信文,給其他的收信人 )..檢查所傳送之 E-mail 是否送出,或滯留於本所之郵件伺服站中=========================================================執行格式:/usr/lib/sendmail -bp( 若螢幕顯示為 "Mail queue is empty" 之訊息,表示 mail 已送出。若為其它錯誤訊息,表示 E-mail 因故尚未送出。)..讀取信件=========執行格式: mail常用指令如下:cd [directory] chdir to directory or home if none givend [message list] delete messagesh print out active message headersm [user list] mail to specific usersn goto and type next messagep [message list] print messagesq quit, saving unresolved messages in mboxr [message list] reply to sender (only) of messagesR [message list] reply to sender and all recipients of messagess [message list] file append messages to filet [message list] type messages (same as print)u [message list] undelete messagesv [message list] edit messages with display editorw [message list] file append messages to file, without from linex quit, do not change system mailboxz [-] display next [previous] page of headers! shell escape檔案編輯器 vi 之使用方法簡介============================vi、celvis(cvi) 是在工作站上被廣大使用的中英文編輯軟體。對初學者而言,常因其特殊的使用方法,而不得其門而入;對已經在使用 vi 的使用者來說,也常見因對 vi 的不熟悉或不夠了解,而無法發揮出 vi 強大的編輯能力,以下將介紹 vi 之使用方法簡介。..本文內容大綱=============進入 vi離開 vi輸入模式如何進入輸入模式如何離開輸入模式指令模式遊標的移動視窗的移動刪除、複製及修改指令介紹(delete、change、yank)刪除與修改(delete、replace)搬移與複製(delete/put、yank/put)指令重覆取消前一動作(undo)字串搜尋資料的連線與分行環境的設定ex 指令其它方面中文編輯恢復編輯時被中斷的檔案編輯多個檔案vi 是 visual editor 的縮寫,是 UNIX 所提供的編輯器之一。它提供使用者一個視窗的編輯環境,在此視窗下,使用者可編輯所要的檔案。..進入vi=======直接執行 vi編輯程式即可:%vi test此刻螢幕上會出現 vi 的編輯視窗,同時 vi 會將檔案複製一份至記憶體中的緩衝區 (buffer) 。 vi會保留在磁碟中的檔案不變,而先對緩衝區的檔案作編輯,編輯完成後,使用者可決定是否要取代原來舊有的檔案。..離開vi=======若在輸入模式下,則先利用《ESC》進入指令模式,而後即可選用下列指令離開vi。:q! 離開vi,並放棄剛在緩衝區內編輯的內容。:wq 將緩衝區內的資料寫入磁碟中,並離開vi。:ZZ 同wq。:x 同wq。:w 將緩衝區內的資料寫入磁碟中,但並不離開vi。:q 離開vi,若檔案被修改過,則會被要求確認是否放棄修改的內容。此指令可與:w 配合使用。..vi 的操作模式==============vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)。當使用者進入 vi 後,即處在指令模式下,此刻鍵入之任何字元皆被視為指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入模式。..輸入模式=========如何進入輸入模式a (append) 由遊標之後加入資料。A 由該行之末加入資料。i (insert) 由遊標之前加入資料。I 由該行之首加入資料。o (open) 新增一行於該行之下供輸入資料之用。O 新增一行於該行之上供輸入資料之用。如何離開輸入模式《ESC》 結束輸入模式。..指令模式=========遊標之移動h 向左移一個字元。j 向上移一個字元。k 向下移一個字元。l 向右移一個字元。0 移至該行之首$ 移至該行之末。^ 移至該行的第一個字元處。H 移至視窗的第一列。M 移至視窗的中間那列。L 移至視窗的最後一列。G 移至該檔案的最後一列。+ 移至下一列的第一個字元處。- 移至上一列的第一個字元處。( 移至該句之首。 (注一)) 移至該句之末。{ 移至該段落之首。 (注二)} 移至該段落之末。nG 移至該檔案的第 n 列。n+ 移至遊標所在位置之後的第 n 列。n- 移至遊標所在位置之前的第 n 列。 會顯示該行之行號、檔案名稱、檔案中最末行之行號、遊標所在行號佔總行號之百分比。注一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。注二:段落(paragraph)在vi中是指以空白行隔開的文字。..視窗的移動=========== 視窗往下卷一頁。 視窗往上卷一頁。 視窗往下卷半頁。 視窗往上卷半頁。 視窗往下卷一行。 視窗往上卷一行。..刪除、複製及修改指令介紹 (此單元較少使用)=========================d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:Operator + Scope = command(運運算元) (範圍)運運算元:d 刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。y 將資料(字組、行列、句子或段落)複製到緩衝區。p 放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資料放置於遊標所在位置之行列下。c 修改(change)指令,類似delete與insert的組和。刪除一個字組、句子等之資料,並插入新鍵資料。範圍:e 由遊標所在位置至該字串的最後一個字元。w 由遊標所在位置至下一個字串的第一個字元。b 由遊標所在位置至前一個字串的第一個字元。$ 由遊標所在位置至該行的最後一個字元。0 由遊標所在位置至該行的第一個字元。) 由遊標所在位置至下一個句子的第一個字元。( 由遊標所在位置至該句子的第一個字元。{ 由遊標所在位置至該段落的最後一個字元。} 由遊標所在位置至該段落的第一個字元。整行動作dd 刪除整行。D 以行為單位,刪除遊標後之所有字元。cc 修改整行的內容。yy yank整行,使遊標所在該行復制到記憶體緩衝區。..刪除與修改===========x 刪除遊標所在該字元。X 刪除遊標所在之前一字元。dd 刪除遊標所在該行。r 用接於此指令之後的字元取代(replace)遊標所在字元。如: ra 將遊標所在字元以 a 取代之。R 進入取代狀態,直到《ESC》為止。s 刪除遊標所在之字元,並進入輸入模式直到《ESC》。S 刪除遊標所在之該行資料,並進入輸入模式直到《ESC》。..搬移與複製==========利用 delete 及 put 指令可完成資料搬移之目的。利用 yank 及 put 指令可完成資料複製之目的。yank 和 delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令可將緩衝區內的資料複製到螢幕上。例:搬移一行 .在該行執行 dd.遊標移至目的地.執行 p複製一行 .在該行執行 yy.遊標移至目的地.執行 p..指令重複=========在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n次。例:刪除10行 .10dd複製10行 .10yy.遊標移至目的地.p指標往下移10行 .10j..取消前一動作(Undo)===================即復原執行上一指令前的內容。u 恢復最後一個指令之前的結果。U 恢復遊標該行之所有改變。..搜尋=====在vi中可搜尋某一字串,使遊標移至該處。/字串 往遊標之後尋找該字串。?字串 往遊標之前尋找該字串。n 往下繼續尋找下一個相同的字串。N 往上繼續尋找下一個相同的字串。..資料的連線===========J 句子的連線。將遊標所在之下一行連線至遊標該行的後面。若某行資料太長亦可將其分成兩行,只要將遊標移至分開點,進入輸入模式(可利用 a、i等指令)再按《Enter》即可。..環境的設定===========:set nu 設定資料的行號。:set nonu 取消行號設定。:set ai 自動內縮。:set noai 取消自動內縮。自動內縮(automatic indentation)在編輯檔案或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自動內縮的功能,用下例解釋之:.vi test.(進入編輯視窗後)this is the test for auto indent《Tab》start indent ← :set ai (設自動內縮)《Tab》data《Tab》data《Tab》data ← :set noai (取消自動內縮)the end of auto indent..注: 可刪除《Tab》字元。..ex指令=======讀寫資料:w 將緩衝區的資料寫入磁碟中。:10,20w test 將第10行至第20行的資料寫入test檔案。:10,20w>>test 將第10行至第20行的資料加在test檔案之後。:r test 將test檔案的資料讀入編輯緩衝區的最後。刪除、複製及搬移:10,20d 刪除第10行至第20行的資料。:10d 刪除第10行的資料。:%d 刪除整個編輯緩衝區。:10,20co30 將第10行至第20行的資料複製至第30行之後。:10,20mo30 將第10行至第20行的資料搬移至第30行之後。字串搜尋與取代s(substitute)指令可搜尋某行列範圍。g(global)指令則可搜尋整個編輯緩衝區的資料。s指令以第一個滿足該條件的字串為其取代的物件,若該行有數個滿足該條件的字串,也僅能取代第一個,若想取代所有的字串則需加上g引數。:1,$s/old/new/g 將檔案中所有的『old』改成『new』。:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。:%s/old/new/g 將編輯緩衝區中所有的『old』改成『new』。..恢復編輯時被中斷的檔案=======================在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未被寫回磁碟時,當再度回到系統,執行下列指令即可回覆中斷前的檔案內容。%vi -r filename..編輯多個檔案=============vi亦提供同時編輯多個檔案的功能,方法如下:%vi file1 file2 ..當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後再利用 『:n』載入下一個檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940170/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Unix下常見shell簡介(轉)
- Unix domain socket 簡介AI
- Linux/UNIX命令dd簡介Linux
- 簡單的介紹UNIX下的常用編輯工具VI(轉)
- unix的AWK命令介紹(轉)
- unix口令檔案介紹(轉)
- UNIX 系統中的文字操作簡介
- 基本UNIX命令集介紹(轉)
- 關於UNIX及類UNIX下壓縮和解壓的命令簡介
- Hook簡介 (轉)Hook
- NFS簡介(轉)NFS
- gcc 簡介(轉)GC
- PGP 簡介(轉)
- Servlet簡介 (轉)Servlet
- CMM簡介 (轉)
- MapX 簡介 (轉)
- xCBL簡介 (轉)
- WBEM簡介 (轉)
- [轉]SSH框架簡介框架
- CVS 簡介(轉)
- 德爾菲法簡介(轉)
- Telnet簡介(轉)
- TurboLinux簡介(轉)Linux
- QFD簡介(轉載)
- C++簡介 (轉)C++
- Bioperl的簡介 (轉)
- ODAC簡介(續) (轉)
- Web Services 簡介 (轉)Web
- crontab命令簡介(轉)
- (轉)onWindowFocusChanged觸發簡介
- powermt 命令簡介(轉載)
- Juniper防火牆簡介(轉)防火牆
- 轉載:Oracle RAC簡介Oracle
- DBI模組方法簡介(轉)
- Infiniband簡介_轉摘
- CVS使用簡介(轉)
- oracle Export and Import 簡介(轉)OracleExportImport
- IPC和管道簡介(轉)