bash und metazeichen

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
rennpferd
Beiträge: 133
Registriert: 30.06.2011 11:30:08
Kontaktdaten:

bash und metazeichen

Beitrag von rennpferd » 03.02.2012 11:24:00

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>

yeti

Re: bash und metazeichen

Beitrag von yeti » 03.02.2012 12:50:08

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
Da fingert Dir dieser neumoderne ###beep### elendige ###zensiert### Locale-Schlonz rein... laß Dich mal von "man 7 locale" darüber aufklären... mir fällt dazu grad nichts Angenehmeres zu Lesen ein... aber andere Mitleser haben sicher angenehmere Links zum Thema parat...

Liffi
Beiträge: 2307
Registriert: 02.10.2004 01:33:05

Re: bash und metazeichen

Beitrag von Liffi » 17.02.2012 15:10:29

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)

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: bash und metazeichen

Beitrag von Lohengrin » 17.02.2012 17:29:42

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.
Harry, hol schon mal das Rasiermesser!

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: bash und metazeichen

Beitrag von Lohengrin » 17.02.2012 17:41:35

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)
Was ist richtig? Meinst du in Reihenfolge der ASCII? Was ist mit Russisch?

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!

Liffi
Beiträge: 2307
Registriert: 02.10.2004 01:33:05

Re: bash und metazeichen

Beitrag von Liffi » 18.02.2012 07:46:17

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.
Bei mir ist LC_COLLATE leer. Weißt du zufällig auf welche Defaults er da zurückfällt?
Ich finde eine solche LC_COLLATE zur Sortierung sinnvoll. Aber beim oben benutzten ls wirkt es schon ziemlich unintuitiv.

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: bash und metazeichen

Beitrag von Lohengrin » 18.02.2012 10:32:37

Liffi hat geschrieben:
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.
Bei mir ist LC_COLLATE leer. Weißt du zufällig auf welche Defaults er da zurückfällt?
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.
Wo genau steht in welcher Reihenfolge bei LC_COLLATE=de_DE.UTF-8 geglobbt wird?
Liffi hat geschrieben:Ich finde eine solche LC_COLLATE zur Sortierung sinnvoll. Aber beim oben benutzten ls wirkt es schon ziemlich unintuitiv.
Mich hat es auch sehr überrascht, weil ich von ASCII ausgegangen bin. Aber intuitiv ist das nicht. Das war meine Gewohnheit - seit Commodore 64.
Harry, hol schon mal das Rasiermesser!

Antworten