1氛魁、總結(jié)vim命令行模式常見快捷方式,以及vim查找汛闸,替換的方法
vim命令行模式常見的快捷方式:
字符間跳轉(zhuǎn):h: 左? l: 右? ?j: 下? ?k: 上
? ? ? ? ? ? ? ? ? ? ? #command:跳轉(zhuǎn)由#指定一次跳轉(zhuǎn)的字符數(shù) ? 例:5h向左跳轉(zhuǎn)5個(gè)字符卫袒;6k向上跳三行
單詞間跳轉(zhuǎn):w:下一個(gè)單詞的詞首? ? e:當(dāng)前或下一單詞的詞尾? ? ?b:當(dāng)前或前一個(gè)單詞的詞首
? ? ? ? ? ? ? ? ? ? ? #COMMAND:由#指定一次跳轉(zhuǎn)的單詞數(shù)? ? 例 :??5w?跳轉(zhuǎn)到后面第5個(gè)單詞的詞首? ?3e?跳轉(zhuǎn)到后面數(shù)第3個(gè)單詞的詞尾
當(dāng)前頁跳轉(zhuǎn):H:頁首? ? ?M:頁中間行? ? ? L:頁底? ??
? ? ? ? ? ? ? ? ? ? ? zt:將光標(biāo)所在當(dāng)前行移到屏幕頂端? ?zz:將光標(biāo)所在當(dāng)前行移到屏幕中間? ?zb:將光標(biāo)所在當(dāng)前行移到屏幕底端
行首行尾跳轉(zhuǎn):^: 跳轉(zhuǎn)至行首的第一個(gè)非空白字符? ? 0: 跳轉(zhuǎn)至行首? ? $: 跳轉(zhuǎn)至行尾? ?
? ? ? ?行間移動(dòng):G:最后一行? ? 1G, gg: 第一行? ??
? ? ? ?句間移動(dòng):?):下一句? ? (:上一句
? ?段落間移動(dòng):??}:下一段? ? {:上一段
? ? ? 刪除命令:? d: 刪除命令叁执,可結(jié)合光標(biāo)跳轉(zhuǎn)字符齐婴,實(shí)現(xiàn)范圍刪除? 例:d5l:向后刪除5個(gè)字符:
? ? ? ? ? ? ? ? ? ? ? ? ?d$: 刪除到行尾? ? ?d^:刪除到非空行首? ? ?d0:刪除到行首? ? dd: 刪除光標(biāo)所在的行? ? #dd:多行刪除? ? D:從當(dāng)前光標(biāo)位置一直刪? ? ? ? ? ? ? ? ? ? ? ? ? ? ?除到行尾油猫,等同于d$
? ? ?復(fù)制命令:? y: 復(fù)制,行為相似于d命令? ? y$? ? y^? ? ?y0?? ? yy:復(fù)制行? ? #yy: 復(fù)制多行? ?Y: 復(fù)制整行
粘貼命令(p, paste):? p:緩沖區(qū)存的如果為整行柠偶,則粘貼當(dāng)前光標(biāo)所在行的下方情妖;否則,則粘貼至當(dāng)前光標(biāo)所在處的后面
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?P:緩沖區(qū)存的如果為整行诱担,則粘貼當(dāng)前光標(biāo)所在行的上方毡证;否則,則粘貼至當(dāng)前光標(biāo)所在處的前面
撤消更改? :?u?撤銷最近的更改? ? #u?撤銷之前多次更改? ? U?撤消光標(biāo)落在這行后所有此行的更改嗎? ? 按?Ctrl-r?重做最后的“撤消”更改
? ? ? ? ? ? ? ? ? ?.??重復(fù)前一個(gè)操作? ? n.?重復(fù)前一個(gè)操作n次
vim 中可以使用 :s 命令來替換字符串该肴。
:s/aaa/bbbg ?替換當(dāng)前行的所有hello為sky
:n,$s/aaa/sky 替換第n行開始到最后一行的第一個(gè)aaa為bbb
:n,$s/aaa/bbb/g 替換第n行開始到最后一行的所有aaa為bbb
:%s/aaa/bbb? ? 替換每一行的第一個(gè)aaa為bbb
:%s/aaa/bbb/g ? ?替換每一行的所有aaa為bbb
2情竹、總結(jié)腳本中運(yùn)算符藐不、邏輯運(yùn)算以及用法.
bash中的算術(shù)運(yùn)算有:?+, ?-?,? *?, ?/?, %取模(取余), **(乘方)
實(shí)現(xiàn)算術(shù)運(yùn)算:
(1) let var=算術(shù)表達(dá)式 ? ?例:運(yùn)算命令是let b=1 + 2匀哄。然后用echo $b來輸出b的值。如果沒有l(wèi)et雏蛮,則會(huì)輸出1+2
(2) var=$[算術(shù)表達(dá)式] ? ?例:?a=$[1+3*4]涎嚼。然后用echo $a來輸出a的值13
(3) var=$((算術(shù)表達(dá)式)) ? ?(4) var=$(expr arg1 arg2 arg3 ...)
(5) declare –ivar= 數(shù)值 ? ??(6) echo ‘算術(shù)表達(dá)式’ | bc
乘法符號(hào)有些場景中需要轉(zhuǎn)義,如* ? expr 5 \* 6 ? ?
數(shù)值測試:-ge是否大于等于 ?-eq是否等于 ?-ne是否不等于 ?-lt是否小于 ?-le是否小于等于 ?
邏輯運(yùn)算:
非:挑秉!
! 1 = 0 ! true ? ? ?! 0 = 1 ! false
短路運(yùn)算
短路與 &&法梯; ? ?第一個(gè)為0,結(jié)果必定為0 ? ?第一個(gè)為1犀概,第二個(gè)必須要參與運(yùn)算
短路或 ||? ? ? ? ? ? 第一個(gè)為1立哑,結(jié)果必定為1? ? 第一個(gè)為0,第二個(gè)必須要參與運(yùn)算
異或:^
異或的兩個(gè)值,相同為假姻灶,不同為真
3铛绰、編寫腳本/root/bin/backup.sh,可實(shí)現(xiàn)每日將/etc/目錄備份到?/root/etcYYYY-mm-dd中
? ? ? #/!bin/bash
? ? ?day=`date +%F`
? ? ?echo "start backup..."
? ? ?cp -av /etc /root/etc$day ? ?- a 歸檔: 遞歸产喉、保留文件屬性捂掰、鏈接 ? ?-v:詳細(xì)顯示命令執(zhí)行的操作
? ? ?echo "finsh"
? ? ?unset day ? ?釋放變量
4、編寫腳本/root/bin/nologin.sh和login.sh,實(shí)現(xiàn)禁止和充許普通用戶登錄系統(tǒng)
5曾沈、編寫腳本/root/bin/disk.sh,顯示當(dāng)前硬盤分區(qū)中空間利用率最大的值