天天看點

Linux 常用指令總結查詢指令Other Commandvim

  • 查詢指令
    • find
    • locate
    • less
    • which
    • whereis
    • tail
    • grep
  • Other Command
    • chmod
    • tar
    • netstat
    • ps
    • watch
    • Other Command Reference
  • vim
    • 模式切換
    • 插入
    • 查找
    • 替換
    • 複制粘貼
    • 跳轉
    • 選擇
    • 分屏
    • 标簽頁
    • More Command

查詢指令

find

* find [指定查找目錄] [查找規則] [查找完後執行的action]

* find ~/.m2 -name “*.lastUpdated” -exec grep -q “Could not transfer” {} \; -print -exec rm {} \;(查找以lastUpdated 為字尾的檔案中包含 “Could not…”的檔案,列印并删除他)(`*`表示 通配任意的字元;?表示 通配任意的單個字元)

* -iregex/regex (後面跟正規表達式,i忽略大小寫)

* -user     //根據屬主來查找檔案

* -group     //根據屬組來查找檔案

* -a and -o and –not     //連接配接多個條件,-a是與關系,-o是或關系,-not是取反

* -atime;-mtime;-ctime;-amin;-mmin;-cmin     //這裡atime,mtime,ctime就是分别對應的“最近一次通路時間”“最近一次内容修改時間”“最近一次屬性修改時間”,這裡的atime的機關指的是“天”,amin的機關是分鐘 ( find /tmp –atime +5 //表示查找在五天内沒有通路過的檔案;find /tmp -atime -5 //表示查找在五天内通路過的檔案)

* -type    //根據檔案類型來查找檔案(f 普通檔案;d目錄檔案; l 連結檔案; b塊裝置檔案;c 字元裝置檔案; p 管道檔案;s socket檔案)

* -size    //根據檔案大小來查找檔案(“find /tmp -size 2M”查找在/tmp 目錄下等于2M的檔案;+2M,大于;-2M,小于)

* -perm    //根據檔案權限來查找檔案(“find /tmp -perm 755 ” 查找在/tmp目錄下權限是755的檔案)

* [查找完執行的action]

      [ “-print”預設情況下的動作;”-ls”查找到後用ls 顯示出來;”-ok [commend] “查找後執行指令的時候詢問使用者是否要執行;” -exec [commend]”查找後執行指令的時候不詢問使用者,直接執行]

* “find /tmp -atime +30 –exec rm –rf {} \;”    //删除查找到的超過30天沒有通路過檔案

* “find /tmp -iregex “.*.[sh,bat]” -exec cp {} {}.old \;”   // 替代查找到的檔案,保留源檔案(mv不保留)

locate

locate指令和find找尋檔案的功能類似,但locate是透過update程式将硬碟中的所有檔案和目錄資料先建立一個索引資料庫,在 執行loacte時直接找該索引,查詢速度會較快,索引資料庫一般是由作業系統管理,但也可以直接下達update強迫系統立即修改索引資料庫。

locate [option] [pattern]

less

less 工具是對檔案或其它輸出進行分頁顯示的工具(建議結合管道針對其他輸出使用,檔案vim處理),提供前後翻頁功能,以及搜尋功能。

-b [緩沖區大小] 設定緩沖區的大小

-e 當檔案顯示結束後,自動離開

-f 強迫打開特殊檔案,例如外圍裝置代号、目錄和二進制檔案

-g 隻标志最後搜尋的關鍵詞

-i 忽略搜尋時的大小寫

-m 顯示類似more指令的百分比

-N 顯示每行的行号

-o [檔案名] 将less 輸出的内容在指定檔案中儲存起來

-Q 不使用警告音

-s 顯示連續空行為一行

-S 行過長時間将超出部分舍棄

-x [數字] 将“tab”鍵顯示為規定的數字空格

/字元串:向下搜尋“字元串”的功能

?字元串:向上搜尋“字元串”的功能

n:重複前一個搜尋(與 / 或 ? 有關)

N:反向重複前一個搜尋(與 / 或 ? 有關)

b 向後翻一頁

d 向後翻半頁

h 顯示幫助界面

