文本編輯類型:
全屏編輯器: Vim, Vi, Nano
行編輯器: sed
打開操作:
+#:打開文件直接讓光標處於第#行, 直接使用+,會在文件最末尾
編輯操作:
i(insert), a(append), o(open打開一個新行) , I (行首輸入),A(行尾) ,O(上方打開 一個新行) ,c (change),C
#command:一次跳過指定的字符
單詞間跳轉w(下一個), b(前一個), e(當前或下一個)
^ 行首第一個非空白字符
0 行首
$ 行尾
行間移動
#G:跳轉到#指定行
G:最後一行
gg, 1g:第一行
( ) :句間移動
{}:行間移動
編輯命令
x:刪除光標處的字符
#x: 刪除光標所在處的後#幾個字符
p: 粘貼
d: 刪除 d$, d0,dw ,de ,dw,db,d^
dd:刪除所在行
p: 粘貼當前行的所在行的下方
P:粘貼當前行的所在行的上方
y:複製(yank):
ye ,yw, yb
yy:複製行
#yy 複製多行
改變命令
c:修改
編輯命令 --- 輸入命令
替換命令
r:替換光標所在處的字符(不常用 ) 如ra 替換bbc 爲abc
可視化模式
v:按字符選定
V:按行選定
撤銷操作
u(undo):撤銷此前操作
撤銷撤銷: ctrl +r (restore)
翻屏操作:
ctrl +f
ctrl + b
ctrl + d 向尾部翻半屏
ctrl + u 向首部翻半屏
vimtutor 教程
vim末行模式
內建
地址定界
:start_pos,end_pos例如1,3從1到3 行
.:當前行
$:最後一行
%:全文 相當於1,$
/pat1/,/pat2/:從第一次被 pat1 匹配到的行到第一次被pat2匹配到的結束
查找
/pattern 從當前光標所在處向文件尾部查找
?pattern 從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
查找與替換
s: 在末行模式操作
s/要查找的內容/替換爲的內容/修飾符
可以使用模式
修飾符:i 忽略大小寫
g:全局替換,默認情況下,每一行只替換第一次出現.例如 1,$s/e\(..\)0/E\1O/g, %s/r..t/&er/g(&爲引用前面的r..t)
可以替換分隔符爲#,@,等
多文件模式
vim file1 file2,file3 ....
:next
:prev
:first
:last
:wall
:qall
窗口分割模式:
vim -o|-O FILE1 FILE2
-o水平分割
-O:垂直分割
在窗口間切換:ctrl + w, arrow
在單文件切割: ctrl +w ,s,水平分割, ctrl +w ,v,垂直分割
定製VIM的工作特性
全局:/etc/vimrc
個人:~/.vimrc
末行:當前進程有效
顯示等號:set nu set nonu
匹配:set showmatch簡寫 set sm , set nosm
自動縮進:set ai set noai
高亮搜索: set hlsearch highlight set nohisearch
語法高亮: syntax on syntax off
忽略大小寫: set ic set noic
bash 測試
-e:文件是否存在
存在及類別測試
-b: 存在且爲塊設備文件 -p -c -S -l -d -h
-z:如果 string 的長度爲 0 則爲真。
-nt :file1 新於 file2 , -ot :file1 舊於 file2
文件查找:在文件系統上找到符合條件的文件
文件查找:locate, find
非實時查找:locate(依賴於是否存在索引,索引構建過程需要遍歷整個根文件系統,消耗系統資源。查找速度快,模糊查找。)
locate 要查找的文件file
實時查找:find.通過遍歷指定路徑下的文件系統完成文件查找。查找速度略慢,精確查找
find [OPTION] 查找路徑 查找條件 處理動作
查找路徑:指定具體查找路徑,默認爲當前目錄
查找條件:默認爲找出指定路徑下的所有文件
-name "文件名稱", 支持glob * . ? find ./ -name "*.sh"(嚴格區分文件大小寫) -iname:忽略大小寫
-regex "模式" : 支持使用正則表達式。
-user USERNAME :查找指定用戶的文件 find ./ -user cwb -ls
-group GROUPNAME
-uid UserID -gid Gid
-nouser:用戶被刪除了,沒有屬主的文件
-nogroup 這些操作應該去做,找到將其刪除,防止別人趁虛而入
-type TYPE: f d l s b c p
組合查找 -not -a -o # find ./ -type f \( -user cwb -o -user root \) -ls 如果整個條件取反時, -a 要變- o 或者-o變成-a
根據大小來查找
-size [+|-] k m g
#UNIT :(#-1, # ]
-#UNIT :(#-1, # ]
+#UNIT :(#-1, # ] ,以上的都算
根據時間戳查找
以天查找 -atime
-ctime
-mtime find ./ -mtime +3 3天之前修改過的, -3 3天修改過的
以分鐘 -amin -cmin -mmin
-perm 精確查找 find ./ -perm 644 -ls (精確匹配權限)。find ./ -perm /+222 -ls(至少有222權限中的一個) find ./ -perm /-222 -ls(每一類對象都必須同時擁有爲其指定的權限標準)
-print :顯示到屏幕
-ls 找到的文件執行"ls -l"
-delete 刪除找到的文件
-fls /path/to/somefile :查找到所有文件的長格式信息保存到指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令(交互式的,要求用戶確認) {}:用於查找到文件名稱自身。 find ./ -cmin -5 -exec mv {} {}.new \;
-exec COMMAND {} \;
find . -name "*.txt" -print 在當前目錄中查.txt文件並顯示
find . -name "[A-Z]*" -print 查以大寫字母開頭的文件
find . -name "[a-z][a-z][0--9][0--9].txt" -print 查以兩個小寫字母和兩個數字開頭的txt文件
find . -size +1000000c -print 查長度大於1Mb的文件
find . -size 100c -print 查長度爲100c的文件
find . -size +10 -print 查長度超過期作廢10塊的文件(1塊=512字節)
find . -name "host*" -print 查以host開頭的文件
find . -name "ap*" -o -name "may*" 查找以ap或may開頭的文件
find . -name "tom.txt" [!] -ftype vfat 查找名稱爲tom.txt且文件系統類型不爲or爲vfat的文件
find . -name "wa*" -type l 查找名爲wa開頭且類型爲符號鏈接的文件
find . [!] -type d -print 查找非目錄或者目錄文件
find . -empty 查找大小爲0的文件或空目錄
find . -name "passwd*" -exec grep david {} \ 看是否存在david用戶
find . -perm 755 -print -exec ls -l {} \ 查所有用戶都可讀寫執行的文件
find . -name "tmp.txt" -exec cat {} \ 查找temp.txt文件並查看
find . -name "tmp.txt" -ok rm {} \ 查找temp.txt文件並刪除
find . -mtime -2 在.下查最近兩天內改動過的文件
find . -atime -1 查1天之內被存取過的文件
find . -mmin +60 在.下查60分鐘前改動過的文件
find . -amin +30 查最近30分鐘前被存取過的文件
find . -user david 列出.目錄內屬於用戶david的文件或目錄
find . -uid +501 列出.目錄內用戶的uid大於501的文件或目錄
find . -group david 列出.組內爲david的文件或目錄
find . -gid 501 列出.組內id爲501的文件或目錄
# find /etc/ -not -perm /+222 -ls 都沒有寫權限。
suid sgid sticky chmod 4777 /tmp/a.txt