Linux下VIM編譯器的使用以及shell編程基礎

来源:https://www.cnblogs.com/chenyingying0/archive/2020/01/15/12196266.html
-Advertisement-
Play Games

VIM編譯器的安裝與使用 vim編輯器安裝 在CentOS中,執行:yum -y install vim 普通模式 h: 左移一個字元 j: 下移一行 k: 上移一行 l: 右移一個字元 PageDown(或Ctrl+F):下翻一屏 PageUp(或Ctrl+B):上翻一屏 G:移到緩衝區的最後一行 ...


VIM編譯器的安裝與使用

    vim編輯器安裝
    在CentOS中,執行:yum -y install vim

普通模式

        h: 左移一個字元
         j: 下移一行
        k: 上移一行
        l: 右移一個字元

        PageDown(或Ctrl+F):下翻一屏
        PageUp(或Ctrl+B):上翻一屏
        G:移到緩衝區的最後一行
        num G:移動到緩衝區中的第num行
        gg:移到緩衝區的第一行

命令行模式

        普通模式下按下冒號鍵

        保存、退出命令:
        q:如果未修改緩衝區數據,退出
        q!:取消所有對緩衝區數據的修改並退出
        w filename:將文件保存到另一個文件中
        wq:將緩衝區數據保存到文件中並退出

        刪除數據:
        x: 刪除當前游標所在位置的字元
        dd: 刪除當前游標所在行
        dw: 刪除當前游標所在位置的單詞
        d$: 刪除當前游標所在位置至行尾的內容

        編輯數據:
        J: 刪除當前游標所在行行尾的換行符(拼接行)
        u: 撤銷前一編輯命令
        a: 在當前游標後追加數據
        A: 在當前游標所在行行尾追加數據

        編輯數據:
        r char: 用char替換當前游標所在位置的單個字元
        R text: 用text覆蓋當前游標所在位置的數據,直到按下ESC鍵
        o: 在當前游標的下一行追加數據
        O: 在當前游標上一行追加數據

        編輯數據:
        i: 在當前游標前插入
        I:在當前游標所在行開頭插入

        複製和粘貼:
        yw:複製一個單詞
        y$:複製到行尾
        yy:複製整行
        p: 粘貼

可視模式

        進入可視模式,應移動游標到要開始複製的位置,並按下v鍵

        查找和替換:
        要輸入一個查找字元串,就按下斜線(/) 鍵
        使用n鍵,表示下一個(next)

        查找和替換:
        替換命令允許你快速用另一個單詞來替換文本中的某個單詞。
        必須進入命令行模式才能使用 替換命令。
        命令::s/old/new/

        :s/old/new/g:一行命令替換所有old
        :n,ms/old/new/g:替換行號n和m之間所有old
        :%s/old/new/g:替換整個文件中的所有old
        :%s/old/new/gc:替換整個文件中的所有old,但在每次出現時提示

shell編程

    #!/bin/bash
    echo "Hello Bash"

    運行shell
    1、可執行許可權
    chmod +x ./test.sh
    2、執行腳本
    ./test.sh

變數的定義和使用

  定義變數時,變數名不加美元符號($,PHP語言中變數需要)
  使用 readonly 命令可以將變數定義為只讀變數,只讀變數的值不能被改變
  使用 unset 命令可以刪除變數, unset 命令不能刪除只讀變數

作用域:
  局部變數(盡在當前shell中有效,其他shell啟動的程式無法訪問)
  環境變數(所有程式均可訪問)

        #!/bin/bash

        test="test.com"
        readonly test

        echo $test

        test="www.test.com"

        echo $test

        web="http://test.com"

        readonly web

        unset web

        echo $web

