Em sistemas GNU, pelo menos na maioria dos locais diferentes de C / POSIX, há alguns caracteres que são ignorados no que diz respeito à classificação. Esse é o caso, por exemplo, de _
, .
, espaço ou 0x1.
É por isso que .a
, .c
, __b
, _d
é classificado como .a
, __b
, .c
, _d
, por exemplo.
Para strings que consistem em somente desses caracteres ignorados , a ordem de classificação é definida na localidade, o ASCII SPC geralmente vem em primeiro lugar. Portanto, um caractere de espaço único seria o arquivo que classifica primeiro (mesmo antes de 0x1 (o primeiro no idioma C), .
e ..
), depois dois espaços ... etc. No entanto, <SPC>DELETED
classificaria < em> after DELETED
, portanto, enquanto um arquivo chamado ___
seria classificado antes da maioria dos outros arquivos, colocar ___
na frente de alguma outra string não o faz classificar antes.
Entre os caracteres não ignorados, o ASCII 0 é geralmente o caractere que classifica primeiro em locais não-C.
Assim, um arquivo chamado 0 deve ser classificado antes de qualquer outro arquivo que não contenha caracteres não ignorados. Colocar o 0
em um arquivo que contém caracteres não ignorados faria com que ele fosse classificado anteriormente em locais não-C.
Portanto, um arquivo chamado $'_000_DELETED'
seria classificado bem cedo na localidade C (porque 0x1 é o primeiro caractere para ser classificado primeiro) e também em outras localidades (porque todos os 0x1 e _ são ignorados, mas a 0
s são os caracteres não ignorados que são classificados primeiro).
Em locais não-C, ainda ordenaria após .
ou ..
.
Outra opção poderia ser escrever DELETED
apenas com caracteres ignorados como " ₫€£€₮€₫"
. Esses símbolos de moeda são ignorados pela classificação. O SPC também classifica bastante cedo no código do idioma C, portanto, ele deve classificar antes de .
em locais C e não-C.
$ touch $' \u20ab\u20ac\u00a3\u20ac\u20ae\u20ac\u20ab' $'' ' ' 0normal-file $'_000_DELETED'
$ ls -1a
₫€£€₮€₫
./
../
?
???_000_DELETED
0normal-file
$ LC_ALL=C ls -1a
?
???_000_DELETED
????????????????????
./
../
0normal-file
$ LC_COLLATE=C ls -1a
?
???_000_DELETED
₫€£€₮€₫
./
../
0normal-file