我ls -l
在一个目录上使用,并且惊讶于排序顺序忽略了空格和下划线。例如,
$ echo $LANG
en_AU.UTF-8
$ ls -l
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:12 a_a
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a b
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a_c
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a d
$ LANG=en_AU ls -l
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a b
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a d
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:12 a_a
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a_c
Run Code Online (Sandbox Code Playgroud)
在我的默认语言环境中,空格和下划线是可以互换的,如果没有 UTF-8,空格在下划线之前。我看到类似的结果en_US
和en_US.UTF-8
。
我有两个问题:
这不是完整的答案,而是一些文章和想法。
在这里您可以找到有关排序顺序的一些注释http://www.gnu.org/software/coreutils/faq/#Sort-does-not-sort-in-normal-order_0021
这是如何定义区域设置的标准http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03
这是 Unicode 标准和排序规则(用于排序)http://www.unicode.org/reports/tr10/。我并不声称 UTF-8 语言环境中的排序规则是以这种方式实现的,尽管我坚信确实如此。
归档时间: |
|
查看次数: |
2719 次 |
最近记录: |