[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: