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.