Am 2005-03-23 22:38:19, schrieb Bruno Hertz: > 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'
Was bedeutet das GNU/Linux pl�tzlich Case-Insensitive geworden ist.
denn bei mir sind A-Z GROSSbuchstaben und a-z kleinBUCHSTABEN.
> (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)
Aber die expandierte Liste ist enen nur [A-Z]* .
Also woher kommt dann [a-z]* ?
> > Das LC_COLLATE ist nur bei 'ls $HOME/devel/bash/*.tmp' witksam.
>
> Leider falsch. man bash.
Dann darf es am BASH Prompt ja auch nicht funktionieren,
was es aber tut.
> >> 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
Das wiederspricht dann aber das am BASH prompt es auch funktiniert.
wenn ich z.b.
for i in `ls -d` ; do ls $i/[A-Z]* ; echo ; done
^^^^^ ^^^^^^^^^^^^
Sub-SHELL Sub-SHELL
aufrufe funktioniert es einwqndfrei, wogegen Deine Erkl�rung nicht
standh�llt.
> 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
Ich habe innerhalb des Scripts locale aufgerufen und es liefert die
gleiche Antwort wie am BASH prompt.
Wenn am BASH Prompt 'ls [A-Z]*' funktioniert und im BASH Script die
gleichen locale vorhanden sind, mu� der Fehler noch woanderst liegen.
> 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 ...
Dann wurde locale mit der libc6 aud WOODY r1 ge�ndert.
> > 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.
Ich gebe ja an das ich nur Dateien die mit GROSS Buchstaben anfangen
haben will. LC_COLLATE hat aber mit der Sortierreihenfolge zu tun.
(hat mir jemand von der debian-devel klar gemacht)
> 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.
__( command 'skript.sh de_DE' )_______________________________________
/
| de_DE
| /home/michelle.konzack/devel/bash/[A-Z]*.tmp
| /home/michelle.konzack/devel/bash/BASE.tmp
| /home/michelle.konzack/devel/bash/help_version.tmp
| /home/michelle.konzack/devel/bash/pid.tmp
| /home/michelle.konzack/devel/bash/prog_parts_by_option.tmp
| /home/michelle.konzack/devel/bash/read_config.tmp
| /home/michelle.konzack/devel/bash/SKEL_with_help_and_pid.tmp
| /home/michelle.konzack/devel/bash/SKEL_with_help.tmp
| /home/michelle.konzack/devel/bash/SKEL_with_pid.tmp
| /home/michelle.konzack/devel/bash/td.tmp
| /home/michelle.konzack/devel/bash/[A-Z]*.tmp
| /home/michelle.konzack/devel/bash/BASE.tmp
| /home/michelle.konzack/devel/bash/SKEL_with_help_and_pid.tmp
| /home/michelle.konzack/devel/bash/SKEL_with_help.tmp
| /home/michelle.konzack/devel/bash/SKEL_with_pid.tmp
| /home/michelle.konzack/devel/bash/help_version.tmp
| /home/michelle.konzack/devel/bash/pid.tmp
| /home/michelle.konzack/devel/bash/prog_parts_by_option.tmp
| /home/michelle.konzack/devel/bash/read_config.tmp
| /home/michelle.konzack/devel/bash/td.tmp
\______________________________________________________________________
Das ist aber nicht das was ich will, denn ich habe ja [A-Z]* angegeben
und nicht [A-Za-z]*. Im Script wird einfach GROS und klein Schreibung
ignoriert. LC_COLLATE sortiert zwar richtig, aber 'ls' zeigt falsch an.
> 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.
Also ich habe hier eine Develststion mit POTATO, WOODY, SARGE und SID
chroots...
Ich habe �berall den gleichen Fehler... (i386 + amd64)
Auf 68k und powerpc habe ich das ergebnis wie bei Dir.
Greetings
Michelle
--
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack Apt. 917 ICQ #328449886
50, rue de Soultz MSM LinuxMichi
0033/3/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
signature.pgp
Description: Digital signature

