unix命令大全(ubuntu)
[編輯] 透過 PC 登入工作站
執行格式:telnet hostname (在 dos 下執行) telnet ip-address
Example:
telnet doc telnet 140.122.77.120
注: 可利用指令 arp hostname 或 arp domain_name 查詢 ip_address
[編輯] 登入步驟
login : _______ > 輸入 username
password : _______ > 輸入密碼
[編輯] 登出步驟
% logout 或 % exit 或 % 或按[Ctrl-D]
[編輯] 更改帳號密碼
% yppasswd > 執行後將會出現下列資訊 Changing NIS password for user on ice.
Old password: ______ > 輸入舊密碼
New password: ______ > 輸入新密碼(最好6-8字,英文字母與數字混合)
Retype new password: ______ > 再輸入一次密碼
[編輯] 線上幫助指令說明
執行格式: man command-name
Example: % man ls
[編輯] 進入遠端電腦系統
執行格式:rlogin hostname [-1 username]
Example: fdfd %rlogin doc remote login 進入工作站 doc 中。
%rlogin doc -l user 使用 user 帳號進入工作站 doc 中。
執行格式:telnet hostname 或 telnet IP address
Example:
%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 destination
Example:
cp file1 file2 將檔案 file1 複製成 file2
cp 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 destination
Example:
mv file1 file2 將檔案 file1,更改檔名為 file2。
mv file1 dir1 將檔案 file1,移到目錄 dir1下,檔名仍為 file1。
mv dir1 dir2 若目錄 dir2 存在,則將目錄 dir1,及其所有檔案和子目錄,移到目錄 dir2 下,新目錄名稱為 dir1。若目錄 dir2 不存在,則將dir1,及其所有檔案和子目錄,更改為目錄 dir2。1
[編輯] 建立新目錄
執行格式: mkdir directory-name
Exmaple :
mkdir dir1 建立一新目錄 dir1。
[編輯] 刪除目錄
執行格式: rmdir directory-name 或 rm -r directory-name
Example :
rmdir dir1 刪除目錄 dir1,但 dir1 下必須沒有檔案存在,否則無法刪除。
rm -r dir1 刪除目錄 dir1,及其下所有檔案及子目錄。
[編輯] 刪除檔案
執行格式: rm filename (filename 可為檔名,或檔名縮寫符號。)
Example :
rm file1 刪除檔名為 file1 之檔案。
rm file? 刪除檔名中有五個字元,前四個字元為file 之所有檔案。
rm f* 刪除檔名中,以 f 為字首之所有檔案。
rm -rf file 刪除名為file的資料夾及其裡面的內容
[編輯] 檔名的縮寫符號
? 代表檔名稱中之單一字元。
代表檔名稱中之一字串。
[編輯] 列出目前所在之目錄位置
執行格式: pwd
[編輯] 檢視檔案內容
執行格式: cat filename
Example :
cat file1 以連續顯示方式,檢視檔名 file1 之內容。
執行格式: more filename 或 cat filename | more
Example :
more file1 以分頁方式,檢視檔名 file1 之內容。 cat file1 | more 同上。
[編輯] 檢視目錄所佔磁碟容量
執行格式: du [-s] directory
Example :
du dir1 顯示目錄 dir1 的總容量及其次目錄的容量(以 k byte 為容量)。
du -s dir1 顯示目錄 dir1 的總容量。
[編輯] 檢視自己的 disk quota 使用狀況
disk quota : 工作站磁碟空間的使用限額。
執行格式: quota -v
Example :
quota -v 將會顯示下列資訊 Filesystem usage quota limit timeleft files quota limit timelef. /home/ice/u01 9344 8192 12288 1.9 days 160 0 0
欄位解說:
usage : 目前的磁碟用量。
quota : 你的磁碟使用額度。當你的 usage 超過 quota 時,雖然可以繼續使用,但是必須七天之內降到 quota 以下,否則即使用量沒有超 limit(最高限額),也無法再寫入或複製任何檔案。
limit : 最高使用額度。當你的 usage 達到 limit 時,無法再寫入或複製任何檔案。
[編輯] 檔案傳輸
[編輯] 拷貝檔案或目錄至遠端工作站
執行格式: rcp [-r] source hostname:destination
source 可為檔名、目錄名或路徑,hostname 為工作站站名,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 目錄下之檔案file1,拷貝到目前工作站之目錄下,檔名改為file2。
rcp -r doc:. 將工作站 doc 中,位於 /home/user 目錄下之目錄 dir1,拷貝到目前工作站之目錄下目錄名稱仍為 dir1。
[編輯] 本地工作站與遠端工作站之間檔案傳輸
( 必須擁有遠端工作站之帳號及密碼,才可進行傳輸工作 )
執行格式: ftp hostname or ftp ip_address
Example :
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:execute
user 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 file
Example :
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
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 ^Z Stopped %bg
[編輯] 檢視正在 background 中執行的 process
執行格式:jobs
[編輯] 結束或終止在 background 中的 process
執行格式:kill %n
(n 為利用 “jobs” 命令,所查看出的 background job 編號)
Example:
%kill % 終止在 background 中的第一個 job。
%kill %2 終止在 background 中的第二個 job。
[編輯] shell variable
[編輯] 檢視 shell variable 之設定值
執行格式:set 檢視所有 shell variable 之設定值。
%set
執行格式:echo $variable-name 顯示指定的 shell variable 之設定值。
%echo $PRINTER0000 sp1
[編輯] 設定 shell variable
執行格式:set var value
Example:
%set termvt100 設定 shell variable “term” 為 VT100 終端機之型式。
[編輯] 刪除 shell variable
執行格式:unset var
Example:
%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 word
Example:
%setenv PRINTER sp1
設定 environment variable “PRINTER” 印表機名稱為 sp1。
[編輯] 刪除 environment variable
執行格式:unsetenv NAME
Example:
%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 name
Example:
%unalias dir (刪除別名為 dir 之定義。)
%unalias * (刪除所有別名之設定。)
[編輯] history
[編輯] 設定命令記錄表之長度
執行格式: set history n
Example:
%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 壓縮目錄
[編輯] 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"
將檔案 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 進入其他使用者的帳號,擁有其使用權利。
執行格式: su username
Example:
%su user 進入使用者 user 之帳號
passwrod: 輸入使用者 user 之密碼
[編輯] 檢視 username
執行格式: whoami 檢視 login 時,自己的 username。
執行格式: whoami 檢視目前的 username。若已執行過 “su”命令tch user),則顯示出此 user 之 username。
[編輯] 檢視目前本地所有工作站的使用者
執行格式: rusers > 結束
[編輯] 與某工作站上的使用者交談
執行格式: talk
Example:
1. 可先利用 rusers 指令檢視網路上的使用者
2. 假設自己的帳號是 u84987 ,在工作站 indian 上使用,現在想要與 doc 上的u84123 交談。
%talk [email protected] > 此時螢幕上將會出現等待畫面
在對方(u84123)螢幕上將會出現下列資訊
Message from [email protected]_host_name at xx:xx
talk: connection requested by [email protected]
talk: respond with: talk [email protected]
此時對方(u84123) 必須執行 talk [email protected] 即可互相交談。最後可按結束。
[編輯] 檢查遠端電腦系統是否正常
執行格式:ping hostname 或 ping IP-Address Example: %ping doc
[編輯] 電子郵件(E-mail)的使用簡介
[編輯] 將檔案當做 E-mail 的內容送出
執行格式:mail -s “Subject-string” [email protected] < filename
Example
%mail -s "program" user < file.c 將 file.c 當做 mail 的內容,送至 user, subject name 為 program。
(實際上,在Ubuntu中並不能將郵件傳送到郵箱,例如163郵箱,而是在/var/mail資料夾下面生成了一個以當前使用者名稱為檔名的檔案,並在其中指出了錯誤資訊。)
[編輯] 傳送 E-mail 給本地使用者
執行格式:mail username %mail user
[編輯] 傳送 E-mail 至 外地
執行格式: mail [email protected]
Example
%mail [email protected] Subject : 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 given
d [message list] delete messages
h print out active message headers
m [user list] mail to specific users
n goto and type next message
p [message list] print messages
q quit, saving unresolved messages in mbox
r [message list] reply to sender (only) of messages
R [message list] reply to sender and all recipients of messages
s [message list] file append messages to file
t [message list] type messages (same as print)
u [message list] undelete messages
v [message list] edit messages with display editor
w [message list] file append messages to file, without from line
x quit, do not change system mailbox
z [-] 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會保留在磁碟中的檔案不變,而先對緩衝區的檔案作編輯,編輯完成後,使用者可決定是否要取代原來舊有的檔案。
——————————————————————————–
– 作者:itvue – 釋出時間:2005-5-11 10:17:42
–
[編輯] 離開vi
若在輸入模式下,則先利用《ESC》進入指令模式,而後即可選用下列指令
離開vi。
:q! 離開vi,並放棄剛在緩衝區內編輯的內容。
:wq 將緩衝區內的資料寫入磁碟中,並離開vi。
:ZZ 同wq。
:x 同wq。
:w 將緩衝區內的資料寫入磁碟中,但並不離開vi。
:q 離開vi,若檔案被修改過,則會被要求確認是否放棄修改的內容。
此指令可與:w 配合使用。
[編輯] vi 的操作模式
vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)。當使用者進入 vi 後,即處在指令模式下,此刻鍵入之任何字元皆被視為指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入模式。
[編輯] 輸入模式
如何進入輸入模式
l a (append) 由游標之後加入資料。
l A 由該行之末加入資料。
l i (insert) 由游標之前加入資料。
l I 由該行之首加入資料。
l o (open) 新增一行於該行之下供輸入資料之用。
l O 新增一行於該行之上供輸入資料之用。
如何離開輸入模式
l 《ESC》 結束輸入模式。
[編輯] 指令模式
游標之移動(以下命令區分大小寫)
l h 向左移一個字元。
l J 向上移一個字元。
l K 向下移一個字元。
l L 向右移一個字元。
l ^移至該行之首
l $ 移至該行之末。
l H 移至視窗的第一列。
l M 移至視窗的中間那列。
l L 移至視窗的最後一列。
l G 移至該檔案的最後一列。
l + 移至下一列的第一個字元處。
l - 移至上一列的第一個字元處。
l ( 移至該句之首。 (注一)
l ) 移至該句之末。
l { 移至該段落之首。 (注二)
l } 移至該段落之末。
l nG 移至該檔案的第 n 列。
l n+ 移至游標所在位置之後的第 n 列。
l n-移至游標所在位置之前的第 n 列。
l 會顯示該行之行號、檔名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
注一:句子(sentence)在vi中是指以‘!’、‘.’或‘?’結束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔開的文字.
[編輯] 視窗的移動
l ^F 視窗往下卷一頁(front)
l ^B 視窗往上卷一頁(back)
l ^D 視窗往下卷半頁(down)
l ^U 視窗往上卷半頁(up)
l ^E 視窗往下卷一行
l ^Y 視窗往上卷一行
^表示Ctrl
[編輯] 刪除、複製及修改指令介紹 (此單元較少使用)
d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
Operator + Scope command
(運運算元) (範圍)
運運算元:
l d 刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
l y 將資料(字組、行列、句子或段落)複製到緩衝區。
l p 放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資料放置於游標所在位置之行列下。
l c 修改(change)指令,類似delete與insert的組和。刪除一個字組、句子等之資料,並插入新鍵資料。
範圍:
l e 由游標所在位置至該字串的最後一個字元。
l w 由游標所在位置至下一個字串的第一個字元。
l b 由游標所在位置至前一個字串的第一個字元。
l $ 由游標所在位置至該行的最後一個字元。
l 由游標所在位置至該行的第一個字元。
l ) 由游標所在位置至下一個句子的第一個字元。
l ( 由游標所在位置至該句子的第一個字元。
l { 由游標所在位置至該段落的最後一個字元。
l } 由游標所在位置至該段落的第一個字元。
整行動作:
l dd 刪除整行。
l D 以行為單位,刪除游標後之所有字元。
l cc 修改整行的內容。
l yy yank整行,使游標所在該行復制到記憶體緩衝區。
[編輯] 刪除與修改
l x 刪除游標所在該字元。
l X 刪除游標所在之前一字元。
l dd 刪除游標所在該行。
l r 用接於此指令之後的字元取代(replace)游標所在字元。如: ra 將游標所在字元以 a 取代之。
l R 進入取代狀態,直到《ESC》為止。
l s 刪除游標所在之字元,並進入輸入模式直到《ESC》。
l S 刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
[編輯] 移動與複製
利用 delete 及 put 指令可完成資料移動之目的。
利用 yank 及 put 指令可完成資料複製之目的。
yank 和 delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令可將緩衝區內的資料複製到螢幕上。
例:
移動一行 .在該行執行 dd
.游標移至目的地
.執行 p
複製一行 .在該行執行 yy
.游標移至目的地
.執行 p
[編輯] 指令重複
在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n次。
例:
刪除10行 .10dd
複製10行 .10yy
指標往下移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’載入下一個檔案。
gedit 編輯器可以開啟多個檔案,並直接編輯
相關推薦
unix命令大全(ubuntu)
登入工作站 [編輯] 透過 PC 登入工作站 執行格式:telnet hostname (在 dos 下執行) telnet ip-address Example: telnet doc telnet 140.122.77.120 注: 可利用指令 arp hostname
MySQL命令大全(轉)
文本文件 提前 密碼 drop 公關部 ons 完整性 備份數據庫 type 常見的MySQL命令大全一、連接MySQL 格式: mysql -h主機地址 -u用戶名 -p用戶密碼 1、例1:連接到本機上的MYSQL。 首先在打開D
window cmd 命令大全 (order)
進程 level nbtstat username 依次 select smb port 多說 命令簡介 cmd是command的縮寫.即命令行 。 運行操作 CMD命令:開始->運行->鍵入cmd或command(在命令行裏可以看到系統版本、文件系統版本)
Linux常用命令大全(二)
Linux常用命令大全(二) cp命令 將原始檔或目錄複製到目標檔案或目錄中 注:如果是目錄,需要使用-r選項 -d 複製時保留檔案連結 -f 如果現存的目標檔案不能開啟,則刪除並重試 -i 在覆蓋目標之前先給出提示 互動式複製 -R,-r 遞迴複製目錄 例子 $cp f
Linux常用命令大全(三)
Linux常用命令大全(三) 檔案型別 普通檔案(文字檔案、資料檔案、可執行的二進位制檔案) 目錄檔案 同上 差別:由成對的“I節點號、檔名”構成的列表 裝置檔案 (字元裝置、塊裝置) 符號連結檔案 路徑名:絕對路徑和相對路徑 檔案連結:硬連結和符號連結(軟連線) 使用者和許可權
Linux常用命令大全(四)
Linux常用命令大全(四) shell的特點 ☆組合新命令 ☆提供了檔名擴充套件字元 ☆直接使用shell的內建命令 ☆靈活地使用資料流 ☆結構化的程式模組 ☆在後臺執行命令 ☆可配置的環境 ☆高階的命令語言 shell的種類 • (1)Bourne shell(簡稱sh) • (2)C shell
從新建資料庫開始——mysql命令大全(上)
基礎 什麼是資料庫(DB)? 將大量資料儲存起來,通過計算機加工而成的可以進行高效訪問的資料集合 什麼是資料庫管理系統(DBMS)? 用來管理資料庫的計算機系統 DBMS的種類? 層次資料庫、關係資料庫
Elasticsearch的DSL操作命令大全(二)
奇葩需求: 1. 按照論壇名稱,對論壇評論總量,1-5月按月聚合 相對應欄位為cmtCnt 按照論壇名稱,對論壇發帖點贊量,1-5月按月聚合 相對應欄位為adtCnt GET xi
Linux基本命令大全(轉)
一、Linux許可權的概念 Linux下有兩種使用者:普通使用者和超級使用者(root) 普通使用者:在linux下做有限的事情; 超級使用者:可以在linux系統下做任何事情,不受限制。 普通使用者的提示符是“$”,超級使用者的命令提示符是“
5_Linux下解壓命令大全(20181229)
Linux下解壓和打包命令大全(20181229) 1、tar 2、zip 3、rar 4、gz 5、tar.gz 和 .tgz 6、bz2 7、tar.bz2 8、bz 9、tar.bz 10、Z 11、
Elasticsearch的DSL操作命令大全(一)
文章目錄前言: 以下執行命令都是基於阿里es提供的kibana。 前言: 以前在伺服器上直接使用curl命令就可以進行es的查詢,後來公司用了阿里的es後,在阿里給的伺服器上執行命令居然會報錯 [[email protected] ~]# curl -
linux常用命令(ubuntu)
保存 執行命令 local oca blog 查看進程 pos linux常用命令 系統啟動 vi [path] vim [path] :q 退出 :wq 保存退出 查看進程 ps ps -aux | grep mem 查看全部含 “mem”的進程 ps –aux
最全的ADB命令行大全(轉)
收集 aps heap free 默認端口 article quick 菜單 noop 基本用法 命令語法 adb 命令的基本語法如下: adb [-d|-e|-s ] 如果只有一個設備/模擬器連接時,可以省略掉 [-d|-e|-s ] 這一部分,直接使用 adb 。 為
Linux(Ubuntu)常用命令(三)
需要 ip地址 useradd 賬號 his word color -a change 查看時間 cal :顯示當前日期。 cal 2018 :顯示全年日歷。/ cal -y 顯示當年日歷。 date :顯示當前時間。 這幾個一般不會用到了解即可。 查
Linux常用命令大全(非常全!!!)(轉)
mkfs 類型 e2fs 樹形 nmb id號 中間 vid path 最近都在和Linux打交道,感覺還不錯。我覺得Linux相比windows比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡linux的原因,比較短小但卻功能強大。我將我了解到的命令列
Linux常用命令大全(非常全!!!)
www. ssa chat opp general 處理器 chmod 常用命令 掃描 最近都在和Linux打交道,感覺還不錯。我覺得Linux相比windows比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡linux的原因,比較短小但卻功能強大。我將我了解
mysql基本操作命令大全(純幹貨)
let not null school tex count mark 文章 映射 list數據 安裝完mysql後我們需要熟悉mysql中的基本操作,本文章主要介紹數據庫和表的增刪改查,以及索引、事務、視圖。一、mysql數據庫和表的創建以及增刪改查 創建和查看數據庫:c
git 命令大全(完整版)
拉取 str 修改版本 xxx 用戶 command 克隆 單個 sage Git 常用命令詳解 Git 是一個很強大的分布式版本控制系統。它不但適用於管理大型開源軟件的源代碼,管理私人的文檔和源代碼也有很多優勢。 1.Git文件操作 $ git help [command
Linux常用命令大全(史無前例的命令大全)
一. linux常用命令 *************************************************** 1.覆蓋拷貝命令 cp -ri 2. a拷貝到b目錄(移動或重新命名) #mv a b mv - move (rename)
Linux命令列與shell指令碼程式設計大全(二)
十一、處理使用者輸入 命令列引數 讀取引數: $0是程式名,$1是第一個引數,$2是第二個引數,以此類推,直到第9個引數$9。當引數個數超過10以後,需要在變數數字周圍加上花括號,如${10},如果輸入到命令列的引數是字串且含有空格,需要使用引號。 #! /bin/bash echo