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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/141617.html
標籤:Linux
