不想看废话的可以直接看文末加粗部分。
今日学习通配符[^字符集]:匹配列表中所有字符以外的字符。
步骤:
- 创建文件touch f{a…z}.txt与 touch f{A…Z}.txt 。
- 用[^字符集]做筛选,选出除fa.txt,fb.txt……fz.txt文件以外的所有文件。
- 执行命令ls f[^a-f].* ,发现fA.txt,并未在结果显示中,但fZ.txt 在筛选结果中,如图。
疑问:为什么大写字母的文件未在结果中,确独独漏了 Z?
解答:这是由于字符集编码不同导致的
LANG=C 它的字符集排序为a b c …z A B C…Z
LANG=zh_CN en_UK 这两种排序为a A b B c C…z Z
所以[^a-z]匹配的是从a到z的所有字符,而显然Z不包含其中。
tips:LANG=C 中的C基本上可以认为等价于 en_US.latin1
表示最简单的编码,只能显示最多 256 个字符
也就是通常指代 non-unicode application(这一句看的某不知名大佬的答案,侵删。)