Q 退出less 指令

u 向前滾動半頁

y 向前滾動一行

空格鍵 滾動一頁

Enter鍵 滾動一行

[pagedown]: 向下翻動一頁

[pageup]: 向上翻動一頁

which

which指令的作用是,在PATH變量指定的路徑中,搜尋某個系統指令的位置,并且傳回第一個搜尋結果。也就是說,使用which指令,就可以看到某個系統指令是否存在,以及執行的到底是哪一個位置的指令。

whereis

whereis指令隻能用于程式名的搜尋,而且隻搜尋二進制檔案(參數-b)、man說明檔案(參數-m)和源代碼檔案(參數-s)。如果省略參數,則傳回所有資訊。(eg:whereis -b tomcat)

和find相比,whereis查找的速度非常快,這是因為linux系統會将 系統内的所有檔案都記錄在一個資料庫檔案中,當使用whereis和locate時,會從資料庫中查找資料,而不是像find指令那樣,通過周遊硬碟來查找,效率自然會很高。

但是該資料庫檔案并不是實時更新,預設情況下是一星期更新一次,是以,我們在用whereis和locate 查找檔案時,有時會找到已經被删除的資料,或者剛剛建立檔案,卻無法查找到,原因就是因為資料庫檔案沒有被更新。

tail

tail 指令從指定點開始将檔案寫到标準輸出.使用tail指令的-f選項可以友善的查閱正在改變的日志檔案,tail -f filename會把filename裡最尾部的内容顯示在螢幕上,并且不但重新整理,使你看到最新的檔案内容.

tail[必要參數][選擇參數][檔案]

-f 循環讀取

-q 不顯示處理資訊

-v 顯示詳細的處理資訊

-c[數目] 顯示的位元組數

-n[行數] 顯示行數

–pid=PID 與-f合用,表示在程序ID,PID死掉之後結束.

-q, –quiet, –silent 從不輸出給出檔案名的首部

-s, –sleep-interval=S 與-f合用,表示在每次反複的間隔休眠S秒

grep

grep(global search regular expression(RE) and print out the line,全面搜尋正規表達式并把行列印出來)是一種強大的文本搜尋工具,它能使用正規表達式搜尋文本,并把比對的行列印出來

grep [選項]… PATTERN [FILE]…

-n 在顯示符合範本樣式的那一列之前,标示出該列的編号。

-q 不顯示任何資訊。

-R/-r 此參數的效果和指定“-d recurse”參數相同。

-e [範本樣式] 指定字元串作為查找檔案内容的範本樣式。

-E 将範本樣式為延伸的普通表示法來使用,意味着使用能使用擴充正規表達式。

-f [範本檔案] 指定範本檔案,其内容有一個或多個範本樣式,讓grep查找符合範本條件的檔案内容,格式為每一列的範本樣式。

grep 支援的正則文法

^ 錨定行的開始 如:’^grep’比對所有以grep開頭的行。

$ 錨定行的結束 如:’grep$’比對所有以grep結尾的行。

. 比對一個非換行符的字元 如:’gr.p’比對gr後接一個任意字元,然後是p。

* 比對零個或多個先前字元 如:’*grep’比對所有一個或多個空格後緊跟grep的行。 .*一起用代表任意字元。

[] 比對一個指定範圍内的字元,如’[Gg]rep’比對Grep和grep。

[^] 比對一個不在指定範圍内的字元,如:’[^A-FH-Z]rep’比對不包含A-R和T-Z的一個字母開頭,緊跟rep的行。

\(..\) 标記比對字元,如’\(love\)’,love被标記為1。

\ 錨定單詞的開始,如:’\比對包含以grep開頭的單詞的行。

\> 錨定單詞的結束,如’grep\>’比對包含以grep結尾的單詞的行。

x\{m\} 重複字元x,m次,如:’0\{5\}’比對包含5個o的行。

x\{m,\} 重複字元x,至少m次,如:’o\{5,\}’比對至少有5個o的行。

x\{m,n\}重複字元x,至少m次,不多于n次,如:’o\{5,10\}’比對5–10個o的行。

