當輸入包含特殊字元(元字元)的部分檔名時,shell可以生成與已有檔名匹配的檔名。這些字元稱為萬用字元(wildcard)就像撲克牌中的王牌一樣無所不能。包含特殊字元的檔名稱為模糊檔案引用(ambiguous file reference),因為它們不引用任何乙個特定檔案。對這些檔名操作的過程稱為擴充套件路徑名(path expansion)或者通配(globbing)。
1、特殊字元「?」
問號(?)是shell生成檔名的特殊字元,它與已有檔名中的某個字元匹配。
示例:使用ls
$ ls
mem memo12 memo9 memomax newmemo5 memo memo5 memoa memos
$ ls memo?
memo9 memo5 memoa memos
問號也可以放在模糊檔案引用的中間:
$ ls mem?max
memomax
2、特殊字元「*」
星號(*)的功能與問號相似,不同的地方在於,星號後面可以與檔名中的任意多個(包括0個)字元匹配。
$ ls
amemo memoalx.0612 memosally memosam user.memo memo memoa
memo.0620 sallymemo memalx memorandum memoalx.keep typescript
$ ls memo*
memoalx.0612 memosally memosam memo memoa memo.0620 memorandum memoalx.keep
$ ls *mo
amemo user.memo memo sallymemo
$ ls *sam*
memosam
3、特殊字元"[ ]"
用一對方括號將乙個字元列表括起來使得shell與包含每乙個字元的檔名進行匹配。「memo?」可匹配memo後跟任何乙個字元的檔名,而方括號更嚴格些,memo[17a]僅與memo1、memo7和memoa匹配。
在字元類定義中,將連字元放在方括號中可以定義乙個字元範圍。如[6-9]代表[6789],[a-z]代表所有小寫英文本母。[a-za-z]代表所有英文本母。
左方括號後直接跟感嘆號(!)或插入符號(^)也可以定義字符集,該類與任何不在方括號內的字元匹配。
[^tsq]*表示不以t、s和q開頭的檔名匹配。
$ ls
aa ab ac ad ba bb bd be cc dd
$ ls *[^ab]
ac ad bd be cc dd
$ ls [^b-d]*
aa ab ac ad
萬用字元匹配
implement wildcard pattern matching with support for and matches any single character.matches any sequence of characters including the empty sequence ...
萬用字元匹配
給定乙個輸入字串s 和模式p,p包含萬用字元?與星號 其中輸入s包含小寫字母a z,p包含小寫字母a z與?和星號,可以匹配任一字元,星號 可以匹配多個字元,包括空字元。給定輸入s與p,判斷s 與 p是否完全匹配。example 1 input s aa p a output false expla...
萬用字元匹配
1.遇到s和p都是 則直接返回true 2.判斷邊界條件如果s串已經遍歷完畢,則判斷p串是否便利完畢,如果p串長度大於s串,則判斷大於部分是否都是 如果是則返回true,否則返回false 3.判斷邊界條件如果p串已經便利完畢,則判斷s串是否便利完畢,是則返回true,否則返回false 4.判斷字...