Como posso encontrar a ordem de classificação para ls com minha localidade?

6

Eu estava usando ls -l em um diretório e fiquei surpreso que espaços e sublinhados foram ignorados para a ordem de classificação. Por exemplo,

$ 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

Na minha localidade padrão, espaços e sublinhados são intercambiáveis e sem UTF-8, espaços vêm antes de sublinhados. Eu vejo resultados semelhantes para en_US e en_US.UTF-8 .

Eu tenho duas perguntas:

  1. Estou interpretando isso corretamente? Eles são intercambiáveis?
  2. Existe uma lista da ordem de classificação do meu local? Eu quero encontrar um personagem que preceda o sublinhado.
por Sparhawk 20.11.2013 / 11:18

1 resposta

3

Esta não seria uma resposta completa, mas alguns artigos e pensamentos.

Aqui você pode encontrar algumas notas na ordem de classificação link

Aqui está o padrão sobre como as localidades são definidas como link

E este é um padrão Unicode e regras de agrupamento (para classificação) link . Eu não afirmo que o agrupamento na localidade UTF-8 é implementado dessa maneira, embora eu tenha uma strong crença de que seja.

    
por 08.01.2014 / 13:58

Tags