看板 Linux 關於我們 聯絡資訊
所謂 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
neutrino:驚 試了一下 究竟為何會這樣!? 06/26 09:47
jokester:奇怪矣 我在bash得到aAbBc 在zsh得到abc 06/26 10:42
yvb:應該跟 locale 有關, 請設定 LC_ALL=C 和 LANG=C 後再試試看. 06/26 14:27
licheng:樓上正解 :) 目前 Linux,大多採用 UTF-8 編碼。而 UTF-8 06/26 23:29
licheng:編碼的字元排序,跟過去 ASCII,是不一樣的。如果先 06/26 23:29
licheng:export LANG=C,應該就會跟大多數 shell 書籍說的結果相同 06/26 23:30
licheng:。喜歡寫 shell scripts 的朋友,這一點要注意。不然,會 06/26 23:30
licheng:傻眼 :P 06/26 23:30
jokester:utf8字串在不同locale下排序也可能不同 這點也有危險 06/27 01:35
kenduest:考慮一下 [[:lower:]] 這類用法比較不會出問題 06/30 01:57