Hallo,
kann mir jemand erklären warum die bash die Metazeichen im folgenden Beispiel nicht richtig auswertet?
Danke
Karlheinz
user1@venus:~/shellar/3$ ls
Buch1 datei1 datei11 Datei2 datei4 datei6 datei8 dateien Kapitel2
Buch21 datei10 datei2 datei3 datei5 datei7 datei9 Kapitel1
user1@venus:~/shellar/3$ ls [A-K]*
Buch1 datei1 datei11 Datei2 datei4 datei6 datei8 dateien Kapitel2
Buch21 datei10 datei2 datei3 datei5 datei7 datei9 Kapitel1
Die Bourne-Shell liefert dagegen das erwartete ERgebnis:
user1@venus:~/shellar/3$ sh
$ ls [A-K]*
Buch1 Buch21 Datei2 Kapitel1 Kapitel2
$ exit
Ich verwende hier Debian in der aktuellsten Version und die
GNU bash, Version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder jünger <http://gnu.org/licenses/gpl.html>
bash und metazeichen
Re: bash und metazeichen
Code: Alles auswählen
(yeti@destiny:1)~/wrk/tmp$ echo $BASH_VERSION
4.1.5(1)-release
(yeti@destiny:1)~/wrk/tmp$ touch Buch1 datei1 datei11 Datei2 datei4 datei6 datei8 dateien Kapitel2
(yeti@destiny:1)~/wrk/tmp$ touch Buch21 datei10 datei2 datei3 datei5 datei7 datei9 Kapitel1
(yeti@destiny:1)~/wrk/tmp$ ls
Buch1 datei1 datei11 Datei2 datei4 datei6 datei8 dateien Kapitel2
Buch21 datei10 datei2 datei3 datei5 datei7 datei9 Kapitel1
(yeti@destiny:1)~/wrk/tmp$ export LANG=C ; ls [A-K]*
Buch1 Buch21 Datei2 Kapitel1
Re: bash und metazeichen
Ich bin hier rübergestolpert, weil ich bei der bash leider das gleich erlebt habe.
Die zsh wertet es komischerweise richtig aus (beide shells mit LANG=en_US.UTF-8)
Die zsh wertet es komischerweise richtig aus (beide shells mit LANG=en_US.UTF-8)
Re: bash und metazeichen
Ich hatte das mal vor vielen Jahren.
Es liegt an LC_COLLATE. Da steht drin, dass er deutsch sortieren soll, also aAäÄbBcCdDeEfFgGhHiIjJkKlLmMnNoOöOpPqQrRsSßtTuUüÜvVwWxXyYzZ, und da liegt d zwische A und K.
Es liegt an LC_COLLATE. Da steht drin, dass er deutsch sortieren soll, also aAäÄbBcCdDeEfFgGhHiIjJkKlLmMnNoOöOpPqQrRsSßtTuUüÜvVwWxXyYzZ, und da liegt d zwische A und K.
Harry, hol schon mal das Rasiermesser!
Re: bash und metazeichen
Was ist richtig? Meinst du in Reihenfolge der ASCII? Was ist mit Russisch?Liffi hat geschrieben:Ich bin hier rübergestolpert, weil ich bei der bash leider das gleich erlebt habe.
Die zsh wertet es komischerweise richtig aus (beide shells mit LANG=en_US.UTF-8)
Da jede Sprache ihre Eigenheiten hat (auf deutsch ist ä so wie a, manchmal sogar so wie ae, auf norwegisch kommt æ nach dem z), gibt es LC_COLLATE.
Bash macht genau das, was in LC_COLLATE steht. Wer Sortierung nach Unicode haben will, muss da C reinschreiben und nicht en_US.UTF-8.
Harry, hol schon mal das Rasiermesser!
Re: bash und metazeichen
Bei mir ist LC_COLLATE leer. Weißt du zufällig auf welche Defaults er da zurückfällt?Lohengrin hat geschrieben:Ich hatte das mal vor vielen Jahren.
Es liegt an LC_COLLATE. Da steht drin, dass er deutsch sortieren soll, also aAäÄbBcCdDeEfFgGhHiIjJkKlLmMnNoOöOpPqQrRsSßtTuUüÜvVwWxXyYzZ, und da liegt d zwische A und K.
Ich finde eine solche LC_COLLATE zur Sortierung sinnvoll. Aber beim oben benutzten ls wirkt es schon ziemlich unintuitiv.
Re: bash und metazeichen
Nein. Aber ich wüsste es auch gerne. Als ich damals das Problem hatte, stand auch noch eine Frage aus. Ich wiederhole sie jetzt hier, weil es dazu passt.Liffi hat geschrieben:Bei mir ist LC_COLLATE leer. Weißt du zufällig auf welche Defaults er da zurückfällt?Lohengrin hat geschrieben:Ich hatte das mal vor vielen Jahren.
Es liegt an LC_COLLATE. Da steht drin, dass er deutsch sortieren soll, also aAäÄbBcCdDeEfFgGhHiIjJkKlLmMnNoOöOpPqQrRsSßtTuUüÜvVwWxXyYzZ, und da liegt d zwische A und K.
Wo genau steht in welcher Reihenfolge bei LC_COLLATE=de_DE.UTF-8 geglobbt wird?
Mich hat es auch sehr überrascht, weil ich von ASCII ausgegangen bin. Aber intuitiv ist das nicht. Das war meine Gewohnheit - seit Commodore 64.Liffi hat geschrieben:Ich finde eine solche LC_COLLATE zur Sortierung sinnvoll. Aber beim oben benutzten ls wirkt es schon ziemlich unintuitiv.
Harry, hol schon mal das Rasiermesser!