- 查詢指令
- 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執行指令 |