Michelle Konzack <[EMAIL PROTECTED]> writes:

> Am 2005-03-23 21:07:53, schrieb Bruno Hertz:
>
>> Um auch f�r die Shell also  LC_COLLATE auf C zu setzen
>>  LC_COLLATE=C
>>  ls $HOME/devel/bash/[A-Z]*.tmp
>
> H� ? F�r was ?

Stimmt, war falsch. Richtig:
 export LC_COLLATE=C
 ls $HOME/devel/bash/[A-Z]*.tmp

> Ein 'ls $HOME/devel/bash/[A-Z]*.tmp' ben�tigt kein LC_COLLATE.

Inkorrekt. Es braucht es sogar zweimal:

(1) $HOME/devel/bash/[A-Z]*.tmp wird von der Shell expandiert.
    Die Reihenfolge wird dabei bestimmt von LC_COLLATE. man bash,
    'path expansion' und 'range expression'

(2) ls erh�lt die expandierte Parameterliste und sortiert jetzt
    aber nochmal, wieder gem�� LC_COLLATE. Deshalb oben das export.
    man strcoll (wird von ls verwendet)

> Das LC_COLLATE ist nur bei 'ls $HOME/devel/bash/*.tmp' witksam.

Leider falsch. man bash.

>> Um es auch f�r Subshells/geforkte Prozesse wirksam zu machen
>>  export LC_COLLATE=C
>
> Das will ich aber nicht...
>
> LC_COLLATE=de_DE

Das wird nicht gehen. Entgegen eines vorherigen Postings von mir (hatte
einen Fehler gemacht weil bei mir de_DE �berhaupt nicht installiert war,
deshalb hatte ein entsprechendes collate setting auch keine Auswirkung)
ist die collation order f�r de_DE die gleiche wie bei en_US, n�mlich
 a A b B .... z Z

D.h. eine range expression der Form [A-C] enth�lt die Buchstaben
 A b B c C
d.h. eben nicht nur Grossbuchstaben, und gem�� dieser Reihenfolge wird auch
sortiert.

Du kannst aber [ABCDEFGHIJKLMNOPQRSTUVWXYZ] schreiben, das geht dann
auch mit de_DE :)

Die collation order ist f�r die country locales vor einiger Zeit mal umgestellt
worden (sie war vorher wie ASCII, i.e. entsprechend LC_COLLATE=C). Das ist aber
schon Jahre her, meine ich ...

>> Wie du auf RegExp kommst ist mir ein R�tsel. Hat das irgendjemand erw�hnt?
>> Und br�llen mu�t du auch nicht unbedingt ...
>
> Esa geht darum das die BASH [A-Z]* expandiert,
> aber ein SCRIPT in der gleichen Shell es ignoriert.

Du meinst da� das Skript anders expandiert als die Shell. Mit regexps hat
das aber nichts zu tun, und das hat auch niemand behauptet.

> Ihr redet nur con LC_COLLATE was nichts damit zu tun hat.
> Ich habe erste heute vormittag eine WOODY Maschine von den 3.0r0
> CD's installiert und mein Script funktioniert...

Unser Thema war die Sortierreihenfolge von Ausdr�cken wie
 ls /irgendeinpfad/[A-Z]*.irgendwas
und welche Buchstaben (klein,gro�) in solchen range expressions
vorkommen. Und das ist sowohl was die shell expansion als auch die
Sortierung von ls angeht bestimmt von LC_COLLATE.

Probier's dochmal mit einem Testskript der Form

 LC_COLLATE=$1
 echo $LC_COLLATE
 # shell expansion gem�� $1
 echo /irgendeinpfad/[A-Z]*.irgendwas
 # shell expansion und sortierung von ls; da LC_COLLATE nicht
 # exportiert wurde, greift $1 hier noch nicht
 ls /irgendeinpfad/[A-Z]*.irgendwas
 export LC_COLLATE
 # shell expansion gem�� $1
 echo /irgendeinpfad/[A-Z]*.irgendwas
 # ausgabe von ls sollte mit vorherigem echo korrespondieren
 # da LC_COLLATE exportiert wurde
 ls   /irgendeinpfad/[A-Z]*.irgendwas

und ruf es mit skript.sh C resp. de_DE und wasnoch auf. Dann wird
die Sache vielleicht klarer.

> Nach dem Update auf r4 funktionierren keine BACKUP-Scripts und
> jede menge andere Scrips nicht mehr.

Schlimm.

> Soweit ich das aus GOOLGE erfahren habe h�ngt das mit dem Security
> update der libc6 zusammen... da ist was kaputt gegangen.

Kann sein. Wie gesagt habe ich kein Woody, nur Sarge. Letztres ist
aber up-to-date, und die Dinge funktionieren hier genau so wie von
mir beschrieben.

> LC_COLLATE="[EMAIL PROTECTED]"

OK, das sollte dann aber auch f�r die interaktive Shell gelten. Wenn
die mit diesem setting [A-Z] in A B C ... Z expandiert, ist etwas komisch.
Sie sollte es in a A b B ... z Z expandieren, interaktiv ebenso wie
per Skript.

Antwort per Email an