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