Lista de diretórios não totalmente classificada

18

Eu tenho a seguinte listagem de diretório em um sistema Debian Linux. No entanto, uma coisa estranha é que o arquivo populate.sql não parece ser classificado com o restante.

-rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql
-rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql
-rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql
-rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql
-rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 populate6.sql
-rw-r--r-- 1 user1 user1 12198 Jul 30 16:20 populate7.sql
-rw-r--r-- 1 user1 user1 12286 Aug 10 00:10 populate8.sql
-rw-r--r-- 1 user1 user1 12331 Aug 19 08:48 populate9.sql
-rw-r--r-- 1 user1 user1 12401 Aug 20 14:58 populatea.sql
-rw-r--r-- 1 user1 user1 12460 Aug 22 01:09 populateb.sql
-rw-r--r-- 1 user1 user1 12503 Aug 22 17:13 populatec.sql
-rw-r--r-- 1 user1 user1 13341 Aug 23 23:23 populated.sql
-rw-r--r-- 1 user1 user1 13414 Aug 27 23:01 populatee.sql
-rw-r--r-- 1 user1 user1 16064 Aug 31 00:03 populatef.sql
-rw-r--r-- 1 user1 user1 17529 Sep 16 15:38 populateg.sql
-rw-r--r-- 1 user1 user1 19348 Sep 19 22:50 populateh.sql
-rw-r--r-- 1 user1 user1 21033 Sep 27 20:46 populatei.sql
-rw-r--r-- 1 user1 user1 21024 Sep 28 00:02 populatej.sql
-rw-r--r-- 1 user1 user1 22505 Sep 28 22:55 populatek.sql
-rw-r--r-- 1 user1 user1 23831 Oct  5 21:24 populatel.sql
-rw-r--r-- 1 user1 user1 23665 Nov  2 22:16 populatem.sql
-rw-r--r-- 1 user1 user1 23513 Nov  4 21:53 populaten.sql
-rw-r--r-- 1 user1 user1 27191 Nov 19 14:55 populateo.sql
-rw-r--r-- 1 user1 user1 30142 Nov 28 17:51 populatep.sql
-rw-r--r-- 1 user1 user1 30853 Dec 10 14:49 populateq.sql
-rw-r--r-- 1 user1 user1 33690 Dec 11 23:43 populater.sql
-rw-r--r-- 1 user1 user1  9945 Jul 28 13:16 populate.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populates.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populatet.sql

No começo, pensei que poderia ser por causa de um personagem oculto ou algo assim, mas não consigo pensar em um personagem oculto que se colocasse entre re e s. Além disso, se eu digitar vim populate.sqlno prompt de comando, ele abrirá o arquivo correto, o que é mais uma evidência de que não há um caractere estranho lá.

Alguma idéia de por que populate.sqlnão está sendo classificada corretamente?

kojow7
fonte
11
Isso está em um sistema Linux ou Mac OS / BSD? (As lsversões são diferentes.) Parece quase que o período está sendo ignorado para fins de classificação, o que é interessante.
Curinga
@Wildcard Está no Debian Linux
kojow7 17/01

Respostas:

27

LC_COLLATEcom qualquer agrupamento compatível com Unicode, por exemplo, en_US.UTF-8resulta em uma ordem de classificação que ignora a pontuação. Conseqüentemente, populate.sqlclassifica como populatesqldepois, populatersqlmas antes populatessql.

Se você quiser ver esse comportamento mudar, tente executar LC_COLLATE=C ls -ale ele será classificado na ordem de classificação C (por bytes específicos, sem levar em consideração pontos de código ou códigos de idioma).

David
fonte
2
Interessante. Existem versões recentes do Debian assim por padrão ou existe uma configuração que eu teria mudado para permitir isso? Não me lembro de ter encontrado esse 'problema' antes?
precisa saber é o seguinte
Eu não sei quão recente é ou não é, mas eu acredito que a localidade padrão usado para sempre C.
David
11
Quando nenhuma das variáveis ​​LC_ *, LANG é configurada, o código do idioma padrão é e sempre foi o C / POSIX, mas a maioria dos sistemas possui um código do idioma padrão configurado e os usuários geralmente também podem especificar um no momento do login. O comportamento de classificação de localidade GNU libc como encontrado no Debian tem sido assim há certamente mais de 10 anos.
Stéphane Chazelas
Apenas para referência, tentei uma nova instalação do Debian e sim, ele ignora a pontuação em sua ordem de classificação por padrão. No /etc/default/localeque diz LANG="en_US.UTF-8".
precisa saber é o seguinte