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

VIM編譯器的安裝與使用web

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

普通模式shell

        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: 粘貼

可視模式vim

        進入可視模式,應移動光標到要開始複製的位置,並按下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

變量的定義和使用bash

  定義變量時,變量名不加美圓符號($,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
相關文章
相關標籤/搜索