Je ne connais aucun lieu qui, par défaut, trie dans cet ordre. La solution consiste à créer un environnement local personnalisé avec un ordre de tri personnalisé. Si quelqu'un, quatre ans plus tard, veut trier de façon personnalisée, voici l'astuce.
La grande majorité des paramètres régionaux ne spécifient pas leur propre ordre de tri, mais copient plutôt l'ordre de tri défini dans /usr/share/i18n/locales/iso14651_t1_common
afin que vous souhaitiez le modifier. Plutôt que de changer l'ordre de tri pour presque tous les paramètres régionaux en modifiant l'original iso14651_t1_common
, je vous suggère de faire une copie. Des détails sur le fonctionnement de l'ordre de tri et sur la création de paramètres régionaux personnalisés dans votre $HOME
répertoire sans accès root se trouvent dans cette réponse à une question similaire .
Jetez un oeil à la façon dont a
et A
sont commandés en fonction de leurs entrées dans iso14651_t1_common
:
<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
<U0041> <a>;<BAS>;<CAP>;IGNORE # 517 A
b
et B
sont similaires:
<U0062> <b>;<BAS>;<MIN>;IGNORE # 233 b
<U0042> <b>;<BAS>;<CAP>;IGNORE # 550 B
Nous voyons que lors de la première passe, les deux a
et A
ont le symbole d'assemblage <a>
, tandis que les deux b
et B
ont le symbole d'assemblage <b>
. Depuis <a>
apparaît avant <b>
dans iso14651_t1_common
, a
et A
sont liés avant b
et B
. La deuxième passe ne rompt pas les liens car les quatre caractères ont le symbole d'assemblage <BAS>
, mais pendant la troisième passe, les liens sont résolus car le symbole d'assemblage pour les lettres minuscules <MIN>
apparaît à la ligne 3467, avant le symbole d'assemblage pour les lettres majuscules <CAP>
(ligne 3488) . Ainsi , l'ordre de tri se termine comme a
, A
, b
, B
.
L'échange des premier et troisième symboles de classement trierait les lettres d'abord par casse (en bas puis en haut), puis par accent ( <BAS>
signifie non accentué), puis par ordre alphabétique. Cependant , les deux <MIN>
et <CAP>
précédent les chiffres numériques, ce qui aurait pour effet indésirable de mettre des chiffres après les lettres.
La meilleure façon de garder les chiffres d' abord en faisant toutes les lettres minuscules viennent avant toutes les lettres majuscules est de forcer toutes les lettres à attacher au cours de la première comparaison en les plaçant tous égaux <a>
. Pour vous assurer qu'ils sont triés par ordre alphabétique dans la casse, remplacez le dernier symbole d'assemblage par IGNORE
le premier symbole d'assemblage actuel. Suivant ce modèle, a
deviendrait:
<U0061> <a>;<BAS>;<MIN>;<a> # 198 a
A
deviendrait:
<U0041> <a>;<BAS>;<CAP>;<a> # 517 A
b
deviendrait:
<U0062> <a>;<BAS>;<MIN>;<b> # 233 b
B
deviendrait:
<U0042> <a>;<BAS>;<CAP>;<b> # 550 B
et ainsi de suite pour le reste des lettres.
Une fois que vous avez créé une version personnalisée de iso14651_t1_common
, suivez les instructions de la réponse liée ci-dessus pour compiler vos paramètres régionaux personnalisés.
sort
, mais avec le point-virgule, la variable est locale au shell et n'affecte pas le comportement desort
. Le point-virgule peut être conservé tel quel si la variable est également exportée, mais cela affecte également les autres commandes.