作者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/cn.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