Linux與命令列基礎
某個目錄中有 a1.txt、a2.txt、a10.txt、b1.txt、c1.txt、a1.csv 共6個檔案。在此目錄執行「ls [ab]?.txt」時,顯示的檔案數量是下列何者?
- A2
- B3
- C4
查看答案與解析
正確答案:B. 3
shell 在執行指令之前,會把含有萬用字元的名稱展開成檔案名稱(glob)。[ab] 比對 a 或 b 其中一個字元,? 比對剛好一個字元,* 比對0個以上的任意字串。[ab]?.txt 表示「a 或 b,接著任意一個字元,再接著 .txt」,因此符合的是 a1.txt、a2.txt、b1.txt 這3個。a10.txt 在 a 後面有兩個字元,c1.txt 開頭是 c,a1.csv 的副檔名不同,所以都不符合。
- A. [ab] 比對 a 或 b 其中一個字元,所以也包含 b1.txt。
- B. 正確。是 a1.txt、a2.txt、b1.txt 這3個。
- C. ? 只比對剛好一個字元,所以不包含 a10.txt。若把 ? 當成像 * 一樣比對0個以上的字元,就會連 a10.txt 也算進去而成為4個。