三督暂、Vim文本編輯器-算術(shù)和邏輯表達(dá)式-Bash編程-總結(jié)

一、總結(jié)vim命令行模式常見快捷方式穷吮,以及vim查找,替換的方法

vim是一款強(qiáng)大的文本編輯器饥努,常見的選項如下:

  1. +# , 這里的井號是某個數(shù)字捡鱼,意思是打開文件時,光標(biāo)自動跳轉(zhuǎn)至第#號的行首位置
示例: vim +10 /etc/passwd --> 跳轉(zhuǎn)到密碼文件的第10行
  1. +/PATTERN 酷愧, 直接跳轉(zhuǎn)到由正則表達(dá)式所匹配到的行處
示例:vim +/^root /etc/passwd -->跳轉(zhuǎn)到密碼文件以root開頭的行 ---> 這里的+/ 不能省略
  1. -b 以二進(jìn)制形式打開
示例:vim -b /etc/passwd
:%!xxd --> 命令模式下切換為二進(jìn)制可編輯模式
  1. -d 比較多個文件驾诈,可以找出多個文件的差異之處
示例:vim -d /etc/fstab /data/fstab

Vim的命令模式,也叫普通模式溶浴, 默認(rèn)打開文件就處在此種模式下 乍迄。該模式下主要用于查看文件的內(nèi)容,可以移動光標(biāo)士败,可以剪切和粘貼闯两,該模式下常見的快捷操作方式總結(jié)如下:

在命令模式光標(biāo)移動快捷鍵:

  1. h j k l 上下左右方向移動
  2. w e 單詞間向后移動
  3. b 單詞間向前移動
  4. H M L 光標(biāo)在當(dāng)前頁跳轉(zhuǎn),H是跳轉(zhuǎn)到頁首 M是中間 L 是頁尾
  5. zt zz zb 光標(biāo)所在行移動位置,zt移動到最頂部 zz移動到中間 zb移動到底部
  6. ^ $ 0 行首行尾間跳轉(zhuǎn)
  7. G gg 文件第一行和最后一行移動

命令模式下的基本操作 :

  1. x 谅将; 剪切光標(biāo)處的字符
  2. J : 刪除換行符 把多行合成一行
  3. p : 在當(dāng)前光標(biāo)的后面粘貼漾狼,通常和x搭配使用
  4. P : 在當(dāng)前光標(biāo)的前面粘貼
  5. ~ : 轉(zhuǎn)換大小寫
  6. r : 替換光標(biāo)處的某一個字符
  7. R : 按下 大寫的R 進(jìn)入到替換模式,該模式下從光標(biāo)處出入的內(nèi)容將會把原有內(nèi)容覆蓋

刪除操作:delete
1. d 是刪除操作饥臂, 需要結(jié)合光標(biāo)跳轉(zhuǎn)字符逊躁,實現(xiàn)選定范圍的刪除操作,比如:
2. d:是行尾 所以 d就是從光標(biāo)當(dāng)前位置刪除至行尾 大寫的D 等同于d
3. d0 : 0是行首隅熙, d0 就是從光標(biāo)刪除至行首
4. dw: 刪除光標(biāo)開始至下一個單詞的詞首
6. num+dd : num是一個數(shù)字稽煤,刪除 num行
7. dG : G 是跳轉(zhuǎn)到文件的末行, 所以dG就是刪除當(dāng)前光標(biāo)到末行
8. dgg : 同理刪除當(dāng)前光標(biāo)到行首

復(fù)制操作: yanked

  1. y 是復(fù)制囚戚, 其操作類似于d命令酵熙,需要結(jié)合光標(biāo)跳轉(zhuǎn)指令匹配使用
  2. yw : 復(fù)制一個單詞
  3. y0 : 復(fù)制當(dāng)前光標(biāo)到行首
  4. y$ : 復(fù)制當(dāng)前光標(biāo)到行尾
  5. y^
  6. ye
  7. yb
  8. yy : 復(fù)制一整行 p 在下方粘貼, 大寫的P在上方粘貼新行 Y相當(dāng)于yy 復(fù)制一整行
  9. num加上yy : num是一個數(shù)字弯淘, 復(fù)制num行

