Linuxとコマンドラインの基礎
あるディレクトリに a1.txt、a2.txt、a10.txt、b1.txt、c1.txt、a1.csv の6つのファイルがある。このディレクトリで「ls [ab]?.txt」を実行したときに表示されるファイルの数として、正しいものはどれか。
- A2
- B3
- C4
答えと解説を見る
正解:B. 3
シェルは、コマンドを実行する前にワイルドカードを含む名前をファイル名に展開します(グロブ)。[ab] は a か b のどちらか1文字、? はちょうど1文字、* は0文字以上の任意の文字列に一致します。[ab]?.txt は「a か b、続いて任意の1文字、続いて .txt」なので、a1.txt、a2.txt、b1.txt の3つに一致します。a10.txt は a の後ろが2文字、c1.txt は先頭が c、a1.csv は拡張子が違うので一致しません。
- A. [ab] は a か b のどちらか1文字に一致するので、b1.txt も含まれます。
- B. 正しい。a1.txt、a2.txt、b1.txt の3つです。
- C. ? はちょうど1文字に一致するので、a10.txt は含まれません。? を * のように0文字以上と考えると、a10.txt も入って4つになります。