UNIX常用命令-目錄及檔案操作命令
1.1 ls
[文法]: ls [-RadCxmlnogrtucpFbqisf1] [目錄或檔案......]
[說明]: ls 命令列出指定目錄下的檔案,預設目錄為目前的目錄 ./,預設輸出順序為縱向按字元順序排列。
-R 遞迴地列出每個子目錄的內容
-a 列出所有檔案,包括第一個字元為"."的隱藏檔案
-d 若後面參數是目錄,則只列出目錄名而不列出目錄內容,常與-l選項連
用以顯示目錄狀態。
-C 輸出時多列顯示
-x 橫向按字元順序排列
-m 輸出按流式格式橫向排列,檔案名稱之間用逗號(,)分隔
-l 長列表輸出,顯示檔案詳細資料,每行一個檔案,從左至右依次是:
檔案存模數式 連結數 檔案主 檔案組 檔案位元組數 上次修改時間
其中檔案存模數式用10個字母表示,從左至右的意義如下:
第一個字母表示檔案種類,可以是以下幾種情況:
d 為目錄檔案
l 為連結
b 為塊檔案
c 為字元型檔案
p 為具名管道(FIFO)
- 為普通檔案
後面9個字母分別表示檔案主、同組使用者、其他使用者對檔案的權力,用r表示可讀,w 表示可寫,x 表示可執行。如果是裝置檔案,則在檔案位元組數處顯示:主裝置 從裝置。
-n 與-l選項相同,只是檔案主用數字(即UID)顯示,檔案組用數字
(即GID)表示
-o 與-l選項相同,只是不顯示檔案組
-g 與-l選項相同,只是不顯示檔案主
-r 逆序排列
-t 按時間順序排列而非按名字
-u 顯示時間時使用上次訪問時間而非上次修改時間
-c 顯示時間時使用上次修改i節點時間而非上次修改時間
-p 若所列檔案是目錄檔案,則在其後顯示斜杠(/)
-F 在目錄檔案後加'/',在可執行檔後加'*'
-b 檔案名稱中若有非列印字元,則用八進位顯示該字元
-q 檔案名稱中的列印字元用'?'表示
-i 顯示節點號
-s 顯示檔案長度時使用塊長度而非位元組長度
-f 將後面的參數解釋為目錄並列出其中的每一項
-1 每行僅列一項
[例子]:
ls 列出目前的目錄下的檔案
ls -al /bin 以長列表的形式列出目錄 /bin 下的所有檔案,包括隱藏檔案
1.2 pwd
[文法]: pwd
[說明]: 本命令用於顯示當前的工作目錄
[例子]:
pwd 顯示出當前的工作目錄
1.3 cd
[文法]: cd [目錄]
[說明]:本命令用於改變當前的工作目錄,無參數時使用環境變數$HOME 作為其參數,$HOME 一般為註冊時進入的路徑。
[例子]:
cd 回到註冊進入時的目錄
cd /tmp 進入 /tmp 目錄
cd ../ 進入上級目錄
1.4 mkdir
[文法]: mkdir [-m 模式] [-p] 目錄名
[說明]: 本命令用於建立目錄,目錄的存模數式由掩碼(umask)決定,要求對其父目錄具有寫入權限,目錄的UID和GID為實際UID和GID
-m 按指定存模數式建立目錄
-p 建立目錄時建立其所有不存在的父目錄
[例子]:
mkdir tmp 在目前的目錄下建立子目錄 tmp
mkdir -m 777 /tmp/abc 用所有使用者可讀可寫可執行檔存模數式
建立目錄 /tmp/aaa ,存模數式參看命令 chmod
mkdir -p /tmp/a/b/c 建立目錄 /tmp/a/b/c ,若不存在目錄 /tmp/a
及/tmp/a/b 則建立之
1.5 rmdir
[文法]: rmdir [-p] [-s] 目錄名
[說明]: 本命令用於刪除目錄
-p 刪除所有已經為空白的父目錄
-s 當使用-p 選項時,出現錯誤不提示
[例子]:
rmdir /tmp/abc 刪除目錄 /tmp/abc
rmdir -p /tmp/a/b/c 刪除目錄 /tmp/a/b/c ,若目錄 /tmp/a /b
及/tmp/a 空,則刪除
1.6 cat
[文法]: cat [-u] [-s] [-v[-t] [-e]] 檔案...
[說明]: 顯示和串連一個或多個檔案至標準輸出
-u 無緩衝的輸出(預設為有緩衝輸出)
-s 對不存在的檔案不作提示
-v 顯示出檔案中的非列印字元,控制字元顯示成^n ,n為八位元字,
其他非列印字元顯示成M-x , x 為該字元低7位的8進位數值
-t 在使用-v 選項時,將定位字元(tab) 顯示成 ^I,將換頁符
(formfeed)顯示成 ^ L
-e 在使用-v 選項時,在每一行的行尾顯示 $
[例子]:
cat file 顯示檔案
cat -s -v -e file1 file2 file3 逐個顯示檔案 file1 file2 file3
1.7 head
[文法]: head [-n] [檔案 ...]
[說明]: 將檔案的頭n 行顯示輸出,預設值為 10 行,顯示多個檔案時,在每個檔案的前面加上 ==> 檔案名稱 <==
[例子]:
head -9999 file1 file2 顯示檔案 file1 和 file2 的頭 9999 行
1.8 more
[文法]: more [-cdflrsuw] [- 行數] [+ 行數] [+ / 模式 ] [ 檔案 ... ]
[說明]: 將檔案顯示在終端上,每次一屏,在左下部顯示 --more--,若是從檔案讀出而非從管道,則在後面顯示百分比,表示已顯示的部分,按斷行符號鍵則上滾一行,按空格鍵則上滾一屏,未顯示完時可以使用more 命令中的子命令。
-c 顯示檔案之前先清屏
-d 當輸錯命令時顯示錯誤資訊而不是響鈴(bell)
-f 不摺疊顯示長的行
-l 不將分頁控制符(CTRL D)當作頁結束
-r 一般情況下,more 不顯示控制符,本選項使more 顯示控制符,
例如,將 (CTRL C) 顯示成 ^ C
-s 將多個空行轉換成一個空行顯示
-u 禁止產生底線序列
-w 一般情況下 more 顯示完後立即推出,本選項在顯示完後作提
示,敲任意鍵後推出
-n 行數 指定每屏顯示的行數
+ 行號 從指定行號開始顯示
+/模式 在檔案中搜尋指定模式,從模式出現行的上兩行開始顯示 檔案未顯示完時,可以使用more 命令中的子命令,命令中除了! 和 / 以外均不回顯,也不用敲斷行符號,當命令破壞 more 提示行時,可用退格鍵恢複提示行。在以下子命令操作中,i 表示數字,預設值為 1。
i 空格 上滾一屏多 i 行
i 斷行符號 上滾 i 行
i CTRL+D i 預設時上滾 11 行,否則上滾 i 行
id i 預設時上滾 11 行,否則上滾 i 行
iz i 預設時上滾一屏,否則定義每屏為 i 行
is 跳過 i 行後顯示一屏
if 跳過 i 屏後顯示一屏
i CTRL+B 跳回 i 屏後顯示一屏
b 跳回 一屏後顯示一屏
q 或 Q 推出 more
= 顯示當前行號
v 從當前行開始編輯當前檔案編輯器由環境變數
$EDITOR定義
h 顯示協助資訊
i / 模式 向前搜尋,直至模式的第 i 次出現 , 從該行的上 兩行開始顯示一屏
in 向前搜尋,直至上一模式的第 i 次出現 , 從該行 的上兩行開始顯示一屏
單引號 回到上次搜尋的出發點,若無搜尋則回到開始位置
! 命令 啟用一個sh 去執行指定的命令
i : n 跳到後面第 i 個檔案,若不存在則跳到最後一個檔案
:f 顯示當前檔案名稱和行號
:q 或 :Q 推出 more
. (點) 重複上次命令
[ 例子]:
more -c +50 file 清屏後,從第50行開始顯示檔案 file
more -s -w file1 file2 file3 顯示檔案 file1 file2 file3
1.9 cp
[文法]: cp [ -p ] [ -r ] 檔案 1 [ 檔案 2 ...] 目標
[說明]: 將檔案1(檔案2 ...)拷貝到目標上,目標不能與檔案同名, 若目標是檔案名稱,則拷貝的檔案只能有一個,若目標是目錄, 則拷貝的檔案可以有多個,若目標檔案不存在,則建立這個檔案,若存在,則覆蓋其以前的內容,若目標是目錄,則將檔案拷貝到這個目錄下。
- i 在覆蓋已存在檔案時作提示,若回答 y 則覆蓋,其他則中止
- p 不僅拷貝檔案內容,還有修改時間,存模數式,存取控製表, 但不拷貝
UID 及 GID
- r 若檔案名稱為目錄,則拷貝目錄下所有檔案及子目錄和它們的檔案,此時
目標必須為目錄
[例子]:
cp file1 file2 將檔案 file1 拷貝到檔案 file2
cp file1 file2 /tmp 將檔案 file1 和檔案 file2 拷貝到目錄 /tmp 下
cp -r /tmp /mytmp 將目錄 /tmp 下所有檔案及其子目錄拷貝至目錄/mytmp
1.10 mv
[文法]: mv [-f] [-i] 檔案1 [檔案2...] 目標
[說明]: 將檔案移動至目標,若目標是檔案名稱,則相當於檔案改名
- i 在覆蓋已存在檔案時作提示,若回答 y 則覆蓋,其他則中止
- f 覆蓋前不作任何提示
[例子]:
mv file1 file2 將檔案 file1 改名為 file2
mv file1 file2 /tmp 將檔案 file1 和檔案 file2 移動到目錄 /tmp 下
1.11 rm
[文法]: rm [-f] [-i] 檔案...
或 rm -r [-f] [-i] 目錄名... [檔案]
[說明]: 用來刪除檔案或目錄
- f 刪除檔案時不作提示
- r 遞迴地刪除目錄及其所有子目錄
- i 刪除檔案之前先作提示
[例子]:
rm file1 刪除檔案 file1
rm -i /tmp/* 刪除目錄 /tmp 下的所有檔案
rm -r /mytmp 遞迴地刪除目錄 /mytmp
1.12 chmod
[文法]: chmod [-R] 模式 檔案...
或 chmod [ugoa] {+|-|=} [rwxst] 檔案...
[說明]: 改變檔案的存模數式,存模數式可表示為數字或符號串,例如:
chmod nnnn file , n為0-7的數字,意義如下:
4000 運行時可改變UID
2000 運行時可改變GID
1000 置粘著位
0400 檔案主可讀
0200 檔案主可寫
0100 檔案主可執行
0040 同組使用者可讀
0020 同組使用者可寫
0010 同組使用者可執行
0004 其他使用者可讀
0002 其他使用者可寫
0001 其他使用者可執行
nnnn 就是上列數字相加得到的,例如 chmod 0777 file 是指將檔案 file 存取許可權置為所有使用者可讀可寫可執行。
-R 遞迴地改變所有子目錄下所有檔案的存模數式
u 檔案主
g 同組使用者
o 其他使用者
a 所有使用者
+ 增加後列許可權
- 取消後列許可權
= 置成後列許可權
r 可讀
w 可寫
x 可執行
s 運行時可置UID
t 運行時可置GID
[例子]:
chmod 0666 file1 file2 將檔案 file1 及 file2 置為所有使用者可讀可寫
chmod u+x file 對檔案 file 增加檔案主可執行許可權
chmod o-rwx 對檔案file 取消其他使用者的所有許可權
1.13 chown
[文法]: chown [-R] 檔案主 檔案...
[說明]: 檔案的UID表示檔案的檔案主,檔案主可用數字表示, 也可用一個有效使用者名稱表示,此命令改變一個檔案的UID,僅當此檔案的檔案主或超級使用者可使用。
-R 遞迴地改變所有子目錄下所有檔案的存模數式
[例子]:
chown mary file 將檔案 file 的檔案主改為 mary
chown 150 file 將檔案 file 的UID改為150
1.14 chgrp
[文法]: chgrp [-R] 檔案組 檔案...
[說明]: 檔案的GID表示檔案的檔案組,檔案組可用數字表示, 也可用一個有效組名表示,此命令改變一個檔案的GID,可參看chown。
-R 遞迴地改變所有子目錄下所有檔案的存模數式
[例子]:
chgrp group file 將檔案 file 的檔案組改為 group
1.15 cmp
[文法]: cmp [-l] [-s] 檔案1 檔案2
[說明]: 比較兩個檔案,若檔案1 為 "-" ,則使用標準輸入, 兩個檔案相同則無提示,不同則顯示出現第一個不同時的字元數和行號。
-l 顯示每個不同處的位元組數(10進位)和不同的位元組(8進位)
-s 不作任何提示,只返回碼
[例子]:
cmp file1 file2 比較檔案 file1 和 file2
cmp -l file1 file2 比較檔案file1 和 file2 的每處不同
1.16 diff
[文法]: diff [-be] 檔案1 檔案2
[說明]: 本命令比較兩個文字檔,將不同的行列出來
-b 將一串空格或TAB轉換成一個空格或TAB
-e 產生一個編輯角本,作為ex或ed的輸入可將檔案1轉換成檔案2
[例子]:
diff file1 file2
diff -b file1 file2
diff -e file1 file2 >edscript
1.17 wc
[文法]: wc [-lwc] 檔案...
[說明]: 統計檔案的行、字、字元數,若無指定檔案,則統計標準輸入
-l 只統計行數
-w 只統計字數
-c 只統計字元數
[例子]:
wc -l file1 file2 統計檔案file1和file2 的行數
1.18 split
[文法]: split [-n] [ 檔案 [名字]]
[說明]: split 將指定大檔案分解為若干個小檔案,每個檔案長度為n行(n 預設時為1000),第一個小檔案名稱為指定的名字後跟aa,直至zz,名字預設值為x,若未指定大檔案名稱,則使用標準輸入
[例子]:
split -500 largefile little
將檔案largefile 每500行寫入一個檔案,第一個檔案名稱為littleaa
1.19 touch
[文法]: touch [-amc] [mmddhhmm[yy]] 檔案...
[說明]: 將指定檔案的訪問時間和修改時間改變,若指定檔案不存在則建立之,若無指定時間,則使用目前時間,傳回值是未成功改變時間的檔案個數,包括不存在而又未能建立的檔案。
-a 只改變訪問時間
-m 只改變修改時間
-c 若檔案不存在,不建立它且不作提示
mmddhhmm[yy] 兩位表示 月日時分[年]
[例子]:
touch file
更新檔案file的時間
touch 0701000097 HongKong
將檔案HongKong的時間改為97年7月1日0時0分
1.20 file
[文法]: file [-f 檔案名稱檔案] 檔案...
[說明]: file 對指定檔案進行測試,盡量猜測出檔案類型並顯示出來
-f 檔案名稱檔案 檔案名稱檔案是一個包含了檔案名稱的文字檔, -f 選項測試
檔案名稱檔案中所列出的檔案
[例子]:
file * 顯示目前的目錄下所有檔案的類型
1.21 pack
[文法]: pack 檔案...
[說明]: pack 將指定檔案轉儲為壓縮格式,檔案名稱後加 ".z ", 檔案存模數式,訪問時間,修改時間等均不變
[例子]:
pack largefile 將largefile 壓縮後轉儲為largefile.z
1.22 pcat 顯示壓縮檔
[文法]: pcat 檔案...
[說明]: pcat 顯示輸出壓縮檔
[例子]:
pcat largefile.z 顯示壓縮前的largefile
pcat largefile.z > oldfile 顯示壓縮前的laregfile,並將其重新導向到
檔案oldfile中
1.23 unpack
[文法]: unpack 檔案...
[說明]: 將壓縮後的檔案解壓後轉儲為壓縮前的格式
[例子]:
unpack largefile.z 將壓縮檔largefile.z解壓後轉儲為largefile
1.24 find
[文法]: find 路徑名... 運算式
[說明]: find 命令遞迴地遍曆指定路徑下的每個檔案和子目錄,看該檔案是否能使運算式值為真,以下 n 代表一個十進位整數,+n 代表列印 n , -n 代表小於 n ,下面是合法運算式說明:
-name 模式 檔案名稱與模式比對則為真,(/ 為轉意符)
-perm [-]八位元 檔案存模數式與八位元相同則為真若有- 選項,則檔案存
模數式含有八位元規定模式即為真
-size n[c] 檔案塊長度為 n 則真(一塊為512位元組),若
有c 選項,則檔案位元組長度為 n 則真
-atime n 若檔案的最近訪問時間為 n 天前則為真,
find 命令將改變其訪問的目錄的訪問時間
-mtime n 若檔案的最近修改時間為 n 天前則為真
-ctime n 若檔案狀態為 n 天前改變則為真
-exec 命令 { }/; 若命令傳回值為0則真,{ }內為命令參數,
此命令必須以 /; 為結束
-ok 命令 { }/; 與 exec 相同,只是在命令執行前先提示,若
回答 y 則執行命令
-print 顯示輸出使運算式為真的檔案名稱
-newer 檔案 若檔案的訪問時間比newer 指定的檔案新則真
-depth 先下降到搜尋目錄的子目錄,然後才至其自身
-mount 僅尋找包含指定目錄的檔案系統
-local 檔案在當前檔案系統時為真
-type c 檔案類型為 c 則真,c 取值可為 b(塊檔案) c (字元檔案)
d(目錄) l (符號連結) p (具名管道) f (普通檔案)
/( 運算式 /) 運算式為真則真
-links n 檔案連結數為 n 時為真
-user 使用者 當檔案屬於使用者時為真,使用者可用數字表示UID
-nouser 當檔案不屬於 /etc/passwd 中的一個使用者時為真
-group 檔案組 當檔案屬於檔案組時為真,檔案組可用數字表示GID
-nogroup 當檔案不屬於 /etc/group 中的一個組時為真
-fstype 類型 當檔案所屬檔案系統類型為指定類型時真
-inum n 當檔案 i 節點號為 n 時為真
-prune 當目錄名與模式比對時,不再搜尋其子目錄
可以用邏輯操作符將簡單運算式串連成複雜運算式
邏輯操作符有 ! 表示非操作, -o 表示或操作,兩個運算式並列則表示
與操作
[例子]:
find / -name find* -print
從根目錄開始搜尋檔案名稱如 find* 的檔案並顯示之
find ./ -exec sleep{1}/; -print
每秒顯示一個目前的目錄下的檔案
find $HOME /(-name a.out -o -name '*.o' /) -atime +7 -exec rm {} /;
從$HOME目錄開始搜尋,刪除所有檔案名稱為a.out 或 *.o 且訪問時間在7天前的檔案
1.25 grep
[文法]: grep [選項] 模式 [檔案...]
[說明]: 在指定的檔案中搜尋模式,並顯示所有包含模式的行,模式是一個正規運算式,在使用正規運算式時,最好將其引在單引號(') 中,若指定檔案為預設,則使用標準輸入,正規運算式可以是:
. 匹配任意一個字元
* 匹配0個或多個*前的字元
^ 匹配行開頭
$ 匹配行結尾
[] 匹配[ ]中的任意一個字元,[]中可用 - 表示範圍,
例如[a-z]表示字母a 至z 中的任意一個
/ 轉意字元
命令中的選項為:
-b 顯示塊號
-c 僅顯示各指定檔案中包含模式的總行數
-i 模式中字母不區分大小寫
-h 不將包含模式的檔案名稱顯示在該行上
-l 僅顯示包含模式的檔案名稱
-n 顯示模式所在行的行號
-s 指定檔案若不存在或不可讀,不提示錯誤資訊
-v 顯示所有不包含模式的行
[例子]:
grep 'good' * 在所有檔案中搜尋含有字串 good 的行
grep '^myline' mytext 在檔案mytext中搜尋行首出現myline字串的行
1.26 vi
[文法]:vi [-wn] [-R] 檔案...
[說明]: vi 是一個基於行編輯器 ex 上的全螢幕編輯器,可以在vi 中使用 ex,ed的全部命令,vi選項中 -wn 指將編輯視窗大小置為n行,-R 為將編輯的檔案置為唯讀模式, vi 工作模式分為命令模式和輸入模式,一般情況下在命令模式下,可敲入vi命令,進入輸入模式下時可以編輯要編輯的文本,命令 a A i I o O c C s S R 可進入輸入模式,在輸入模式下按 ESC 鍵可推出輸入模式,回到命令模式,在命令模式中敲入: 命令,則可進入ex方式,在螢幕底部出現提示符 : ,此時可使用任意ex命令,螢幕底行也用來作/ ? ! 命令的提示行,大多數命令可以在其前面加數字,表示命令執行的重複次數,下面簡單介紹一下vi 的命令集,^ 表示(CTRL)鍵
^B 退回前一頁,前面加數字表示重複次數,每次換頁時
保留上一頁的兩行
^D 在命令模式下,表示下滾螢幕的一半,在輸入模式下,表示回退至
左邊的自動縮排處
^E 顯示螢幕底線之下的一行
^F 前進一頁,前面加數字表示重複次數,每次換頁時
保留上一頁的兩行
^G 顯示當前檔案名稱,當前行號和檔案總行數,並用百分比符號當前行在
整個檔案中的位置
^H(退格) 在命令模式下,游標左移一格;在輸入模式下,刪去前面的字元
^I(TAB) 在輸入模式下,產生一串空格
^J(LF) 游標下移一行
^L 重新整理螢幕,即將螢幕重新顯示
^M(斷行符號) 在命令模式下,游標移動至下行開頭
在輸入模式下,開闢一新行
^N 游標下移一行
^P 游標上移一行
^Q 在輸入模式下,將其後的非列印字元作為本文插入
^R 重新整理螢幕
^U 螢幕上滾一半,前面加數字時表示上滾的行數,此數字對
以後的^D ^U 命令有效
^V 在輸入模式下,將其後的非列印字元作為本文插入
^W 在輸入模式下,使游標回退一個字
^Y 顯示螢幕底線之上的一行
^Z 暫停編輯,退回上層Shell
^[(ESC) 退出輸入模式,回到命令模式
! 暫時退出編輯,執行Shell命令
"(雙引號) 用於標誌有名緩衝區,編號緩衝區1-9用於儲存被刪去的本文,字
母名緩衝區a-z供使用者存放自訂的本文
$ 將游標移動到當前行尾,前加數字則表示前移行數,如2$表示移動
到下一行行尾
% 將游標移動到配對的小括弧()或大括弧{}上去
( 退回句子開頭
) 前移到句子開頭
- 退到上一行第一個非空白字元
. 重複上一次改變緩衝區內容的命令
/ 模式 向前搜尋模式,將游標移動到模式出現處,模式是一個正規
運算式,(參看 grep)
: 在螢幕底部提示:,其後可使用ex命令
? 功能同 / ,但方向是向前尋找
[[ 游標回退至前一節分界處
/ 轉意符
]] 游標前移至節分界處
^(不是CTRL) 游標移至當前行第一個非Null 字元上
' 連續兩個''表示將游標移至其移動前的位置,'後跟字母表示游標字
母標記的行首(參看 m 命令)
A 在行尾插入本文,進入輸入模式
B 游標回退一個字
C 替換游標後的內容
D 刪除游標後的內容
E 游標前移到字尾
F 字元 在當前行向左尋找指定字元
G 游標移動到其前面數字指定的行,若未指定則移動到最後一行
H 游標移動到螢幕頂行,若前面有數字,則移動到螢幕上該數字
指定的行
I 在行開頭插入本文
J 串連兩行,若前面有數字則串連數字指定的行
L 游標移動到螢幕底行,若前面有數字,則移動到螢幕底線往上數該
數字指定的行
M 游標移動到螢幕中線
N 使用模式尋找/或?時,重複找下一個匹配的模式,但方向與上次相
反,其功能同 n ,但方向相反
O 在當前行上開闢一新行
P 將上次被刪除的本文插入游標前面,可在其前面加緩衝區編號,編
號1-9用於儲存被刪去的本文,字母名緩衝區a-z供使用者存放自定
義的本文
Q 從vi 推出進入ex命令狀態
R 替換字串
S 替換整行
T 字元 向左尋找字元
U 將當前行恢複至第一次修改前的狀態
W 游標移至下一個字首
X 刪除游標前的字元
Y 將當前行存入無名緩衝區,前面加數字表示存入的行數,也可用有
名緩衝區來儲存,以後可用命令p或P將其取出
ZZ 存檔退出vi
a 游標後插入本文
b 游標回退至上一個字首
cw 替換當前字
c) 替換當前句子
dw 刪除一個字
dd 刪除一行
e 游標移到下一個字末
f 字元 在當前行向前尋找字元
h 游標左移一格
i 在游標前插入本文
j 游標下移一行
k 游標上移一行
l 游標右移一格
m 字母 用字母標記當前行,以後可用 '字母使游標移動到當前行,
(參看'命令)
n 重複上次 / 或 ? 命令
o 在當前行下開闢一新行
p 將使用者緩衝區內容放到游標位置(參看P命令)
r 替換當前字元
s 用一串字元替換當前字元
t 字元 游標移動至字元前
u 取消上次操作
w 游標移至下一字首
x 刪除當前字元
yw 將當前字存入無名緩衝區,前面可加"x,表示存入名字為x的有名
緩衝區(x為a-z),也可加數字表示存入的字數,以後可用P或p命
令取出
yy 將當前行存入無名緩衝區,用法參看yw
{ 游標移動至前一段開頭
| 游標移至行首,若前面加數字,則移到數字指定行的行首
} 游標移至下一段開頭
在:提示符下,常用命令如下:
:w 當前檔案存檔
:w! 強制存檔
:w 檔案 將內容寫入指定檔案
:w! 檔案 強制寫入指定檔案
:x,y w 檔案 將 x至 y 行寫入指定檔案中
:r 檔案 將檔案讀到游標位置
:r ! 命令 將系統命令的輸出讀到游標位置
:q 退出編輯
:q! 強制退出
:x 與命令ZZ相同
:e 檔案名稱 編輯另一檔案
:e ! 重新編輯檔案,放棄任何改變
:sh 執行sh,結束後回到編輯
:! 命令 執行命令後回到編輯
:n 編輯下一檔案
:n 檔案表 重新定義待編輯檔案表
:set 設定 vi 的選項,例如 set nu 表示每行前顯示行號,在選項前
加no則表示清除該選項,例如 set nonu 表示每行前不顯示行
號,下面是一些常用的選項:
ai 自動縮排
aw 編輯下一檔案前自動存檔
ic 尋找字串時不區分大小寫
nu 每行前顯示行號
sm 輸入)及}時顯示與之配對的( 或 {
slow 插入時延遲螢幕重新整理
ws 使尋找能繞過檔案尾從頭進行
wa 寫檔案之前不作對檔案的檢查