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