字元串

        #!/bin/bash

        var=100
        #字元串拼接
        str1="$var \"test\".c\nom"

        str2='w\nww'$var'.test.com'

        str3="www"$var".test.com"

        #輸出字元串長度
        echo ${#str1}

        #字元串截取
        echo ${str2:1:3}

        #字元串查找
        echo `expr index "$str3" w`

        #str3=$var http://www.test.com

        #echo -e $str1

        #echo -e $str2

        #echo $str3

數組

        #!/bin/bash

        arr1=(1 2 3 4 5 "str")

        echo ${arr1[2]}

        #使用 @ 符號可以獲取數組中的所有元素
        echo ${arr1[@]}
        #echo ${arr1[*]}

        #獲取數組長度
        echo ${#arr1[@]}

        #多行註釋
        :<<EOF
        arr2[0]=100
        arr2[3]=200

        echo ${arr2[3]}
        EOF

參數

        #!/bin/bash

        echo $0

        echo $1

        echo $2

        echo $3

        # $# : 傳遞到腳本的參數個數
        echo "The number of the parameters: "$#

        # $* : 以一個單字元串顯示所有向腳本傳遞的參數
        echo "All parameters: "$*

        # $! : 後臺運行的最後一個進程的ID號
        # $@:與$*相同,但是使用時加引號,併在引號中返回每個參數
        echo "All parameters: "$@

        for i in "$*"
        do
            echo $i
        done

        for i in "$@"
        do
            echo $i
        done

        # $$ : 腳本運行的當前進程ID號
        echo "The Progress ID: "$$

        # 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤
        echo $?

        #$- : 顯示Shell使用的當前選項

基本運算符

        #!/bin/bash

        # expr 是一款表達式計算工具,使用它能完成表達式的求值操作
        # 表達式和運算符之間要有空格
        # 完整的表達式要被 ` ` 包含
        i=`expr 2 + 3`
        echo $i

        a=100
        b=100

        # 條件表達式要放在方括弧之間,並且要有空格
        if [ $a != $b -o $a -eq $b ]
        then
            echo "a = b"
        fi

        # 乘號(*)前邊必須加反斜杠(\)才能實現乘法運算
        echo `expr 100 \* 100`

        # 關係運算符只支持數字,不支持字元串,除非字元串的值是數字
        # -eq 、 -ne 、 -gt 、 -lt 、 -ge 、 -le
        if [ $a -eq $b ]
        then
            echo "eq"
        fi

        # 布爾運算符! 、 -o 、 -a
        if [ $a == 100 -a $b == 100 ]
        then
            echo "a=100,b=100"
        fi

        if [[ $a == 100 && $b == 100 ]]
        then
            echo "a=100,b=100"
        fi

        # 字元串運算符  = 、 != 、 -z 、 -n 、 str
        str1='This'

        if [ -z "$str1" ]
        then
            echo "The length of the string is 0"
        fi

        if [ -n "$str1" ]
        then
            echo "The length of the string is not 0"
        fi

        if [ $str100 ]
        then
            echo "This string is not empty"
        fi

        # 文件測試運算符用於檢測 Unix 文件的各種屬性
        # -b 、 -c 、 -d 、 -f 、 -g 、 -k 、 -p 、 -u 、 -r 、 -w 、 -x 、 -s 、 -e
        file='/root/shell/hello_bash'

        if [ -e $file ]
        then
            echo "This file exists"
        fi

echo

        #!/bin/bash

        echo 'This is string'

        echo "This is string"

        # 字元串的引號可以省略
        echo This is string

        # read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數
        echo -n "Please input your age: "
        read age

        echo "My Age is "$age

        # 顯示換行:
        echo -e "OK! \n" # -e 開啟轉義

        # 顯示不換行:
        echo -e "OK! \c" # -e 開啟轉義 \c 不換行

        # 顯示結果定向至文件:
        echo "Learning IT" > test

        # 顯示命令執行結果:
        echo `date`

printf

        #!/bin/bash

        # format-string: 為格式控制字元串
        # %s %c %d %f都是格式替代符
        # %-10s 指一個寬度為10個字元(-表示左對齊,沒有則表示右對齊),任何字元都會被顯示在10個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來
        printf "%-10s is string %d %.4f" "string" "100" 210

        if [ 1 == 1 ]
        then
            echo "correct"
        fi

        # test 命令用於檢查某個條件是否成立,它可以進行數值、字元和文件三個方面的測試
        if test 1 == 1
        then
            echo "test correct"
        fi

流程式控制制

        #!/bin/bash
        i=2

        if [ $i == 1 ]
        then
            echo "i = 1"
        elif [ $i == 2 ]
        then
            echo "i = 2"
        else
            echo "i != 1"
        fi
        --------------------------

        #!/bin/bash

        for i in 1 2 3 4 5
        do
            if [ $i -eq 1 ]
            then
                break
            fi
            echo $i
        done
        --------------------------

        #!/bin/bash

        i=1

        while (( $i < 10 ))
        do
            echo $i
            # let 命令,它用於執行一個或多個表達式,變數計算中不需要加上 $ 來表示變數
            let "i++"
        done

        while :
        do
            echo "unlimit"
        done

        while true
        do
            echo "unlimit"
        done

        # 無限迴圈:
        # while 去除condition
        # while true
        # for (( ; ; ))
        for (( ; ; ))
        do
            echo "for unlimit"
        done
        --------------------------

        #!/bin/bash

        # until 迴圈執行一系列命令直至條件為 true 時停止
        # until 迴圈與 while 迴圈在處理方式上剛好相反
        i=10

        until (( $i == 0 ))
        do
            echo $i
            let "i--"
        done
        --------------------------

        #!/bin/bash

        i=4

        # case語句為多選擇語句
        case $i in
            1) echo 'i=1'
            ;;
            2|3|4) echo 'i=2 or i=3 or i=4'
            ;;
            *) echo 'i != 1 && i != 2'
            ;;
        esac