\w 比對文字和數字字元,也就是[A-Za-z0-9],如:’G\w*p’比對以G後跟零個或多個文字或數字字元,然後是p。

\b 單詞鎖定符,如: ‘\bgrep\b’隻比對grep。

eg:

ls -R 查找目錄 | grep “檔案名所帶字元”(遞歸查找目前檔案夾下,指定檔案名)

grep -R “word” “dir”(遞歸查檔案夾下所有檔案中的”word“)

grep -E “[1-9]+” 等于 egrep “[1-9]+”

Other Command

chmod

chmod指令用于改變linux系統檔案或目錄的通路權限。用它控制檔案或目錄的通路權限。該指令有兩種用法:一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。

chmod [-cfvR] [–help] [–version] mode file

權限範圍:

u :目錄或者檔案的目前的使用者

g :目錄或者檔案的目前的群組

o :除了目錄或者檔案的目前使用者或群組之外的使用者或者群組

a :所有的使用者及群組

權限代号:

r :讀權限,用數字4表示

w :寫權限,用數字2表示

x :執行權限,用數字1表示

- :删除權限,用數字0表示

s :特殊權限 ([特殊權限](http://alan-hjkl.iteye.com/blog/1526858))

tar

Linux中很多壓縮程式隻能針對一個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你得先将這一大堆檔案先打成一個包(tar指令),然後再用壓縮程式進行壓縮(gzip bzip2指令)。

常見解壓/壓縮指令

tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是壓縮!)

.gz

解壓1:gunzip FileName.gz

解壓2:gzip -d FileName.gz

壓縮:gzip FileName

.tar.gz 和 .tgz

解壓:tar zxvf FileName.tar.gz

壓縮:tar zcvf FileName.tar.gz DirName

.bz2

解壓1:bzip2 -d FileName.bz2

解壓2:bunzip2 FileName.bz2

壓縮: bzip2 -z FileName

.tar.bz2

解壓:tar jxvf FileName.tar.bz2

壓縮:tar jcvf FileName.tar.bz2 DirName

.bz

解壓1:bzip2 -d FileName.bz

解壓2:bunzip2 FileName.bz

壓縮:未知

.tar.bz

解壓:tar jxvf FileName.tar.bz

壓縮:未知

.Z

解壓:uncompress FileName.Z

壓縮:compress FileName

.tar.Z

解壓:tar Zxvf FileName.tar.Z

壓縮:tar Zcvf FileName.tar.Z DirName

.zip

解壓:unzip FileName.zip

壓縮:zip FileName.zip DirName

.rar

解壓:rar x FileName.rar

壓縮:rar a FileName.rar DirName

netstat

netstat指令用于顯示與IP、TCP、UDP和ICMP協定相關的統計資料,一般用于檢驗本機各端口的網絡連接配接情況。

netstat [-acCeFghilMnNoprstuvVwx][-A [網絡類型]][–ip]

指令參數:

-a或–all 顯示所有連線中的Socket。

-A[網絡類型]或–[網絡類型] 列出該網絡類型連線中的相關位址。

-c或–continuous 持續列出網絡狀态。

-C或–cache 顯示路由器配置的快取資訊。

-e或–extend 顯示網絡其他相關資訊。

-F或–fib 顯示FIB。

-g或–groups 顯示多重廣播功能群組組員名單。

-h或–help 線上幫助。

-i或–interfaces 顯示網絡界面資訊表單。

-l或–listening 顯示監控中的伺服器的Socket。

-M或–masquerade 顯示僞裝的網絡連線。

-n或–numeric 直接使用IP位址,而不通過域名伺服器。

-N或–netlink或–symbolic 顯示網絡硬體外圍裝置的符号連接配接名稱。

-o或–timers 顯示計時器。

-p或–programs 顯示正在使用Socket的程式識别碼和程式名稱。

-r或–route 顯示Routing Table。

-s或–statistice 顯示網絡工作資訊統計表。

-t或–tcp 顯示TCP傳輸協定的連線狀況。

-u或–udp 顯示UDP傳輸協定的連線狀況。

-v或–verbose 顯示指令執行過程。

-V或–version 顯示版本資訊。

-w或–raw 顯示RAW傳輸協定的連線狀況。

-x或–unix 此參數的效果和指定”-A unix”參數相同。

–ip或–inet 此參數的效果和指定”-A inet”參數相同。

狀态說明:

LISTEN:偵聽來自遠方的TCP端口的連接配接請求

SYN-SENT:再發送連接配接請求後等待比對的連接配接請求(如果有大量這樣的狀态包,檢查是否中招了)

SYN-RECEIVED:再收到和發送一個連接配接請求後等待對方對連接配接請求的确認(如有大量此狀态,估計被flood攻擊了)

ESTABLISHED:代表一個打開的連接配接

FIN-WAIT-1:等待遠端TCP連接配接中斷請求,或先前的連接配接中斷請求的确認

FIN-WAIT-2:從遠端TCP等待連接配接中斷請求

CLOSE-WAIT:等待從本地使用者發來的連接配接中斷請求

CLOSING:等待遠端TCP對連接配接中斷的确認

LAST-ACK:等待原來的發向遠端TCP的連接配接中斷請求的确認(不是什麼好東西,此項出現,檢查是否被攻擊)

TIME-WAIT:等待足夠的時間以確定遠端TCP接收到連接配接中斷請求的确認

CLOSED:沒有任何連接配接狀态

eg:

netstat -apu 顯示UDP端口号的使用情況

netstat -a | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ 顯統計機器中網絡連接配接各個狀态個數

netstat -nat | grep “192.168.120.20:16067” |awk ‘{print $5}’|awk -F: ‘{print $4}’|sort|uniq -c|sort -nr|head -20檢視連接配接某服務端口最多的的IP位址

netstat -anpt | grep ‘:16064’找出運作在指定端口的程序

ps

ps指令列出的是目前那些程序的快照,就是執行ps指令的那個時刻的那些程序,如果想要動态的顯示程序資訊,就可以使用top指令。

指令參數:

-a 顯示同一終端下的所有程式

-A 顯示所有程序

c 顯示程序的真實名稱

-N 反向選擇

-e 等于“-A”

e 顯示環境變量

f 顯示程式間的關系

-H 顯示樹狀結構

r 顯示目前終端的程序

T 顯示目前終端的所有程式

u 指定使用者的所有程序

-au 顯示較詳細的資訊

-aux 顯示所有包含其他使用者的行程

-C【指令】 列出指定指令的狀況

–lines[行數]每頁顯示的行數

–width[字元數] 每頁顯示的字元數

–help 顯示幫助資訊

–version 顯示版本顯示

linux上程序有5種狀态:

1. 運作(正在運作或在運作隊列中等待)

2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信号)

