Re: commande 'sort' et la localisation...
On Sun, Jan 01, 2006 at 09:46:20PM +0100, Yves Rutschle wrote:
> [Après la bataille...]
>
> On Thu, Dec 29, 2005 at 07:42:15PM +0100, Denis Barbier wrote:
> > A priori c'est le 2e que l'on veut, c'est pourquoi utiliser LC_COLLATE
> > pour ls est judicieux. Idem pour les majuscules, on préfère
> > Aalto anneaux lune Lyre tmp
> > à
> > Aalto Lyre anneaux lune tmp
>
> Personnellement, je ne suis pas d'accord avec ça. Dans la
> vieille tradition Unix, on écrit README, INSTALL, etc en
> majuscule pour qu'ils apparaissent en premier dans la sortie
> de ls.
Et pour l'exemple d'avant, avec les lettres accentuées ?
> De même que les problèmes de Jacques (d'après ce que j'ai
> compris vu de loin) sont dus à son utilisation de commandes
> et de scripts Unix conçus avant que les commandes ne
> commencent à changer de comportement quand on leur change
> leur locale.
D'après
http://cvs.savannah.gnu.org/viewcvs/coreutils/src/ls.c?rev=1.215&root=coreutils&view=markup
ce changement est apparu en 2000, et était donc déjà dans Woody.
> > Honnêtement, je ne vois pas de solution qui soit intuitive pour tous
> > ces cas de figure, c'est pourquoi il faudrait toujours utiliser
> > les regexps en locale C. Pour reprendre ton exemple :
> > LC_ALL=C mv -v [a-lA-L]* tmp
>
> J'aurais tendance à dire que si on change la sémantique
> d'une commande (comme il se passe ici en changeant les
> locales) il faudrait en fait changer le nom de la commande.
> Ça me rappelle un peu le débat qu'il y a eu il y a quelques
> années sur le remplacement de 'rm' par une commande qui
> déplace les fichiers dans une poubelle. Vouloir une telle
> commande est justifié, mais comme elle a une sémantique
> différente, elle devrait avoir un nom différent. De même, mv
> avait une sémantique précise et indépendante du pays. Il
> aurait mieux valu créer un ensemble de commandes localisées
> (lrm, lls, lmv...?) et ne pas changer la sémantique des
> commandes traditionnelles.
>
> Ce qui se passe avec les locales sur les commandes
> traditionnelles revient en fait à changer une API, dont
> certains programmeurs ont tendance à dire que c'est pas
> bien :)
Le comportement de ces commandes est défini par POSIX.
Une ch'tite recherche sur Google indique
http://www.opengroup.org/austin/mailarchives/austin-group-l/msg02091.html
Apparemment ce problème a été discuté longuement.
Denis
Reply to: