作者licheng (阿正)
看板Linux
標題[閒聊] Set construct wildcards 的問題
時間Thu Jun 26 09:42:25 2014
所謂 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://webptt.com/m.aspx?n=bbs/Linux/M.1403746947.A.BA3.html
1F:推 neutrino:驚 試了一下 究竟為何會這樣!? 06/26 09:47
2F:→ jokester:奇怪矣 我在bash得到aAbBc 在zsh得到abc 06/26 10:42
3F:推 yvb:應該跟 locale 有關, 請設定 LC_ALL=C 和 LANG=C 後再試試看. 06/26 14:27
4F:→ licheng:樓上正解 :) 目前 Linux,大多採用 UTF-8 編碼。而 UTF-8 06/26 23:29
5F:→ licheng:編碼的字元排序,跟過去 ASCII,是不一樣的。如果先 06/26 23:29
6F:→ licheng:export LANG=C,應該就會跟大多數 shell 書籍說的結果相同 06/26 23:30
7F:→ licheng:。喜歡寫 shell scripts 的朋友,這一點要注意。不然,會 06/26 23:30
8F:→ licheng:傻眼 :P 06/26 23:30
9F:→ jokester:utf8字串在不同locale下排序也可能不同 這點也有危險 06/27 01:35
10F:→ kenduest:考慮一下 [[:lower:]] 這類用法比較不會出問題 06/30 01:57