正則表達(dá)式
^表示開頭
$表示結(jié)尾
[a-z]
[A-Z]
[0-9]
.? 單個(gè)任意字符
* 前面字符重復(fù)的次數(shù)>=0
+前面字符重復(fù)出現(xiàn)的次數(shù)>=1
? 前面字符重復(fù)出現(xiàn)的次數(shù)0或1次
{n,m}前面字符重復(fù)出現(xiàn)的次數(shù)n到m次
{n,}出現(xiàn)次數(shù)大于n次
{,m}出現(xiàn)次數(shù)小魚m次
grep? + 正則
sed? '匹配條件/執(zhí)行的動(dòng)作'? /etc/passwd 或者 cat /etc/passwd | sed? '匹配條件/執(zhí)行的動(dòng)作'
替換? sed 's/old/new/g'
awk? awk -F: '{print $1}' /etc/passwd? 查看passwd中的第一列? ? $0所有? $1第一列? $2第二列
Shell
環(huán)境變量? ? (set命令)
------>
系統(tǒng)? --- 多用戶
用戶環(huán)境變量(/root/.bash_profile)? ,, 系統(tǒng)環(huán)境變量(/etc/profile)
位置變量
---通常和腳本聯(lián)合使用
---$0? 腳本名稱
----$1? .....? $9? 位置參數(shù)
預(yù)定義變量
由系統(tǒng)保留和維護(hù)的一組特殊變量,由系統(tǒng)保留和維護(hù)的一組特殊變量
$0 保存當(dāng)前線程和腳本的名稱
$! 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的PID號(hào)
$? 代表程序退出狀態(tài)(0表示成功? 非0表示失敗)即上一個(gè)命令執(zhí)行結(jié)果
$*代表所有參數(shù)的內(nèi)容(整體)
$$代表當(dāng)前進(jìn)程的PID號(hào)碼
$#代表當(dāng)前shell的參數(shù)個(gè)數(shù)
$@代表所有參數(shù)內(nèi)容(逐個(gè)讀取)
自定義變量
---語(yǔ)法格式? : name=[value]
--- 注意:
變量等號(hào)兩邊不能有空格
變量對(duì)大小寫敏感
--- 定義好后使用($變量名)來調(diào)用變量的值
shell算數(shù)運(yùn)算
+ - * / %
-----$((expression))
-----$[expression]
-----expr expression
a=2
b=3
echo $((a+b))
expr $a + $b
shell 內(nèi)置測(cè)試判斷? : 成功/成立? ---- 失敗/不成立
Linux提供了 非(!) ,或(-o) ,與(-a)三個(gè)邏輯操作符,,用于將測(cè)試條件連接起來,,
優(yōu)先級(jí)為? : !最高,-a次之,-o最低
數(shù)值比較
-eq 等于則為真
-ne 不等于則為真
-gt 大于則為真
-ge 大于等于則為真
-lt 小于則為真
-le 小于等于則為真
字符串比較
=等于則為真
!= 不等于則為真
-z? 字符串長(zhǎng)度偽則為真(長(zhǎng)度為0,為空)
-n? 字符竄長(zhǎng)度不偽則為真(長(zhǎng)度不為0)
文件測(cè)試
-e 文件名 如果文件存在則為真
-r 文件名 如果文件存在且可讀則為真
-w 文件名 如果文件存在且可寫則為真
-x 文件名 如果文件存在且可執(zhí)行
-s? 文件名 如果文件存在且至少有一個(gè)字符則為真
-d 文件名 如果文件存在且為目錄則為真
-f? 文件名 如果文件存在且為普通文件則為真
-c 文件名? 如果文件存在且為字符型特殊文件則為真
-b 文件名 如果文件存在且為塊特殊文件則為真
----? test? 測(cè)試表達(dá)式
[root@localhost ~]# echo $a $b
2 3
[root@localhost ~]# test $a -lt $b
[root@localhost ~]# echo $?
0
----? [測(cè)試表達(dá)式]? ? 最常見的
---- 注意? 測(cè)試表達(dá)式與中括號(hào)之間一定要有空格
[root@localhost ~]# echo $a $b
2 3
[root@localhost ~]# [ $a -lt $b ]
[root@localhost ~]# echo $?
0
[root@localhost ~]#
&&邏輯與
--? cmd1 && cmd2? cmd1命令成功了才會(huì)執(zhí)行cmd2
||邏輯或
-- cmd1 || cmd2? cmd1失敗了才會(huì)執(zhí)行cmd2
;? 無邏輯關(guān)系
-- cmd1 ; cmd2? cmd1執(zhí)行完后執(zhí)行cmd2