[閒聊] Set construct wildcards 的問題

看板Linux作者 (阿正)時間11年前 (2014/06/26 09:42), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
所謂 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]* 結果應該是什麼? :) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.105.93.185 ※ 文章網址: http://www.ptt.cc/bbs/Linux/M.1403746947.A.BA3.html

06/26 09:47, , 1F
驚 試了一下 究竟為何會這樣!?
06/26 09:47, 1F

06/26 10:42, , 2F
奇怪矣 我在bash得到aAbBc 在zsh得到abc
06/26 10:42, 2F

06/26 14:27, , 3F
應該跟 locale 有關, 請設定 LC_ALL=C 和 LANG=C 後再試試看.
06/26 14:27, 3F

06/26 23:29, , 4F
樓上正解 :) 目前 Linux,大多採用 UTF-8 編碼。而 UTF-8
06/26 23:29, 4F

06/26 23:29, , 5F
編碼的字元排序,跟過去 ASCII,是不一樣的。如果先
06/26 23:29, 5F

06/26 23:30, , 6F
export LANG=C,應該就會跟大多數 shell 書籍說的結果相同
06/26 23:30, 6F

06/26 23:30, , 7F
。喜歡寫 shell scripts 的朋友,這一點要注意。不然,會
06/26 23:30, 7F

06/26 23:30, , 8F
傻眼 :P
06/26 23:30, 8F

06/27 01:35, , 9F
utf8字串在不同locale下排序也可能不同 這點也有危險
06/27 01:35, 9F

06/30 01:57, , 10F
考慮一下 [[:lower:]] 這類用法比較不會出問題
06/30 01:57, 10F
文章代碼(AID): #1Jgtg3kZ (Linux)
文章代碼(AID): #1Jgtg3kZ (Linux)