3. 不可中斷(收到信号不喚醒和不可運作, 程序必須等待直到有中斷發生)

4. 僵死(程序已終止, 但程序描述符存在, 直到父程序調用wait4()系統調用後釋放)

5. 停止(程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号後停止運作運作)

ps工具辨別程序的5種狀态碼:

D 不可中斷 uninterruptible sleep (usually IO)

R 運作 runnable (on run queue)

S 中斷 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

輸出含義:

F 代表這個程式的旗标 (flag), 4 代表使用者為 super user

S 代表這個程式的狀态 (STAT),關于各 STAT 的意義将在内文介紹

UID 程式被該 UID 所擁有

PID 就是這個程式的 ID !

PPID 則是其上級父程式的ID

C CPU 使用的資源百分比

PRI 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹

NI 這個是 Nice 值,在下一小節我們會持續介紹

ADDR 這個是 kernel function,指出該程式在記憶體的那個部分。如果是個 running的程式,一般就是 “-“

SZ 使用掉的記憶體大小

WCHAN 目前這個程式是否正在運作當中,若為 - 表示正在運作

TTY 登入者的終端機位置

TIME 使用掉的 CPU 時間。

CMD 所下達的指令為何

eg:

ps -u root 顯示指定使用者資訊

ps -ef 顯示所有程序資訊,連同指令行

ps aux 列出目前所有的正在記憶體當中的程式

watch

可以将指令的輸出結果輸出到标準輸出裝置,多用于周期性執行指令/定時執行指令