粘貼操作:

  1. P : 如果復(fù)制為整行绿店,那么在該行的上方粘貼新的一整行內(nèi)容;否則庐橙,在光標(biāo)之前粘貼
  2. p : 如果復(fù)制為整行假勿,那么在該行下方粘貼新的一整行內(nèi)容;否則态鳖,在光標(biāo)之后粘貼

改變命令:

  1. c 執(zhí)行刪除操作 然后直接進(jìn)入到插入模式下了
  2. c$ : 刪除至行尾转培,進(jìn)入插入模式
  3. cw : 刪除至下一個單詞的詞首,進(jìn)入插入模式
  4. ce :
  5. cb :
  6. cc : 刪除一整行
  7. c^ :
  8. C : 相當(dāng)于c$

vim下的搜索替換功能浆竭,是在擴(kuò)展命令模式下實現(xiàn)的:

地址定界的基本用法:
格式: start_pos,end_pos 起始位置和結(jié)束位置
簡要說明:

  1. 定界后跟著要執(zhí)行的操作 比如刪除 復(fù)制
  2. num1,num2 兩個數(shù)字確定行的范圍浸须,比如 27,30p -> 這就是從27行到30行執(zhí)行復(fù)制操作
  3. num 具體的某一行 執(zhí)行什么操作惨寿, 比如 10d -> 刪除第10行
  4. num,+num : 從左側(cè)的行數(shù)開始,加上右側(cè)的偏移數(shù)字作為結(jié)束行 執(zhí)行相應(yīng)的操作
  5. 點號就是當(dāng)前行 -> 比如 .,$d 就是刪除當(dāng)前光標(biāo)到最后一行的所有內(nèi)容
  6. $ 最后一行
  7. % 百分號表示全文 比如 %d 刪除全文

地址定界高級用法

  1. 格式:/pat1/,/pat2/operation --> 從pat1匹配到的行作為起始删窒,pat2匹配到的行作為結(jié)束裂垦,對這個范圍的>內(nèi)容執(zhí)行后面的操作,其中pat1和pat2可以使用正則表達(dá)式匹配
  2. 示例如下:
    /b/,/f/d --> 開始位置是查找到以開頭的行,結(jié)束的位置是查找到以d開頭的行肌索,執(zhí)行的操作是d也即刪除
    /^b/,$d ---> 從以b開頭的行作為開始蕉拢,到文件的末尾,執(zhí)行刪除操作
  3. 相應(yīng)的其它操作還有 :
    y : 復(fù)制
    w file : 另存為外部文件
    r file : 讀取外部文件

搜索并替代:
格式:定界符s/要查找的內(nèi)容/替換為的內(nèi)容/修飾符
s: 在擴(kuò)展模式下完成查找替換操作
要查找的內(nèi)容:可使用模式
替換為的內(nèi)容:不能使用模式诚亚,但可以使用\1, \2, ...等后向引用符號晕换;還可以使用“&”引用前面查找時查找到
的整個內(nèi)容
修飾符有以下幾種:
i: 忽略大小寫
g: 全局替換;默認(rèn)情況下站宗,每一行只替換第一次出現(xiàn)
gc:全局替換闸准,每次替換前詢問
u查找替換中的分隔符/可替換為其它字符,例如
%s@/etc@/var@g
s#/boot#/#i
刪除空白行
%s/^["\n"]// ---> 尋找以換行符開頭的行梢灭,替換為空