函數

        #!/bin/bash

        # myfunc 2 2

        # function myfunc()
        myfunc()
        {
            echo "myfunc"
            # 參數返回,可以顯示加:return 返回,如果不加,將以最後一條命令運行結果,作為返回值。 return後跟數值n(0-255)
            # 在Shell中,調用函數時可以向其傳遞參數。在函數體內部,通過 $n 的形式來獲取參數的值,例如,$1表示第一個參數,$2表示第二個參數…
            # $10 不能獲取第十個參數,獲取第十個參數需要${10}。當n>=10時,需要使用${n}來獲取參數
            return `expr $1 + $2`
        }

        myfunc 1 2

        # 函數返回值在調用該函數後通過 $? 來獲得
        echo $?

        # myFunc

輸入/輸出重定向
  如果希望執行某個命令,但又不希望在屏幕上顯示輸出結果,那麼可以將輸出重定向到 /dev/
  /dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件取內容,那麼什麼也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到”禁止輸出"的效果

文件包含

        #!/bin/bash

        source ./public.sh

        myfunc

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近在處理客戶端安裝程式過程,有一個需求:需要檢測Windows平臺下安裝office 版本信息以及獲取使用的office是32 位還是64 位; 當檢測出office 位數為64位時,提示當前office 不支持程式的使用。 找了很多資料,一般情況下,是不能直接獲取office 安裝位數信息的;加 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7596897.html,記錄一下學習過程以備後續查用。 一、引言 接上一篇C#設計模式學習筆記:簡單工廠模式(工廠方法模式前奏篇),通過簡單工廠模式的瞭解,它的缺點就是隨著需求的變化我們要不停地修改工廠里 上一 ...
  • 為什麼想到這個呢,演算法什麼的又不太懂,這是 因為搭建VPN + BBR 與之簡直絕配 有的人搭建SSR ,配一個什麼銳速,還需要降內核版本, 而且還容易出錯,降了之後更加容易出現相容性問題,所以偶爾看到了google的BBR 擁塞阻塞演算法 演算法原理不知道,也不想去深究 。 原理 這篇博客 講得還是很 ...
  • 本篇中涉及到算術運算,使用了$[]這種我未在官方手冊中見到的用法,但是確實可用的,在此前的博文《Bash腳本編程學習筆記03:算術運算》中我有說明不要使用,不過自己忘記了。大家還是儘量使用其他的方法進行算術運算。 簡介 Bash具有三種迴圈結構: for迴圈。 while迴圈。 untile迴圈。 ...
  • 簡介 在bash腳本編程中,條件結構體使用if語句和case語句兩種句式。 if語句 單分支if語句 if TEST; then CMD fi TEST:條件判斷,多數情況下可使用test命令來實現,返回值為0的話則執行CMD,否則就離開該條件結構體,腳本繼續往下執行。 [root@c7-serve ...
  • vmware進程殺不掉 在使用vmware虛擬機時,如果強制結束vmware進程,可能會發現在資源監視器中有一個vmware-vmx.exe進程始終關不掉,獲得管理員許可權去殺或者重啟都沒有用,然後正常的虛擬機打不開,也無法卸載或者更新 網上所有的教程都嘗試過了,也還是不行。我的解決方法是:首先重啟計 ...
  • 背景 在linux系統中提供了2個查詢系統負荷值的命令,一個是 ps o THREAD 一個是 top ,這兩個命令都能夠查詢當前進程的CPU使用率情況,但是所代表的含義確實不一樣的, ps o THREAD 偏向與整個進程周期所占的CPU使用率,而 top 更偏向於某個固定時間視窗的CPU使用率也 ...
  • 隨著自旋轉移矩效應的發現以及材料和結構的優化,基於自旋轉移矩效應的STT-MRAM器件應運而生。自從自旋轉移矩效應被證實以來,一方面研究人員通過大量的努力嘗試降低磁化反轉的臨界電流,增加熱穩定性;另一方面Sony、Hitachi、Renesas、Crocus、Toshiba、Samsung、Hyni ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...