指令參數:

-n或–interval watch預設每2秒運作一下程式,可以用-n或-interval來指定間隔的時間。

-d或–differences 用-d或–differences 選項watch 會高亮顯示變化的區域。 而-d=cumulative選項會把變動過的地方(不管最近的那次有沒有變動)都高亮顯示出來。

-t 或-no-title 會關閉watch指令在頂部的時間間隔,指令,目前時間的輸出。

-h, –help 檢視幫助文檔

eg:

watch -n 1 -d ‘pstree|grep http’ 每隔一秒高亮顯示http連結數的變化情況

watch -d ‘ls -l|grep scf’ 監測目前目錄中 scf’ 的檔案的變化

watch -n 10 ‘cat /proc/loadavg’ 10秒一次輸出系統的平均負載

Other Command Reference

vim

模式切換

其它模式==>普通模式

Esc

普通模式==>插入模式

i 在光标前插入 I 在行首插入

a 在光标後插入 A 在行末插入

o 在目前行之下建立行 O 在目前行之上建立行

r 替換目前字元 R 從目前字元開始替換

普通模式==>指令模式

:

普通模式==>可視模式

v ,V ,<Ctrl+v>

插入

i      在光标之前插入

I      在一行的開頭處插入

a      在光标之後追加

A      在一行的結尾處追加

o      在光标所在位置的下一行打開新行插入

O      在光标所在位置的上一行打開新行插入

查找

查詢環境設定

:set hlsearch      打開高亮顯示查找的文本

:set nohlsearch      關閉高亮顯示查找的文本

:nohlsearch      關閉目前高亮顯示的結果

:set incsearch      打開顯示查找比對過程

:set noincsearch      關閉顯示查找比對過程

:set ignorecase      忽略大小寫

:set noignorecase      精确比對大小寫

:set nowrapscan      禁止循環查找方式

:set wrapscan      啟用循環查找方式

Command

/csdn      向下查找一個名稱為csdn的字元串

?csdn      向上查找一個名稱為csdn的字元串

* 和 #     比對光标目前所在的單詞,移動光标到下一個比對單詞(*是下一個,#是上一個)

n      表示向下繼續查找前一個查找的操作(和上面的操作配合使用)

N      表示向上繼續查找前一個查找的操作(和上面的操作配合使用)

/csdn\c       忽略大小寫的查找時候,在索要查找的字元串後面加\c

:%s///gn       統計目前模式比對的次數(實際上調用了substitute指令,标志位n會抑制正常的替換操作,替換域無論為什麼都是不生效的。)

替換

:[range]s/from/to/[flags]

     [range]

不寫      預設為光标所在的行。

.       光标所在的行。

1      第一行。

$      最後一行。

33      第33行。

‘a      标記a所在的行(之前要使用ma做過标記)。

.+1      目前光标所在行的下面一行。

$-1      倒數第二行。(這裡說明我們可以對某一行加減某個數值來取得相對的行)。

22,33      第22~33行。

1,$      第1行 到 最後一行。

1,.      第1行 到 目前行。

.,$      目前行 到 最後一行。

‘a,’b      标記a所在的行 到 标記b所在的行。

%      所有行(與 1,$ 等價)。

