bash ls [x-z]*

Software besorgen und anwenden
Post Reply
Message
Author
sumsi

bash ls [x-z]*

#1 Post by sumsi »

Hallo,

habe irgendwie einen Hänger:

Liste ich

Code: Select all

 ls /usr/bin/[xyz]*
, so wird alles meinermeinung nach korrekt und klein ausegeben.

Mache ich aber

Code: Select all

ls /usr/bin/[x-z]* 
, so werden alle mit x bis z beginnenden Dateine mit klein- und großgeschrieben Anfangsbuchstaben ausgegeben.

Ist das richtig, spinnt meine Bash oder liege icharg daneben?

bye sumsi

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Hm. Ich hab gerade mal geguckt, ob man dieses Verhalten mit shopt -u nocaseglob beeinflussen kann, scheint aber nicht so.
Eine LC_ALL=C bash zeigt dieses Verhalten aber nicht.
Es scheint, als hättest du einen Bug in der deutschen Lokalisierung von libc gefunden. Bitte dort nachgucken.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

sumsi

lc_all

#3 Post by sumsi »

Hallo,

danke -*Treffer*.

Die "LC_ALL" war nicht gesetzt, weise ich die dem Wert "C" zu, so funktioniert die ls-Anweisung richtig.

Und wie stelle ich das nun richtig ein? Weise ich LC_ALL nun C zu, dann werden doch alle locale-Einstellungen überschrieben. Einige Anwendungen brauchen aber "de_DE.UTF-8", sonst werden werden die Sonderzeichen nicht richtig dargestellt.

Grüße sumsi

PDA

#4 Post by PDA »

Stelle mal nur die LC_CTYPE

Code: Select all

export LC_CTYPE="C"
ein. Wenn es dann klappt weisst du es.
Es kann auch die (und/oder)

Code: Select all

LC_COLLATE
sein. Ich meine aber nicht.

Wenn ich wieder vor einer Linuxkiste sitze und daran denke
werde ich es mal versuchen ob das bei mir auch so ist.

Was für eine Version hast du denn? --> libc

sumsi

treffer

#5 Post by sumsi »

Hallo,

und wieder einen Treffer gelandet:
nach

Code: Select all

export LC_COLLATE=C
wird es so angezeigt wie es richtig ist ;-)

Version ist die glibc-2.3.5, aber so richtig verstehen muss ich das nicht.
Was hat die Sortierreihenfolge mit der Auswahl zu tun?

Grüße sumsi

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#6 Post by Janka »

Woher soll der Rechner denn wissen, dass mit x-z x|y|z gemeint ist, wenn er nicht in einer Liste nachguckt, welche Reihenfolge die Zeichen denn nun im Alphabet haben sollen? Evtl. gibt es ja Alphabete, bei denen zwischen x und z z.B. nicht nur y, sondern auch noch y mit Trema kommt...

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

sumsi

sortieren

#7 Post by sumsi »

Aber es geht doch um Gross- und Kleinschreibung.
Würde es bedeuten, dass die Buchstaben auf ASCII-Zeichen zurückgeführt (?), in dem einen Code ein grosses und in dem anderen Code ein kleines X bedeuten?

grüße sumsi

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#8 Post by jochen »

Hi,

das ist relativ einfach zu erklären. LC_COLLATE legt fest, wie die Sortierreihenfolge auszusehen hat. Nach purem ASCII kommen zuerst die Großbuchstaben, dann die Kleinbuchstaben, was man mit "LC_COLLATE=C" einstellen kann.

Das C darf man sich als "Computer" denken - es wird nicht groß was festgelegt, sondern der Computer soll sortieren, wie es für ihn "natürlich" ist (also ASCII bezgl. der Zeichen bis 127, be 128-255 also Latin1 oder UTF8). Also steht in der Sortierreihenfolge y zwischen x und z, Y ist viel weiter vorne.

Im Deutschen gilt aber, dass Groß- und Kleinbuchstaben gleich zu behandeln sind! Setzt man dies über LC_COLLATE=de, dann steht y zwischen Y und Z...

Verwendest Du [xyz], hast Du die gewünschten Zeichen exakt angegeben - es erscheinen auch nur Kleinbuchstaben. [x-z] dagegen lässt den COLLATE-Mechanismus greifen, da in D dadurch offiziell auch die Großbuchstaben gleichberechtigt sind.

Ich persönlich hasse dieses Verhalten auch. Wenn ich nicht sowieso mit einer englischen Sprachumgebung arbeite, setze ich meist "LANG=de" und "LC_COLLATE=C". Vielleicht sind auch die Kommandos "locale" und "localedef" für Dich interessant...

Jochen
Die grösste Lüge der EDV? "Mal eben..."

sumsi

;-)

#9 Post by sumsi »

Hallo,

vielen Dank für die Aufklärung ;-)

Grüße
sumsi

Post Reply