LINUX命令快速上手
快速目錄:
vi 命令:
讀取文件:vi file.txt
編輯文件:i
查找字符串:/hello
保存並退出:點擊"Esc",然後輸入“:wq”,然後回車
直接退出:點擊"Esc",然後輸入“:q!”,然後回車
**光標移動**
光標跳到當前行末尾:$
光標跳到當前行首尾:0(零)
**屏幕翻滾類命令: **
向文件首翻半屏 :Ctrl+u
向文件尾翻半屏 :Ctrl+d
向文件尾翻一屏: Ctrl+f
向文件首翻一屏 :Ctrl+b
**移動光標類命令**
光標左移一個字符:h
光標右移一個字符:l
光標右移一個字符:space
光標左移一個字符:Backspace
光標上移一行:k或Ctrl+p
光標下移一行:j或Ctrl+n
光標移至屏幕中間行:M
光標移至屏幕最後行:L
光標下移一行:Enter
光標右移一個字至字首:w或W
光標左移一個字至字首:b或B
光標右移一個字至字尾:e或E
光標移至句尾:)
光標移至句首 (
光標移至段落開頭:}
光標移至段落結尾:{
光標移至第n行首:nG
光標下移n行:n+
光標上移n行:n-
光標移至第n行尾:n$
光標移至屏幕頂行:H
光標移至當前行首:0(注意是數字零)
光標移至當前行尾:$
**插入文本類命令 **
在光標前:i
在當前行首:I
光標後:a
在當前行尾:A
在當前行之下新開一行:o
在當前行之上新開一行:O
替換當前字符:r
替換當前字符及其後的字符,直至按ESC鍵:R
從當前光標位置處開始,以輸入的文本替代指定數目的字符:s
刪除指定數目的行,並以所輸入文本代替之:S
修改指定數目的字:ncw或nCW
修改指定數目的行:nCC
**刪除命令 **
刪除光標處開始及其後的n-1個字:ndw或ndW
刪至行首:do
刪至行尾:d$
刪除當前行及其後n-1行:ndd
刪除一個字符,x刪除光標後的,而X刪除光標前的:x或X
刪除輸入方式下所輸入的文本:Ctrl+u
**搜索及替換命令 **
從光標開始處向文件尾搜索pattern:/pattern
從光標開始處向文件首搜索pattern:?pattern
n在同一方向重複上一次搜索命令:
N在反方向上重複上一次搜索命令:
將當前行中所有p1均用p2替代:s/p1/p2/g
將第n1至n2行中所有p1均用p2替代:n1,n2s/p1/p2/g
將文件中所有p1均用p2替換:g/p1/s//p2/g
**選項設置 **
列出所有選項設置情況:all
設置終端類型:term
在搜索中忽略大小寫:ignorance
顯示製表位(Ctrl+I)和行尾標誌($):list
顯示行號:number
顯示由面向行的命令修改過的數目:report
顯示簡短的警告信息:terse
在轉到別的文件時若沒保存當前文件則顯示NO write信息:warn
允許在搜索模式中,使用前面不帶“\”的特殊字符:nomagic
禁止vi在搜索到達文件兩端時,又從另一端開始:nowrapscan
允許vi顯示其他用戶用write寫到自己終端上的信息:mesg
find命令:
列出當前目錄及子目錄下所有文件和文件夾:
在/home目錄下查找以.txt結尾的文件名:find /home -name "*.txt"
同上,但忽略大小寫:find /home -iname "*.txt"
當前目錄及子目錄下查找所有以.txt和.pdf結尾的文件:
find . \( -name "*.txt" -o -name "*.pdf" \)
或find . -name "*.txt" -o -name "*.pdf"
匹配文件路徑或者文件:find /usr/ -path "*local*"
基於正則表達式匹配文件路徑:find . -regex ".*\(\.txt|\.pdf\)$"
同上,但忽略大小寫:find . -iregex ".*\(\.txt|\.pdf\)$"
否定參數
找出/home下不是以.txt結尾的文件:find /home ! -name "*.txt"
根據文件類型進行搜索:find . -type 類型參數
類型參數列表:
f 普通文件
l 符號連接
d 目錄
c 字符設備
b 塊設備
s 套接字
p Fifo
基於目錄深度搜索:
向下最大深度限制爲3:find . -maxdepth 3 -type f
搜索出深度距離當前目錄至少2個子目錄的所有文件:find . -mindepth 2 -type f
根據文件時間戳進行搜索:find . -type f 時間戳
UNIX/Linux文件系統每個文件都有三種時間戳:
訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。
修改時間(-mtime/天,-mmin/分鐘):文件最後一次修改時間。
變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最後一次修改時間。
搜索最近七天內被訪問過的所有文件:find . -type f -atime -7
搜索恰好在七天前被訪問過的所有文件:find . -type f -atime 7
搜索超過七天內被訪問過的所有文件:find . -type f -atime +7
搜索訪問時間超過10分鐘的所有文件:find . -type f -amin +10
找出比file.log修改時間更長的所有文件:find . -type f -newer file.log
根據文件大小進行匹配
find . -type f -size 文件大小單元
文件大小單元:
b —— 塊(512字節)
c —— 字節
w —— 字(2字節)
k —— 千字節
M —— 兆字節
G —— 吉字節
搜索大於10KB的文件:find . -type f -size +10k
搜索小於10KB的文件:find . -type f -size -10k
搜索等於10KB的文件:find . -type f -size 10k
刪除匹配文件
刪除當前目錄下所有.txt文件:find . -type f -name "*.txt" -delete
根據文件權限/所有權進行匹配
當前目錄下搜索出權限爲777的文件:find . -type f -perm 777
找出當前目錄下權限不是644的php文件:find . -type f -name "*.php" ! -perm 644
找出當前目錄用戶tom擁有的所有文件:find . -type f -user tom
找出當前目錄用戶組sunk擁有的所有文件:find . -type f -group sunk
藉助-exec選項與其他命令結合使用
找出當前目錄下所有root的文件,並把所有權更改爲用戶tom
find .-type f -user root -exec chown tom {} \;
上例中,{} 用於與-exec選項結合使用來匹配所有文件,然後會被替換爲相應的文件名。
找出自己家目錄下所有的.txt文件並刪除:find $HOME/. -name "*.txt" -ok rm {} \;
上例中,-ok和-exec行爲一樣,不過它會給出提示,是否執行相應的操作。
查找當前目錄下所有.txt文件並把他們拼接起來寫入到all.txt文件中:
find . -type f -name "*.txt" -exec cat {} \;> all.txt
find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
找出當前目錄下所有.txt文件並以“File:文件名”的形式打印出來:
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
因爲單行命令中-exec參數中無法使用多個命令,
以下方法可以實現在-exec之後接受多條命令:-exec ./text.sh {} \;
搜索但跳出指定的目錄
查找當前目錄或者子目錄下所有.txt文件,但是跳過子目錄sk
find . -path "./sk" -prune -o -name "*.txt" -print
find其他技巧收集
要列出所有長度爲零的文件:find . -empty