?chapter?      從目前位置向上搜尋,找到的第一個chapter所在的行。(其中chapter可以是任何字元串或者正規表達式。

/chapter/      從目前位置向下搜尋,找到的第一個chapter所在的行。(其中chapter可以是任何字元串或者正規表達式。

     [flags]

無       隻對指定範圍内的第一個比對項進行替換。

g       對指定範圍内的所有比對項進行替換。(g 放在指令末尾,表示對搜尋字元串的每次出現進行替換;g 放在指令開頭,表示對正文中所有包含搜尋字元串的行進行替換操作)

c       在替換前請求使用者确認。

e       忽略執行過程中的錯誤。

     eg:

:s/from/to/       将目前行中的第一個from,替換成to。如果目前行含有多個from,則隻會替換其中的第一個。

:s/from/to/g       将目前行中的所有from都替換成to。

:s/from/to/gc       将目前行中的所有from都替換成to,但是每一次替換之前都會詢問請求使用者确認此操作。

:33s/from/to/g      在第33行進行替換操作。

:$s/from/to/g      在最後一行進行替換操作。

:%s/from/to/g       對所有行的内容進行替換。

:g/str1/s//str2/g (等于”:1,$ s/str1/str2/g“)      用字元串 str2 替換正文中所有出現的字元串 str1

:g/str1/s/str2/str3/g      用字元串 str3 替換正文中所有出現str1所在行的所有字元串 str2

複制粘貼

vim有12個粘貼闆(某些版本大于12個),0-9,a,”,+等,其中”為預設粘貼闆,+為系統剪貼闆(:reg檢視有沒有+剪貼闆,沒有的話需要安裝gnome)

y      複制標明的内容(結合v,V指令)

yy/Y       複制目前行

yw      複制目前詞

2yy/y2y      兩行

y$       複制至行尾

y^      複制至行首

“+yy       複制目前行到系統剪貼闆

p      小寫p代表貼至遊标後(下)。

P      大寫P代表貼至遊标前(上)。

“+p      粘貼系統剪貼闆内容

跳轉

NG/:N      到第 N 行

gg      到第一行。(相當于1G,或 :1)

G       到最後一行。

w      到下一個單詞的開頭。

e      到下一個單詞的結尾。(若單詞是由blank字元分隔,需要使用大寫的E和W)

%      比對括号移動,包括 (, {, [. (需要把光标先移到括号上)

0       到行頭

$      到本行最後一個字元

^       到本行的第一個非blank字元

g_       到本行最後一個不是blank字元的位置。

fa       到本行下一個為a的字元處,你也可以fs到下一個為s的字元。

t,       到本行逗号前的第一個字元。逗号可以變成其它字元。

3fa       在目前行查找第三個出現的a。

F 和 T       和 f 和 t 一樣,隻不過是相反方向。

hjkl(←↓↑→)       左下上右

<Ctrl+f>       下翻一頁

<Ctrl+d>      下翻半頁

<Ctrl+b>       上翻一頁

<Ctrl+u>       上翻半頁

選擇

v      選中字元

V      選中行

Ctrl+v      選中塊

區域選擇

vi”      選中目前光标所在”“裡的内容

va”      選中目前光标所在”“裡的内容,同時包含”“

v2a”      選中目前光标(#)所在”*”ro#d“***“裡的内容,同時包含”“

分屏

split       建立分屏 (:vsplit建立垂直分屏,:new 空白文檔)

<Ctrl-w><dir>      dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一個,其用來切換分屏。

<Ctrl-w>+ (或 <Ctrl-w>-)       增加尺寸

标簽頁

:tabe /path/to/file.txt       在一個新的 tab 頁中打開檔案

:tabnew       建立一個 tab 頁

:tabs       檢視 tab 頁清單,通過“>”顯示目前視窗、“+”顯示可修改的緩沖區

:tabc       關閉目前的 tab 頁

:tab split       在目前緩沖區使用新的 tab 頁打開檔案

:tabn       切換到下一個 tab 頁

:tabp       切換到上一個 tab 頁

:tabr[ewind]       轉到第一個 tab 頁

:tabf[irst]       與上一指令作用相同

More Command

d      删除選中内容

x       剪切目前字元

r      替換光标所在字元

u       撤銷

Ctrl+r       撤銷撤銷

gU      選中内容變大寫

gu      選中内容變小寫

gD      跳轉到目前word第一次出現的位置,可用于局部變量的定義處查找

dd      删除目前行

Ctrl+n,Ctrl+p      自動補全

J      合并行

”       跳轉到光标上次停靠的地方, 是兩個’, 而不是一個”

mx      設定書簽,x隻能是a-z的26個字母

`x      跳轉到書簽處(“`”,反引号,1左邊的鍵)

‘x      跳轉到書簽所在行的首字元(“`”,引号)

>       增加縮進,”x>”表示增加以下x行的縮進

<      減少縮進,”x< “表示減少以下x行的縮進

:!<指令>      臨時切換到Shell執行指令

繼續閱讀