二夷家、總結(jié)腳本中運(yùn)算符、邏輯運(yùn)算以及用法

  • bash中的算術(shù)運(yùn)算:
    『 + - * / : 加減乘除 』
    『 % 求余 』
    『 ** 乘方 』
    『 ++ -- 自增自減 』
    『 += -= 增強(qiáng)型賦值 』

  • 算術(shù)運(yùn)算有特定的寫法來完成:

   1.  使用let
       n=1+2; echo $n   這樣寫或辖,默認(rèn)將1+2當(dāng)成字符瘾英,并不會當(dāng)成數(shù)字運(yùn)算
       let 1+2   使用let 1+2將被當(dāng)成數(shù)字進(jìn)行運(yùn)算,但是結(jié)果不顯示
       let n=1+2;echo $n  ---> 需要用一個變量保存起來,然后打印變量的值
    
  2.  使用 $[]  dollar符加中括號颂暇,算術(shù)運(yùn)算寫在中括號內(nèi)
       n=$[3*2] ; echo n
  
   3.  使用 $(())  dollar符跟兩個小括號缺谴,將執(zhí)行的算術(shù)運(yùn)算寫在這兩個括號內(nèi)
        n=$((3*5));echo $n
        不要和 $(CMD)  搞混了, 這種寫法是引用命令   

  4.  使用命令 expr
         expr 3 * 4   
            -- expr是一個命令耳鸯,后面跟著的都是參數(shù) 注意參數(shù)之間要以空格分隔的湿蛔,不能寫成 expr 3*4 
         expr 3 \* 4 
            --  對于乘號還要轉(zhuǎn)義

  5. 聲明為整數(shù)
       declare -i n=3+6 
       echo  "算術(shù)運(yùn)算表達(dá)式"  |bc
  • 邏輯運(yùn)算:
    true ,false ---> 邏輯運(yùn)算中的真的假 是對應(yīng)于二進(jìn)制 的1和 0

      與運(yùn)算 & : 和1做與運(yùn)算,原來是什么就保留什么县爬,和0做與運(yùn)算阳啥,結(jié)果都為0
              echo $[12&24]   ---> 結(jié)果為8
      或運(yùn)算:|  兩個數(shù)只要有一個是1,結(jié)果就是1财喳,全部為0時察迟,結(jié)果才為0 
                 let $[12|24] ---> 結(jié)果為28 
      取反運(yùn)算 ! : 邏輯運(yùn)算符只有兩種,要么真true耳高,要么假false扎瓶,如果是10進(jìn)制的數(shù)字,只要不是0都認(rèn)為是真    
              echo $[!100]    -->  100系統(tǒng)認(rèn)為是真泌枪,取反就變成了假概荷, 結(jié)果輸出為0
              echo $[!1000]   -->  1000也認(rèn)為是真,取反也變成了假碌燕,結(jié)果輸出為0
              echo $[!0]      -->  0認(rèn)為是假误证,取反成了真继薛,結(jié)果輸出為1
              true;echo $?    -->  執(zhí)行狀態(tài)返回1 
              fasle;echo $?   -->  執(zhí)行狀態(tài)返回0
      異或運(yùn)算: ^ 不同為1 , 相同為0 
            用異或?qū)崿F(xiàn)兩個變量的值互換:  比如有 A B 兩個變量 A=10 B=20 
            第一步: A=${A^B}   把A與B異或后的結(jié)果賦值給A    
            第二步: B=${A^B}   把異或后的值與原來的B值異或愈捅, B就成了A 
            第三步: A=${A^B}   異或值與原來的A異或遏考,又變成了B 這樣A就變成了B 
    

三、編寫腳本/root/bin/backup.sh蓝谨,可實現(xiàn)每日將/etc/目錄備份到 /root/etcYYYY-mm-dd中

[root@centos7 bin 22:58:04]#vim backup.sh
  #!/bin/bash                                                                                    
  #!/bin/bash                                                                                    
  #
  #**********************************************************************
  # Desciprtion: the script copy the etc directory to /data/bin/backup.sh  
  # Date:2019-07-14
  # FileName:backup.sh
  # Author:zhengsy39
  # Version:1.0
  #**********************************************************************
 
 # cp的-a選項遞歸復(fù)制所有的文件以及目錄诈皿,并保留文件的屬性
 # -v顯示復(fù)制的過程,開始和結(jié)束友好提示用戶
 echo "backup begin..."
 sleep 5 
 cp -av /etc/ /data/etc-$(date "+%F")  
 echo "backup end..."   

四像棘、編寫腳本/root/bin/nologin.sh和login.sh,實現(xiàn)禁止和充許普通用戶登錄系統(tǒng)

