Shell爲命令解釋器,把用戶命令解釋爲內核可識別的機器語言,而後翻譯命令結果給用戶,其也是一個強大的編程語言,是解釋執行的腳本語言,無編譯,與python機制基本相同。python
Shell內部能夠直接調用Linux系統命令正則表達式
【echo 「內容「 】輸出命令shell
【echo -e 「內容「 】輸出,並支持轉義字符編程
轉義符:數組
【\t】製表符,tab鍵bash
【\a】警告音,ssh
【\b】退格,刪除左邊一個字符、編程語言
【\c】取消最後的換行,與-n效果一致、spa
【\f】換頁符,橫向佔位翻譯
【\v】與上相同
【\n】換行
【\r】回車,光標回到行首
【\\】
【echo -e "\e[1;31m 輸出內容 \e[0m"】紅色輸出abd
其中:【\e[1;】表示開始標誌,【[0m】爲結束標誌,【31m】表示顏色,可有(黑色 30m)(紅色 31m)(綠色 32m)(黃色 33m)(藍色 34m)(洋紅 35m)(青色 36m)(白色 37m)
標準輸入:鍵盤(/dev/stdin)
標準輸出:顯示器(/dev/stdout)
標準錯誤輸出:顯示器(/dev/stdout)
輸出重定向:
【命令 > 文件】以覆蓋的方式把正確輸出重定向到文件中
【命令 >> 文件】以追加的方式把正確的輸出重定向到文件中
【命令 2> 文件】標準錯誤輸出重定向,覆蓋
【命令 2>> 文件】標準錯誤輸出重定向,追加
【命令 >>正確文件 2>>錯誤文件】對命令判斷,分別保存命令結果
【命令1; 命令2;命令3】執行命令1到3,錯誤不影響下一個命令執行
【命令1 && 命令2 && 命令3】前面的命令必須正確執行,才能執行後面的命令
【命令1 || 命令2】命令1正確執行,就不會執行命令2,命令1錯誤時纔會執行命令2
【命令 && echo yes || echo no】判斷命令是否正確執行
【命令1 | 命令2】命令1的正確輸出做爲命令2的操做對象,管道符
如:【ls -lh /usr/bin | grep -i --color=auto pip3】查看pip3的執行文件
匹配文件名,對於命令:ls 、find、cp
【?】匹配任意一個字符
【*】匹配任意0個或多個字符,如【rm -r *】刪除目錄下全部文件和文件夾
【[字符1字符2字符3]】匹配字符1到字符3的其中一個字符
【[a-z]】表示匹配小寫字母a到z的任意一個字符
【[^123]】表示不匹配括號內的字符
匹配字符串,對於命令:grep、awk、sed
基本支持標準的正則表達式
特殊:
【\{n,m\}】n到m次,須要加斜線
Shell中無【()】、【+】、【?】
【‘內容’】單引號的內容僅僅表示字符串
【「內容」】雙引號的內容會解釋特殊符號,如(\)轉義、($)調用變量、(`)反引號等
【`命令`】反引號,內容爲引用的命令,可用【$(命令)】代替
【#】表示註釋當前行以後的內容
【$變量】引用變量的值時
變量的值所有以字符串保存
【set】查看系統全部變量
【unset 變量名】刪除變量
用戶自定義變量
本地變量,只在當前shell中生效
聲明:namex=」wo sh」
調用:$namex
追加:namex=「$namex」」 dongxiaodong」 或者 namex=${namex}」 dongxiaodong」
環境變量
父子shell的共享變量
【pstree】查看當前所屬shell位置
經過ssh鏈接的客戶端有3個,其中1是root,2是當前普通用戶,3是另外一個普通用戶
【export 變量名="初始值"】定義環境變量
【bash】進入子shell,可直接訪問環境變量,可用【exit】返回上一級
【env】查看全部環境變量
【unset 變量名】刪除變量
位置參數變量:
【$n】n可爲[0,9],超過期可用{ },${100}
#!/bin/bash #接收第0個參數 echo "當前程序爲:$0" #接收第一個和第二個參數 n1=$1 n2=$2 echo "結果爲:"$(( $n1 * $n2 ))
【$*】將輸入的全部內容看出一個字符串,不包括$0
【$@】把輸入參數分開,相對於把$n內容存放在數組裏,不包括$0
【$#】查看輸入參數的個數,不包括$0
系統預約義變量:
【$?】輸出上一次命令是否正確執行,0爲正確,其餘爲錯誤碼
【read 選項 變量名】把輸入的內容存入到變量中
選項有:
(-t) 等待輸入時間
(-n) 指定輸入的字符個數,字符達到數量時會自動肯定
(-p) 輸入提示信息
(-s) 隱藏輸入,如輸入密碼
【[ -e 文件名 ]】判斷文件是否存在
【[ -d 目錄名 ]】判斷目錄是否存在
【[ -f 文件名 ]】判斷是否爲普通文件
【[ 整數1 -eq 整數2]】判斷相等,相等返回真
【[ 整數1 -ne 整數2]】判斷不相等
【[ 整數1 -gt 整數2]】判斷整數1是否大於整數2
【[ 整數1 -lt 整數2]】判斷整數1是否小於整數2
【[ 整數1 -ge 整數2]】判斷整數1是否大於等於整數2
【[ 整數1 -le 整數2]】判斷整數1是否小於等於整數2
【[ -z 字符串 ]】判斷字符串是否爲空,空返回真
【[ -n 字符串 ]】判斷字符串是否非空,非空返真
【[ 字符串1 == 字符串2 ]】判斷字符串是否相等,相等爲真
【[ 字符串1 != 字符串2 ]】判斷字符串是否不相等,不相等爲真
【[ 判斷1 -a 判斷2 ]】-a表示與,-o表示或,!表示取反
Shell腳本執行:【bash 腳本名】或者:【chmod 700 腳本名】【./腳本名】
簡單的 if 比較:
1 #!/bin/bash 2 3 if [ "3" == "2" ] 4 then 5 echo "輸出:相等" 6 #執行系統命令 7 ls -lh 8 9 elif [ 4 -eq 4 ] 10 then 11 echo "4等於4" 12 else 13 echo "輸出:不相等" 14 #執行系統命令 15 pwd 16 17 fi 18 19 #退出shell,並修改 $? 的值爲2 20 exit 2
簡單的 case 編程:
1 #!/bin/bash 2 3 #鍵盤輸入 4 read -t 30 -p "entry:" nox 5 case "$nox" in 6 "1") 7 echo "11111111111" 8 ;; 9 "2") 10 echo "2222222222222" 11 ;; 12 *) 13 echo "xxxxxxxxxxxxxxxx" 14 ;; 15 esac
簡單的 for 循環:
1 #!/bin/bash 2 3 for i in 1 2 5 5 8 4 do 5 echo $i 6 done
or
1 #!/bin/bash 2 #1到100相加程序 3 s=0 4 for ((i= 1;i<=100;i=i+1)) 5 do 6 s=$(($s+$i)) 7 done 8 echo "1+2+3+........+100= $s"
簡單的while循環
另外until循環的判斷條件是假就繼續循環
1 #!/bin/bash 2 3 i=1 4 s=0 5 while [ $i -le 100 ] 6 do 7 s=$(( $i+$s )) 8 i=$(( $i+1)) 9 done 10 echo "1+2+3+.....+100= $s"