Linux指令的構成
command [options] [parameters]
其中: command 為指令名,options為選項,parameters為參數, []表示可以有多個選項、參數,也可以無選項或參數。
指令名一般由小寫字母組成,Linux指令是大小寫敏感的。指令名、選項、參數之間必須用空格分開。選項前一般帶有“-”号,可以多個選項合并使用,例如清單指令#ls -la /etc。
線上幫助指令
man、info和help三種指令可提供線上幫助。
使用方法:
$ man 指令名 ;$ info 指令名 ; $ 指令名 --help
man是一個非常重要的幫助指令,是所有Linux/Unix系統的必備工具。
幫助頁的使用方法(插入示範:#man ls、info ls、ls --help)
退出幫助:q;快速定位關鍵字:/關鍵字;繼續定位關鍵字:n;顯示下一頁:空格鍵;顯示上一頁:PageUp鍵。
檔案清單指令
ls
用于列出目錄下的檔案和子目錄。
-a:列出所有檔案和目錄。
-c:以更改時間排序,顯示檔案和目錄。
-d:顯示目錄名稱而及其屬性。
-i:顯示檔案和目錄的inode編号。
-l:使用詳細的長格式清單。
-r:反向排序。
-R:遞歸處理,将指定目錄下的所有檔案及子目錄一并處理。
顯示文本檔案内容的指令
cat
一次性顯示文本檔案内容。
-A:全面顯示。
-E:行尾加$。
-n:顯示行号(含空行)。
執行個體
(注意:學會用shift+PageUp/PageDown移動上下屏)
輸入輸出重定向
ls >file
more
用于分頁顯示檔案内容。(按空格鍵繼續顯示)
-d:螢幕底部提示幫助資訊。
-p:清屏後再顯示下屏。
- num:每頁顯示的行數。
+ num:從num行開始顯示。
管道技術
$ls –la |more )
less(與more類似)
head
顯示檔案頭部。
-c:指定顯示字元數。
-n:指定顯示的行數,預設為10行。
tail
顯示檔案尾部。
-f:實時觀察檔案尾部分的變化。
(結合實時監測log檔案講解如:
#tail –f /var/log/messages )
查詢文本内容的指令
grep (egrep或fgrep)指令
-c:隻顯示比對行的數量。
-i:不區分大小寫。
-n:增加顯示比對行的行号。
-v:隻顯示不比對行。
-x:隻顯示整行比對的行。
(結合管道技術講解如:
$ls –la |grep keyword )
查找檔案的指令
find 查找系統中的檔案。
-name 檔案名:find要查找的檔案名。
-perm 權限值:查找所有符合指定權限值的檔案,如果權限值前面是“-”或“+”号,則搜尋所有含該權限值中特權位的檔案。
-size n:查找大小為n個block的檔案名。
-user 使用者名:搜尋所有屬主為使用者名的檔案。
-group 組名:搜尋所有屬組為組名的檔案。
-atime 數字:搜尋在[數字]天前通路過的檔案。
-mtime 數字:搜尋在[數字]天前修改過的檔案。
locate或slocate
快速搜尋索引資料庫中檔案,其查找檔案速度較find快。但索引資料庫的更新在每天的4:02分,查找當天檔案需要手工執行指令#updatedb 來更新索引資料庫。選項:
which 指令名 找出指令在系統中存儲位置
$which find
統計、排序和比較文本内容的指令
wc
用于統計文本檔案中字元、字和行的數量。
-c:隻輸出位元組數。
-w:隻輸出單詞數。
-l:隻輸出行數。
sort
用于對文本檔案中各行進行排序 。
-d:排序時,除了英文字母、數字及空格字元外,忽略其他的字元。
-f:排序時,将小寫字母視為大寫字母。
-m:将幾個排序好的檔案合并。
-r:以相反的順序來排序。
uniq
用于檢查及消去文本檔案中連續的重複行。檔案要先作sort,然後再執行uniq。
-c:在每列旁邊顯示該行重複出現的次數。
-d:僅顯示重複出現的行。
diff
用于比較兩個文本檔案的不同點。
-i:忽略大小寫。
#diff A B >C
A是原始檔案,B是修改後的檔案,C稱為A的更新檔檔案
patch
把diff生成的更新檔檔案應用到現有代碼上。
#patch A C
得到修改後的檔案B
#patch -R B C
可以重新還原到A
vi文本編輯工具
是基于字元界面的文本編輯工具,也是Linux急救模式的唯一編輯工具。vi功能強大,編輯檔案過程中還可以執行輸出、删除、查找、替換和塊操作等功能。
vi的工作模式
1)指令模式
所有按鍵的輸入都被視為指令接收,包括’:‘指令。按i、a、o 等指令進入編輯模式
2)編輯模式
鍵入的每一個鍵都代表一個将要輸入到文本中的字元。 按Esc鍵退出編輯模式,一個好習慣就是編輯過程中多按Esc鍵 。
啟動和退出vi
$ vi 檔案名
:wq (存盤退出)
:q! (不儲存修改,退出)
光标移動指令
左方向← 鍵、右方向→鍵、向下方向↓鍵、上方向↑鍵。
向下翻頁PageDown鍵、向上翻頁PageUp鍵。
:0: 等價于Home鍵,移至首行。
:$: 等價于End鍵,移至首尾。
: ^: 移至行首。
:5 移至第5行
進入編輯模式指令
I:在行首輸入。
A:在行尾輸入。
O:在光标所在行上插入一新行。
i:在光标所在字元前插入。
a:在光标所在字元後插入。
o:在光标所在行下插入一新行。
删除、修改和取消指令
X:删除光标前一字元。(backspace)
x:删除光标所在的字元(delete)。
dd:删除光标所在的行。
n dd:删除光标所在的n行。
dw:删除光标所在的一個字。
u:恢複上一次操作。
複制與粘貼指令
yy:複制光标所在整行到粘貼闆。
n yy:複制光标所在n行到粘貼闆。
yw:複制光标所在一個字到粘貼闆。
y^:複制光标至行首到粘貼闆。
y$:複制光标至行尾到粘貼闆。
p:粘貼到光标後。
P:粘貼到光标前。
查找與替換指令
:[range] s/patern/string/[c,g,i]
其中:[range]指定查找範圍,如全部查找:1,$。
patern指定查找字元串
string指定新替換串
c每次替換前詢問是否确認
g表示不詢問,全部替換
i不區分大小寫。
例如, :1,$ s/oldstring/newstring/g
其他指令
:w newfile――另存檔案為newfile。
:! Command――不退出vi執行shell指令――command。
:r filename――将檔案filename讀入編輯區。
:set number――設定行号。
:ce――本行文字居中。
:ri――本行文字右對齊。
:le――本行文字左對齊。
複制、移動和删除檔案的指令
$ cp[選項] 源檔案 目标檔案
用于複制檔案和目錄。
-f:強行複制檔案或目錄,不作任何提示。
-i:覆寫已有檔案之前先詢問使用者。
-p:保留源檔案或目錄的屬性。
-r:遞歸處理,将指定目錄下的檔案與子目錄一并處理。
-R:同-r。
-v:顯示指令執行過程。
mv ($ mv [選項] 源檔案 目标檔案)
-b:覆寫目标檔案之前作備份,備份檔案會在字尾加上一個備份字元串“~”。
rm
用于删除檔案或目錄。
-f:強制删除檔案或目錄。
-i:删除既有檔案或目錄之前先詢問使用者。
-r:遞歸處理,将指定目錄下的所有檔案及子目錄一并處理。
-v:顯示指令執行過程
(講解root使用者使用rm –rf 删除系統目錄的危險性:
#rm –rf /home/test )
檔案連結指令
ln ($ ln [選項] [源檔案或目錄] [目标檔案或目錄])
用于建立檔案或目錄的的軟、硬連結。
-f:強行建立檔案的連結,不論檔案是否存在。
-i:覆寫既有檔案之前先詢問使用者。
-s:對源檔案建立符号連結,而非硬連結。
查詢和修改使用者工作目錄的指令
pwd
用于顯示使用者的工作目錄。
cd ($ cd [目标目錄])
用于改變使用者的工作目錄。
建立和删除子目錄的指令
mkdir
用于建立子目錄。
-m:建立目錄時同時設定目錄的權限。
-p:若所要建立目錄的父目錄目前尚未建立,則會一并建立父目錄。
rmdir
删除空子目錄。但是,删除包含檔案的目錄要用rm –rf 指令。
了解磁盤空間的指令
du ($ du [選項] [目錄])
用于了解目錄或檔案所占磁盤空間。
-a:遞歸地顯示目錄中各檔案及子目錄中各檔案占用的資料塊數。
-b:以位元組為機關顯示。
-k:以1024位元組為機關顯示。
-c:最後一行加入總計占用的資料塊總數。
df ($ df [選項] [目錄])
用于顯示磁盤檔案系統的使用情況。
-a:顯示全部檔案系統。
-h:以1024位元組為機關顯示。
-i:顯示inodes資訊。
-T:同時顯示檔案系統類型資訊。
顯示變量内容和檔案屬性的指令
echo (echo[選項] [資訊内容] )
用于在顯示器上顯示資訊。
-n//輸出文本後不換行。
[資訊内容]可以是字元串或變量。
$ echo “abcd”
file ($ file[選項] 檔案名)、stat
用于顯示檔案的屬性資訊。
$ file file
$ stat file
touch($ touch[選項] 檔案名)
用于建立空檔案或修改檔案時間。
-a:隻改變檔案存取時間。
-m:隻修改檔案的的修改時間。
-r:指定參考檔案,使檔案的日期設定與參考檔案的日期一緻。
例:(1)将檔案的存取時間設為目前時間。
$touch –a file
(2)建立空檔案。
$touch file1
系統通信指令
write ($write [使用者名][字元串])
用于向線上使用者釋出資訊,但不能向非線上使用者發資訊。
輸入Ctrl+D結束釋出的資訊。
#useradd test //建立test使用者
#passwd test //給test使用者授權密碼
wall (wall [字元串])
用于向所有線上使用者釋出資訊,适合所有系統使用者。
mesg ($ mesg [y/n])
用于設定允許或拒絕接收由普通使用者發來的write、 wall和talk通信資訊,但對root的資訊無效。
例如:$mesg n
核心及使用者資訊查詢指令
uname
用于顯示核心資訊。
-a:以如下順序顯示所有核心資訊。
-s:核心名
-n:網絡主機名
-r:核心版本
-v:釋出日期
-p:處理器型号
-i:硬體平台
finger $ finger [使用者名]
用于顯示系統使用者的配置資訊。
whoami
用于顯示目前登入使用者的資訊。
id ($ id [使用者名])
who ($ w或who )
顯示所有系統線上使用者資訊 。
清屏及記憶體與磁盤同步指令
clear
清屏指令
sync
用于把記憶體資訊寫入硬碟,實作同步。關機或重新開機時,系統自動執行該指令。
其他基本操作指令
cal ($ cal [選項] [month[year]])
用于顯示月曆。
-j:以1月1日起的天數顯示。
date ($ date [格式串])
用于顯示或設定系統的日期與時間。
其中: [格式串]為MMDDhhmm[[CC]YY][.ss]的格式。
MM為月份,DD為日期,hh為小時,mm為分鐘,CC為年份前面兩位數字,YY為年份後面兩位數字,ss為秒數。
su (su – 使用者名)
更換使用者身份指令。
$su root $su – root $su peng