實現(xiàn)禁止普通用戶登錄的腳本: 
[root@centos7 ~ 22:42:02]#vim /data/bin/nologin.sh 
 #!/bin/bash                                                                                     
 #
 #***************************************************************
 # Desciprtion: the script ban on login from normal user  
 # Date:2019-07-14
 # FileName:nologin.sh
 # Author:zhengsy39
 # Version:1.0
 #*************************************************************** 
 
 # 有時候在生產(chǎn)中為了讓管理員順利執(zhí)行某些例行的系統(tǒng)維護(hù)任務(wù),需要禁止普通用戶登錄
 # 只需要在/etc/目錄下創(chuàng)建名稱為nologin的文件即可
 touch /etc/nologin
 [root@centos7 ~ 22:42:55]#cd /data/bin
 [root@centos7 bin 22:42:59]#chmod +x nologin.sh 
 [root@centos7 bin 22:43:08]#ll /etc/nologin
 -rw-r--r--. 1 root root 0 Jul 14 22:43 /etc/nologin
實現(xiàn)恢復(fù)普通用戶登錄的腳本:
    [root@centos7 bin 22:43:17]#vim login.sh
    #!/bin/bash                                                                                    
    #
    #
    #***************************************************************
    # Desciprtion: the script allow login from normal user  
    # Date:2019-07-14
    # FileName:login.sh
    # Author:zhengsy39
    # Version:1.0
    #*************************************************************** 

    rm -rf /etc/nologin 
    [root@centos7 bin 22:46:27]#chmod +x login.sh
    [root@centos7 bin 22:46:42]#login.sh         
    [root@centos7 bin 22:46:49]#ls /etc/nologin
    ls: cannot access /etc/nologin: No such file or directory
    [root@centos7 bin 22:47:01]#

五壶冒、編寫腳本/root/bin/disk.sh,顯示當(dāng)前硬盤分區(qū)中空間利用率最大的值

[zhengsy39@centos7 bin 22:26:51]$vim disk.sh       
#!/bin/bash
#
#***************************************************************
# Desciprtion: the script return the max use percentage of disk  
# Date:2019-07-14
# FileName:disk.sh
# Author:zhengsy39
# Version:1.0
#*************************************************************** 

# 思路:df命令先過濾出含有硬盤分區(qū)信息所有的行缕题,然后使用tr命令轉(zhuǎn)換格式統(tǒng)一使用百分號分割字段
# 然后通過cut命令取出硬盤使用率一列,按照數(shù)值排序后取出首行,就能得出最大的分區(qū)空間使用率
use=`df|grep /dev/sd|tr -s " " "%"|cut -d% -f5|sort -nr|head -n1`
echo "the max percentage of disk is $use"

[zhengsy39@centos7 bin 22:35:22]$chmod +x disk.sh
[zhengsy39@centos7 bin 22:35:26]$disk.sh         
the max percentage of disk is 17
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胖腾,一起剝皮案震驚了整個濱河市烟零,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咸作,老刑警劉巖锨阿,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異记罚,居然都是意外死亡墅诡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門桐智,熙熙樓的掌柜王于貴愁眉苦臉地迎上來末早,“玉大人,你說我怎么就攤上這事说庭∪涣祝” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵刊驴,是天一觀的道長姿搜。 經(jīng)常有香客問我,道長捆憎,這世上最難降的妖魔是什么舅柜? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮攻礼,結(jié)果婚禮上业踢,老公的妹妹穿的比我還像新娘。我一直安慰自己礁扮,他們只是感情好知举,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布瞬沦。 她就那樣靜靜地躺著,像睡著了一般雇锡。 火紅的嫁衣襯著肌膚如雪逛钻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天锰提,我揣著相機(jī)與錄音曙痘,去河邊找鬼。 笑死立肘,一個胖子當(dāng)著我的面吹牛边坤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谅年,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼茧痒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了融蹂?” 一聲冷哼從身側(cè)響起旺订,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎超燃,沒想到半個月后区拳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡意乓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年樱调,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洽瞬。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡本涕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伙窃,到底是詐尸還是另有隱情菩颖,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布为障,位于F島的核電站晦闰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鳍怨。R本人自食惡果不足惜呻右,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞋喇。 院中可真熱鬧声滥,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秉剑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工草娜, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像炎功,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缓溅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容