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.
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.
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.
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?
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...