一章 目錄及文件操做
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 跳到後面第 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 的行 vue
1 登陸工做站 1.1 透過 PC 登陸工做站 1.2 登出步驟 1.3 更改賬號密碼 1.4 在線幫助指令說明 1.5 進入遠端電腦系統 1.6 遠程調用工做站程序 2 文件或目錄處理 2.1 列出文件或目錄下之文件名稱 2.2 目錄之縮寫: 2.3 改變工做目錄位置 2.4 複製文件 2.5 移動或更改文件、目錄名稱 2.6 創建新目錄 2.7 刪除目錄 2.8 刪除文件 2.9 文件名的縮寫符號 2.10 查看文件內容 2.11 查看目錄所佔磁盤容量 2.12 查看本身的 disk quota 使用情況 3 文件傳輸 3.1 拷貝文件或目錄至遠端工做站 3.2 自遠端工做站,拷貝文件或目錄 4 文件模式之設定 4.1 改變文件或目錄之讀、寫、執行之容許權 4.2 檢查本身所屬之羣組名稱 4.3 改變文件或目錄之羣組擁有權 4.4 改變文件或目錄之最後修改時間 4.5 文件之連結 4.6 文件之字串找尋 4.7 找尋文件或命令之路徑 4.8 比較文件或目錄以內容 4.9 文件打印輸出 4.10 通常文件之打印 4.11 troff 文件之打印 5 打印機控制命令 5.1 檢查打印機狀態,及打印工做順序編號和使用者名稱 5.2 刪除打印機內之打印工做 (使用者僅可刪除本身的打印工做 ) 6 Job 之控制 6.1 查看系統之 process 6.2 結束或終止 process 6.3 在 background 執行 process 的方式 6.4 查看正在 background 中執行的 process 6.5 結束或終止在 background 中的 process 7 shell variable 7.1 查看 shell variable 之設定值 7.2 設定 shell variable 7.3 刪除 shell variable 8 environment variable 8.1 查看 environment variable 之設定值 8.2 設定 environment variable 8.3 刪除 environment variable 9 alias 9.1 查看所定義的命令之 alias 9.2 定義命令之 alias 9.3 刪除所定義之 alias 10 history 10.1 設定命令記錄表之長度 10.2 查看命令記錄表以內容 10.3 使用命令記錄表 10.4 顯示前一個命令以內容 10.5 更改前一命令以內容並執行之 11 資料之壓縮 11.1 壓縮資料 12 pipe-line 之使用 13 I/O control 13.1 標準輸入之控制 13.2 標準輸出之控制 14 查看系統中的使用者 15 改變本身的 username 進入其餘使用者的賬號,擁有其使用權利。 16 查看 username 17 查看目前本地全部工做站的使用者 18 與某工做站上的使用者交談 19 檢查遠端電腦系統是否正常 20 電子郵件(E-mail)的使用簡介 20.1 將文件當作 E-mail 的內容送出 20.2 傳送 E-mail 給本地使用者 20.3 傳送 E-mail 至 外地 20.4 檢查所傳送之 E-mail 是否送出,或滯留於本所之郵件伺服站中 20.5 讀取信件 20.6 本文內容大綱 20.7 進入vi 20.8 離開vi 20.9 vi 的操做模式 20.10 輸入模式 20.11 指令模式 20.12 視窗的移動 20.13 刪除、複製及修改指令介紹 (此單元較少使用) 20.14 刪除與修改 20.15 移動與複製 20.16 指令重複 20.17 取消前一動做(Undo) 20.18 搜尋 20.19 資料的鏈接 20.20 環境的設定 20.21 ex指令 20.22 恢復編輯時被中斷的文件 20.23 編輯多個文件 登陸工做站 透過 PC 登陸工做站 執行格式:telnet hostname (在 dos 下執行) telnet ip-address Example: telnet doc telnet 140.122.77.120 注: 可利用指令 arp hostname 或 arp domain_name 查詢 ip_address2 粗體文字=== 登陸步驟 === login : _______ > 輸入 username password : _______ > 輸入密碼 登出步驟 輸入 logout 或 exit 或 % 或按[Ctrl-D] 更改賬號密碼 passwd > 執行後將會出現下列信息 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 遠程調用工做站程序 執行格式:setenv DISPLAY [本機IP]:0.0 Example: %setenv DISPLAY 10.52.9.120:0.0 文件或目錄處理 列出文件或目錄下之文件名稱 執行格式: ls [-atFlgR] [name] ( name 可爲文件名或目錄名稱。) Example : ls 列出目前目錄下之文件名。 ls –a 列出包含以.起始的隱藏檔全部文件名。 ls –t 依照文件最後修改時間之順序,依序列出文件名。 ls –F 列出目前目錄下之文件名及其類型。」/」 結尾表示爲目錄名稱,「*」 結尾表示爲執行檔,」@」 結尾表示爲 symblic link。 ls –l 列出目錄下全部文件之許可權、擁有者、文件大小、修改時間及名稱。 ls –lg 同上,並顯示出文件之擁有者羣組名稱。 ls –R 顯示出目錄下,以及其全部子目錄之文件名。( recursive listing ) ls -i 能夠顯示文件的索引號 目錄之縮寫: ~ 使用者 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。 創建新目錄 執行格式: mkdir directory-name Exmaple : mkdir dir1 創建一新目錄 dir1。 tar tar最初用於創建磁帶備份系統,目前普遍用於創建文件發佈檔案。 創建名稱爲tar的檔案: tar cvf ye.tar *.txt 將當前目錄的全部文件存檔到ye.tar中; tar cvf ye.tar *.* 瀏覽檔案內容: tar tvf ye.tar *.* 取出檔案內容: tar xvf ye.tar *.* 刪除目錄 執行格式: 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的文件夾及其裏面的內容 文件名的縮寫符號 ? 表明文件名稱中之單一字符。 表明文件名稱中之一字串。 查看文件內容 執行格式: 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。 文件模式之設定 改變文件或目錄之讀、寫、執行之容許權 執行格式: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,除去其它使用者可讀取之權利。 1`2`12`12`12`12`12`12`1權,改成使用者 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。 或者 執行格式:xkill(回車,鼠標箭頭變爲骷髏頭標誌,直接點擊要終止的程序窗口。) Example: %xkill[回車] 在 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 壓縮目錄 gzip gzip命令經常使用於壓縮文件,執行格式: gzip filename 創建檔案名稱是ye的壓縮檔案: gzip ye.tar 解壓縮命令: gzip -d filename.gz 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 username Example: %su user 進入使用者 user 之賬號 password: 輸入使用者 user 之密碼 查看 username 執行格式: whoami 查看 login 時,本身的 username。 執行格式: whoami 查看目前的 username。若已執行過 「su」命令tch user),則顯示出此 user 之 username。 查看目前本地全部工做站的使用者 執行格式: rusers > 結束 與某工做站上的使用者交談 執行格式: talk username@hostname 或 talk username@ip_address Example: 1. 可先利用 rusers 指令查看網路上的使用者 2. 假設本身的賬號是 u84987 ,在工做站 indian 上使用,如今想要與 doc 上的u84123 交談。 %talk u84123@doc > 此時屏幕上將會出現等待畫面 在對方(u84123)屏幕上將會出現下列信息 Message from Talk_Daemon@Local_host_name at xx:xx talk: connection requested by u84987@indian talk: respond with: talk u84987@indian 此時對方(u84123) 必須執行 talk u84987@indian 便可互相交談。最後可按結束。 檢查遠端電腦系統是否正常 執行格式:ping hostname 或 ping IP-Address Example: %ping doc 電子郵件(E-mail)的使用簡介 將文件當作 E-mail 的內容送出 執行格式:mail -s 「Subject-string」 username@address < 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 username@receiver-address Example %mail paul@gate.sinica.edu.tw 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 編輯器能夠打開多個文件,並直接編輯shell