七種檔案類型
d 目錄 l 符號連結
s 通訊端檔案 b 塊裝置檔案
c 字元裝置檔案 p 具名管道檔案
- 普通檔案 Regex
從一個檔案或命令輸出中抽取或過濾文本時。可使用Regex(RE),Regex是一些特殊或不很特殊的字串模式的集合。
基本的元字元集:
^ 只匹配行首。
$ 只匹配行尾。
* 一個單字元後緊跟*,匹配0個或多個此單字元。
[] 匹配[]內字元,可以是一個單字元,也可以是字元序列。可以使
用-來表示[]內範圍,如[1-5]等價於[1,2,3,4,5]。
\ 屏蔽一個元字元的特殊含義,如\$表示字元$,而不表示匹配行
尾。
. 匹配任意單字元。
pattern\{n\} 匹配pattern出現的次數n
pattern\{n,\}m匹配pattern出現的次數,但表示次數最少為n
pattern\{n,m\} 匹配pattern出現的次數在n與m之間(n,m為0-255)
幾個常見的例子:
顯示可執行檔檔案:ls –l | grep …x...x..x
只顯示檔案夾:ls –l | grep ^d
匹配所有的空行:^$
匹配所有的單詞:[A-Z a-z]*
匹配任一非字母型字元:[^A-Z a-z]
包含八個字元的行:^……..$(8個.) 字元類描述
以下是可用字元類的相當完整的列表:
[:alnum:] 字母數字 [a-z A-Z 0-9]
[:alpha:] 字母 [a-z A-Z]
[:blank:] 空格或製表鍵
[:cntrl:] 任何控制字元
[:digit:] 數字 [0-9]
[:graph:] 任何可視字元(無空格)
[:lower:] 小寫 [a-z]
[:print:] 非控制字元
[:punct:] 標點字元
[:space:] 空格
[:upper:] 大寫 [A-Z]
[:xdigit:] 十六進位數字 [0-9 a-f A-F]
儘可能使用字元類是很有利的,因為它們可以更好地適應非英語 locale(包括某些必需的重音字元等等). shell的引號類型
shell共有四種參考型別:
“ ” 雙引號
‘ ’ 單引號
` ` 反引號
\ 反斜線
l “ ” 可引用除$、` 、\ 、外的任一字元或字串,“ ”中的變數能夠正常顯示變數值。
l ‘ ’與“ ”類似,不同在於shell會忽略任何的引用值。
例如: GIRL=‘girl’
echo “The ‘$GIRL’ did well”
則列印:The ‘girl’ did well
l ` `用於設定系統命令的輸出到變數,shell會將` `中的內容作為一個系統命令並執行質。
例如:echo `date` 則列印當前的系統時間。
l \ 用來屏蔽特殊含義的字元:& * + ^ $ ` “ | ?
例如:expr 12 \* 12 將輸出144 變數設定時的不同模式:
valiable_name=value 設定實際值到 variable_name中
valiable_name+value 如果設定了variable_name,則重設其值
valiable_name:?value 如果未設定variable_name,則先顯示未定義使用者錯誤資訊
valiable_name?value 如果未設定variable_name,則顯示系統錯誤資訊
valiable_name:=value 如果未設定variable_name,則設定其值
valiable_name-value 同上,但取值並不設定到variable_name 條件測試
test命令用於測試字串、檔案狀態和數字,expr測試和執行數值輸出。
Test格式:test condition 或 [ condition ](需要特別注意的是condition的兩邊都要有一個空格,否則會報錯),test命令返回0表示成功。
l 下面將分別描述test的三種測試:
n 檔案狀態測試(常用的)
-d 測試是否檔案夾
-f 測試是否一般檔案
-L 測試是否連結檔案
-r 測試檔案是否可讀
-w 測試檔案是否可寫
-x 測試檔案是否可執行
-s 測試檔案是否非空
n 字串測試
五種格式: test “string”
test string_operator “string”
test “string” string_operator “string”
[ string_operator “string” ]
[ “string” string_operator “string” ]
其中string_operator可以為: = 兩字串相等
!= 兩字串不等
-z 空串
-n 非空串
n 數值測試
兩種格式: “number” number_operator “number”
[ “number” number_operator “number” ]
其中:number_operator 可以為:-eq 、-ne、-gt、-lt、-ge
例如: NUMBER=130
[ “990” –le “995” –a “NUMBER” -gt “133” ]
(其中-a表示前後結果相“與”)
l expr命令一般用於整數值,但也可以用於字串。