第一章 目錄及文件操作命令
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) 光標移至當前行第一個非空字符上
' 連續兩個''表示將光標移至其移動前的位置,'後跟字母表示光標字
母標記的行首(參看 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 寫文件之前不作對文件的檢查
第二章 設備管理
2.1 stty
[語法]: stty [-a] [-g] [選項]
[說明]: 本命令設置終端,無參數時報告終端設置,本命令功能十分強大,應謹慎使用,下面僅介紹部分常用功能
-a 顯示當前終端所有設置
-g 以能作為 stty 命令參數的方式顯示終端設置
以下是終端常用設置,在設置前加-表示清除設置:
1.控制方式
ispeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
本命令設置終端輸入波特率,若為0則使用缺省波特率。
例如 stty ispeed 9600
ospeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
本命令設置終端輸出波特率,參看 ispeed。
2.輸入方式
ingbrk(-ignbrk) 忽略(不忽略)中斷(BREAK)
brkint(-brkint) 設置(清除)信號INTR為中斷信號
inlcr(-inlcr) 將換行轉換(不轉換)成回車
icrnl( -icrnl) 將回車轉換(不轉換)成換行
igncr(-ignrc) 忽略(不忽略)回車
iuclc( -iuclc) 將大寫字母轉換(不轉換)成小寫字母
3.輸出方式
olcut(-olcut) 將小寫字母轉換(不轉換)為大寫字母
onlcr(-onlcr) 輸出時將換行符轉換(不轉換)為回車換行
ocrnl(-ocrnl) 輸出時將回車符轉換(不轉換)為換行符
4.本地方式
echo (-echo) 設置(清除)回顯
stwrap(-stwrap) 截斷(不截斷)大於79個字符的行
echoctl(-echoctr) 將控制鍵回顯為^
2.2 tty
[語法]: tty
[說明]: 顯示出終端的設備名
[例子]:
tty
2.3 lp
[語法]: lp 文件...
[說明]: 將文件送打印機打印
[例子]:
lp myfile 將文件myfile 送打印機輸出
2.4 lpstat
[語法]: lpstat [選項] [打印任務號]
[說明]: 顯示打印機狀態,選項的意義如下:
-a [打印機表] 顯示打印機表中指定的打印機可否接收打印請求
-c [打印機類名] 顯示打印機種類及在該打印機種類下的成員
-d 顯示系統預設的打印機
-p [打印機表] 顯示打印機表中打印機狀態
-r 顯示lp 請求程序表( lp request scheduler)
-s 打印系統統計表
-t 打印所有狀態信息
-u [用戶] 顯示由用戶發出的打印請求
-v [打印機名表] 顯示每個打印機名稱,是對應於該打印機設備文件的路徑名
[例子]:
lpstat -t 打印所有狀態信息
2.5 cancel
[語法]: cancel 打印任務號
cancel 打印機名
cancel -u 用戶名 [打印機]
[說明]: 本命令可按打印機名,打印任務,用戶來取消打印任務
[例子]:
cancel -u mary 取消用戶 mary 的所有打印請求
2.6 enable
[語法]: enable 打印機表
[說明]: 本命令可激活一個或多個打印機
2.7 disable
[語法]: disable [-cw] 打印機表
[說明]: 使一個或多個打印機不能打印
-c 立即取消正在打印的打印請求
-w 等正在打印的內容打完後,才禁止打印機
2.8 sync
[語法]: sync
[說明]: 將磁盤緩沖區內容寫回磁盤
2.9 mount
[語法]: mount [-r] 設備 目錄
[說明]: 將設備安裝到目錄下
-r 以只讀方式安裝
2.10 umount
[語法]: umount 設備
[說明]: 將已安裝的文件系統卸下
2.11 tar
[語法]: tar -c[vwfbL] [設備] [塊] 文件...
tar -r[vwfbL] [設備] [塊] 文件...
tar -t[vfL] [設備] [文件...]
tar -u[vwfbL] [設備] [塊] 文件...
tar -x[lmovwfL] [設備] [文件...]
[說明]: 將多個文件歸檔,命令中各參數的意義為:
r 附加方式歸檔
x 抽取文件
t 顯示文件
u 附加方式歸檔,同時刪除舊版文件
c 建立新檔案文件
v 顯示所處理的文件名
w 處理文件前,要求用戶確認
f 文件名 使用指定文件名作為檔案文件
bn 每次讀寫 n 塊,缺省值為1,最大值為20
m 將新的文件修改時間設為獲取時的時間
o 獲取出來的文件以下達tar指令的UID和GID存儲
[例子]:
tar cvf file.tar *
tar tvf file.tar
2.12 df
[語法]: df [-t] [文件系統]
[說明]: 顯示剩余 i 節點和塊數,使用 -t 選項,還顯示總塊數和 i 節點數
[例子]: df -t
2.13 du
[語法]: du [-ars] [目錄]
[說明]: 顯示磁盤空間專用情況
-r 提供無法打開的文件信息
-s 僅顯示指定目錄所占空間的總和
-a 顯示文件大小及目錄總空間,其後可根文件名作參數
第三章 進程管理
3.1 sleep
[語法]: sleep 時間
[說明]: 掛起參數指定的秒數
3.2 ps
[語法]: ps [ -efl] [ -t 終端表] [ -u 用戶表] [ -g 組表]
[說明]: 顯示出有關進程的狀態
-e 顯示出現在正在運行的所有進程
-f 顯示所有信息
-l 產生一個長列表
-t 顯示指定終端進程
-u 顯示指定用戶進程
-g 顯示指定組進程
3.3 at
[語法]: at [-f 命令文件] [-m] [-q 隊列] -t 時間
[說明]: at命令由cron管理,在未來一個指定的時間內執行一組命令,命令可以從指定文件讀入,也可從鍵盤讀入,從鍵盤讀入時以EOF結束,(通常為CTRL D)
-f 從指定命令文件中讀入命令
-m 命令執行完後給用戶發郵件
-q 將命令放入指定隊列
-t 指定時間 指定的時間格式為 [[CC]YY]MMDDhhmm[.ss],CC表示
年的前兩位,YY表示年的後兩位,MM表示月,DD表示日,hh表
示時,mm表示分,ss表示秒
3.4 kill
[語法]: kill -信號 進程號
[說明]: kill 將信號傳遞給指定進程,信號意義如下:
1 暫停(hangup)
2 中斷(interrupt)
3 退出(quit)
4 非法指令(illeqgal instruction)
5 跟蹤中斷(trace trap)
6 Abort
7 EMT 指令(Emulation trap)
8 浮點格式異常(floating point exception)
9 kill(不可忽略)
10 通道錯誤(bus error)
11 不合法內存段
12 錯誤的系統調用參數
13 寫入不可讀的連通管道
14 alarm clock
15 軟件結束信號
16 用戶定義信號一
17 用戶定義信號二
[例子]:
kill -9 444 殺死進程號為 444 的進程
第四章 系統管理和用戶管理
4.1 who
[語法]: who
who am i
[說明]: 列出現在系統中的用戶,who am i 顯示自己
4.2 whodo
[語法]: whodo [-h] [-l] [用戶]
[說明]: 顯示系統中用戶及進程,若指定用戶,則只列出該用戶的信息
-h 不顯示頭部信息
-l 長列表格式輸出
4.3 passwd
[語法]: passwd [用戶]
[說明]: 修改密碼,指定用戶則修改指定用戶密碼
4.4 logname
[語法]: logname
[說明]: 取得當前用戶注冊名
4.5 su
[語法]: su [- ] [用戶名]
[說明]: su 命令使當前用戶成為指定用戶,若無指定,則成為超級用戶,但必須輸入該用戶的密碼,-選項表示用該用戶的注冊環境成為該用戶
4.6 time
[語法]: time 命令
[說明]: 執行命令,並在執行完後顯示其運行的時間
4.7 date
[語法]: date
date mmddhhmm[yy]
[說明]: date 無參數時用於顯示系統時間,修改時間時參數形式為
月日時分[年]
4.8 shutdown
[語法]: shutdown [-y] [-gn] [-in]
[說明]: UNIX 系統必須先關閉系統,再關電源
-y 對提示的所有問題都回答 y
-gn 給其他用戶n 秒的時間退出,缺省值為60秒
-in 系統退到第n種方式,方式如下:
0 關機
1 單用戶模式
2 多用戶模式
3 網絡下的多用戶模式
6 關機並重新啟動
4.9 fsck
[語法]: fsck [-y]
[說明]: 本命令用於檢查和修復文件系統,當文件系統出現混亂時,可使用本命令,-y選項表示對所有提問都回答YES
第五章 通信和郵件
5.1 wall
[語法]: wall
[說明]: 向所有用戶廣播通知信息,常用於警告所有用戶
5.2 mesg
[語法]: mesg [-n] [-y]
[說明]: mesg 用 -n 參數則禁止其他用戶用 write 發消息,用 -y 參數則允許接收消息,若無參數則報告現在的狀況
5.3 write
[語法]: write 用戶 終端
[說明]: write 與指定的終端上的用戶直接對話,直到接收到文件結束符
[例子]:
write mary console
q
5.4 mailx
[語法]: mailx [選項] [名字]
[說明]: 本命令用於發送和接收郵件,名字是收信人的用戶名,本命令有許多內部命令,選項說明如下:
-e 檢查是否有郵件,若有則返回0
-f 文件名 從文件中讀取郵件而非從郵箱中
-H 只顯示信件標題
-s 標題 設定標題為指定標題
[命令說明]
. 當前信件
n 第 n 封信
^ 第一封未被處理的信
$ 最後一封信
* 所有的信
n-m 第n 封至第m封信
用戶 由指定用戶發出的信
/ 字符串 標題中包含字符串的信
:c 滿足指定類型c的信,類型可為
d 已刪除的信
n 信傳送的信
o 舊信件
r 已讀過的信
u 未讀過的信
p 一次顯示多封信
t 顯示某封信的前若干行
si 顯示信件字符數
h 顯示信件標題
d 刪除信件
u 恢復信件
s [信件表] 文件名
將信件存入指定文件中
q 退出
r 回信
~e 編輯信件
~r 文件 從文件中讀取信件
[例子]:
mailx mary < myletter
第六章 Shell 編程
shell 不但是 Unix 的用戶交互界面,還是一門程序設計語言,系統注冊進入時就會執行一個shell命令文件 .profile ,下面對shell中的常用命令作簡單介紹。
$n shell 程序命令行中的第n 個參數,n為0-9,當n 為0時表示命令名
$# 命令行中參數的個數
$$ 本shell 命令的進程號
$! 最後一個後台進程的代號
$* 所有命令行參數
$@ 與$*相似,但其值不同
$HOME 注冊時進入的目錄
$PATH 命令的搜索目錄
$PS1 系統第一個提示符,一般為$
$PS2 系統第二個提示符,一般為>
shift [n] 將命令行參數往左移一位,但$0不變
變量名=字符串 將字符串賦予變量名,以後可用$變量名引用該變量
export 變量名表 將變量名表所列變量傳遞給子進程
read 變量名表 從標准輸入讀字符串,傳給指定變量
echo 變量名表 將變量名表指定的變量顯示到標准輸出
set 顯示設置變量
env 顯示目前所有變量
if 條件執行,語法是: if 條件
then 指令
fi
case 分支執行,語法是: case 字符串變量 in
值1) 指令...
值2) 指令...
...
esac
while 條件為真時循環,語法是:
while 條件
do
指令...
done
until 條件為假時循環,語法是:
until 條件
do
指令...
done
for 變量在表中時循環,語法是:
for 變量名 in 字組表
do
指令...
done
break 從循環中退出,語法:
break n
n 表示跳出循環的層數
continue 繼續循環,語法:
continue n
n 表示退到包含continue 語句的第n 層繼續循環
exit 退出shell
func shell內部可定義函數,語法: func 函數名()
{
指令...
}
expr 將其後的串解釋為表達式並計算其值,運算符前後需有空格
trap 捕獲信號,語法 trap n ,捕獲信號 n (信號說明參見kill)
test 條件測試,語法 test [選項] 參數
選項 -f 文件 若文件存在且可讀則真
-w 文件 若文件存在且可寫則真
-x 文件 若文件存在且可執行則真
-f 文件 若文件存在且為普通文件則真
-d 文件 若文件存在且為目錄文件則真
-p 文件 若文件存在且為fifo文件則真
-s 文件 若文件存在且不空則真
-z 串 若串長度為0則真
-n 串 若串長度不為0則真
串 若串不是空串則真
串1=串2 若串1等於串2則真
串1!=串2 若串1不等於串2則真
n1 -eq n2 若n1與n2數值相當則真
n1 -ne n2 若n1與n2數值不相當則真
n1 -lt n2 若n1小於n2則真
n1 -le n2 若n1小於等於n2則真
n1 -gt n2 若n1大於n2則真
n1 -ge n2 若n1大於等於n2則真
可用 與 -a 或 -o 非 ! 將條件表達式連接起來
第七章 數學計算命令
[語法]: bc [-c] [-l] [文件...]
[說明]: bc是一個交互式的高精度計算工具,采用類似於C語言的語法,能夠從指定文件指定文件中讀出命令執行,然後再進入交互式執行,事實上,bc是dc的預編譯器,它自動激活dc,將語句經預編譯後傳遞給dc,退出bc的命令是quit,bc中的ibase,obase,scale分別表示輸入基數,輸出基數,小數點右邊的位數。
-c bc 只編譯,而不將編譯結果送dc,將其送到標准輸出上
-l 預定義一個數學函數庫,可在bc中使用以下函數
s(x) sine
c(x) cosine
e(x) exponential
l(x) log
a(x) arctangent
j(n,x) Bessel
[例子]:
bc -l 進入bc
scale=10 將小數位定為10位
e(1) 計算e的小數點後10位
quit 退出bc
附錄 UNIX 常用命令簡單說明
UNIX 命令大多數可用聯機幫助手冊 man 獲得幫助,下面是常用命令及簡單說明,可供用戶快速查找使用。
命令 功能簡述
acctcom 等於進程記帳文件
accton 啟動或中止記帳進程
adb 匯編語言調試工具
admin 創建和管理SCCS文件
ar 檔案文件和庫文件管理程序
as 匯編器
asa 回車控制
at 在指定時間執行程序
awk 模式搜索和處理語言
banner 制作標題
basename 生成文件基本名(無前。後綴)
batch 命令的延遲執行
bc 計算器
bdiff 大型文件比較
bfs 大文件搜索
break 退出循環
cal 打印日歷表
calendar 打印日歷表
cancel 取消打印任務
case 分支語句
cb C語言整理程序
cd 改變當前目錄
cc C語言編譯器
cdc SCCS實用程序
cflow 生成C語言流程圖
checkeq 數學公式排版命令
chgrp 改變文件組
chmod 改變文件存取模式
chown 改變文件主
chroot 改變根目錄
cksum 顯示校驗和
clri 清除指定的I節點
cmp 文件比較
col 過濾反向換行
comb SCCS實用程序
comm 顯示兩個排序文件的公共行
command 執行簡單命令
continue 進入下一循環
cp 復制文件
cpio 復制文件檔案
cpp C語言預處理程序
crash 檢查系統內存映象
create 建立臨時文件
cref 生成交叉引用表
cron 在指定時間執行一組命令
crontab 為命令cron 准備crontab文件
crypt 加密/解密
csplit 將一個文件分解
ct 遠程終端注冊
ctags 創建供vi使用的標識符
cu 呼叫另一UNIX系統
cut 斷開一文件中所選擇的字段
cxref 生成C程序交叉訪問表
date 打印和設置時間
dc 桌面計算器
dd 轉換和復制文件
delta SCCS實用程序
deroff 去掉排版格式
devnm 標識設備名
df 顯示可用磁盤空間
diff 顯示兩個文件的差異
diff3 顯示三個文件的差異
dircmp 目錄比較
dis 反匯編程序
du 顯示對磁盤的占用情況
dump 對指定文件備份
echo 回顯指定參數
ed 行編輯器
edit 文本編輯器
egrep 在文件中查找指定模式
env 設置命令執行環境
eqn 數學公式排版命令
eval 執行指定命令
ex 行編輯器
exec 執行指定命令
exit 進程中止
expand 使表格占滿行寬
export 將變量傳遞給子程序
expr 計算表達式值
factor 因式分解
false 返回FALSE
fgrep 在文件中查找指定模式
file 確定文件類型
find 查找符號條件的文件
fmt 安排簡單的文本格式
fold 折行
for 循環語句
fsck 文件系統檢查和修復
fsdb 文件系統調試程序
fumount 強制性拆協指定資源
function 函數說明
fuser 列出使用文件的進程
fwtmp 產生記帳記錄
get SCCS實用程序
getconf 查找配置參數
getopt 獲得命令中的選擇項
getopts 獲得命令中的選擇項
getty 設置終端類型、模式、行律等
grep 在文件中查找指定模式
head 打印文件的頭若干行
hexdump 按十六進制轉儲文件
id 顯示用戶號
if 條件語句
init UNIX 初啟進程
install 安裝一個文件到文件系統
ipcrm 刪除IPC隊列
ipcs 顯示IPC狀態
join 連接兩個文件(關系操作〕
kill 中止指定進程
killall 中止所有活動進程
labelit 給文件系統提供標號
ld 目標文件鏈接編輯器
lex 詞法分析程序
line 讀一行
link 連接文件
lint C程序檢查程序
ln 鏈接文件
local 建立局部變量
logger 顯示注冊信息
login 注冊
logname 獲取注冊名
look 在排序文件中查找某行
lorder 查找目標庫的次序關系
lp 打印文件
lpr 打印文件
lpstat 顯示打印隊列狀態
ls 目錄列表
mail 發送或接收電子郵件
mailx 發送、接收或處理電子郵件
make 執行有選擇的編譯
makekey 生成加密碼
man 顯示命令用法
mesg 接收或取消對話方式
mkdir 建立目錄
mkfifo 建立FIFO文件
mkfs 建立文件系統
mknod 建立文件系統的I節點
mount 安裝文件系統
mv 移動文件
mvdir 移動目錄
ncheck 按節點號生成節點名清單
neqn 數學公式排版命令
newgrp 把用戶加入到新組
news 打印消息
nice 改變命令執行優先級
nl 給文件加行號
nm 顯示目標文件符號表
nohup 忽略掛起或退出執行命令
nroff 文本文件排版
od 按八進制轉儲文件
pack 壓縮文件
passwd 改變口令
paste 文件合並
pax 可移植檔案管理程序
pcat 顯示壓縮格式文件
pg 分屏顯示
pr 按打印格式顯示文件
pstat 報告系統信息
pwck 口令文件校驗程序
pwd 顯示當前工作目錄
quot 檢查文件系統所有權
ratfor 轉換成標准FORTRANC程序
read 從標准輸入讀一行
readonly 標記變量為只讀
red 文本編輯器
regcmp 正規表達式編輯
restor 文件系統恢復程序
restore 文件系統恢復程序
return 返回語句
rev 顛倒文件中每行字符次序
rm 刪除文件
rmdel SCCS使用程序
rmdir 刪除目錄
rsh(net) 遠程SHELL
rsh(sec) 受限SHELL
runacct 運行日常記帳程序
sact SCCS實用程序
sag 打印系統活動圖
sar 報告系統活動
sccsdiff SCCS實用程序
sdb 符號調試器
sdiff 並列顯示兩個文件的差別
sed 流編輯器
sendto 發送郵件
set 設置選項或參數
setmnt 建立文件系統安裝表
sh SHELL解釋器
shift 命令行參數移位
shl SHELL層(layer)管理程序
shutdown 關機
size 顯示目標文件長度
sleep 掛起進程一段時間
sort 文件排序和合並
spell 拼寫錯誤檢查程序
spellin 拼寫錯誤檢查
spellout 拼寫錯誤檢查
spline 按平滑曲線輸出數據
split 分解一個文件
strings 在目標文件中尋找可打印字符
strip 刪除符號表
stty 設置終端模式
su 改變用戶
sum 顯示文件校驗和及塊數
sync 更新磁盤
tabs 設置制表符
tbl 表格排版
tee 在管道上建立多通路
tic 終端數據庫編譯程序
time 打印執行命令所花時間
tiemx 報告命令所花時間及活動
touch 更新文件時間
tput 恢復終端或查詢數據庫
tr 轉換字符
trap 捕獲信號
troff 文本文件排版
true 返回TRUE
tsort 拓撲排序
tty 顯示終端設備名
umask 設置文件掩碼
umount 拆卸文件系統
uname 顯示系統名
unget SCCS實用程序
uniq 刪除文件中重復行
units 度量單位轉換
unlink 刪除文件
unpack 將壓縮文件還原
until 循環語句
update 更新磁盤
val SCCS實用程序
vc SCCS實用程序
vi 全屏幕編輯器
volcopy 文件系統的文字拷貝
wait 等待所有字進程結束
while 循環語句
who 顯示誰在使用系統
whodo 顯示哪些用戶在做什麼
write 和另一用戶直接對話
xargs 建立參數表並執行命令
yacc 語法分析程序生成器