Set construct wildcards 的問題 - Linux

Table of Contents

所謂 Set construct wildcards,
就是說,
在 Bourne Again shell (其他 shell 應該也一樣),
如果我們下達下述指令

ls [0-9]*

應該會列出所有開頭是數字的檔案名稱。

如果是

ls [a-z]*

應該會列出開頭是小寫英文字母的檔案名稱。

同理,
如果指令是

ls [A-Z]*

應該會列出開頭是大寫英文字母的檔案名稱。

至少書上是這麼說的。

假設目前所在位置,
有下述檔案

axxx.txt
bxxx.txt
cxxx.txt
Axxx.txt
Bxxx.txt
Cxxx.txt

如果我們下達

ls [a-c]*

結果應該是什麼? :)

--

All Comments

Audriana avatarAudriana2014-06-29
驚 試了一下 究竟為何會這樣!?
Agatha avatarAgatha2014-07-02
奇怪矣 我在bash得到aAbBc 在zsh得到abc
Callum avatarCallum2014-07-05
應該跟 locale 有關, 請設定 LC_ALL=C 和 LANG=C 後再試試看.
Quanna avatarQuanna2014-07-09
樓上正解 :) 目前 Linux,大多採用 UTF-8 編碼。而 UTF-8
編碼的字元排序,跟過去 ASCII,是不一樣的。如果先
Belly avatarBelly2014-07-09
export LANG=C,應該就會跟大多數 shell 書籍說的結果相同
。喜歡寫 shell scripts 的朋友,這一點要注意。不然,會
傻眼 :P
Mason avatarMason2014-07-11
utf8字串在不同locale下排序也可能不同 這點也有危險
Robert avatarRobert2014-07-12
考慮一下 [[:lower:]] 這類用法比較不會出問題