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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...