zero5
Anmeldungsdatum: 29. März 2022
Beiträge: Zähle...
|
Hallo, ich habe in Windows diverse Arbeitsordner - z.B. "temp" als "_temp" benannt, damit der Ordner in der Sortierreihenfolge ganz oben erscheint und so von den "normalen" Ordnern abgegrenzt ist. In XUbuntu nun geht das nicht, der Unterstrich wird nicht berücksichtigt, "_temp" erscheint nun nach "s".
In einem Porteus-Linux hingegen stimmt es zwar auch nicht, aber der Unterstrich erscheint zumindest ein wenig weiter oben. (siehe Bilder im Anhang). Insofern ist das Problem nicht unter allen Linux-Distributionen das gleiche. Habe da schon im Netz danach gesucht, bin aber nicht wirklich fündig geworden. Andere scheinen das gleiche Problem zu haben:
https://debianforum.de/forum/viewtopic.php?t=162369 Weiß vielleicht hier jemand Rat? Danke und Grüße
Christian
- Bilder
|
san04
Anmeldungsdatum: 19. Januar 2010
Beiträge: 1066
|
Hi, du könntest etwas an den Spracheinstellungen drehen (LC_COLLATE). Unter Gnome funktioniert das Verhalten von Porteus zumindest so: sudo update-locale LC_COLLATE=C ▶ https://help.ubuntu.com/community/Locale PS: Hänge Bilder bitte mit Dateiendungen an, dann sind sie einfacher zu öffnen.
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
Ich denke nicht, dass das etwas mit der Spracheinstellung zu tun hat. Seit einiger Zeit scheint es so zu sein, dass es bei den Linux Standard Sortierungen nur noch alphasort() und versionsort() gibt. Ziel ist da, eine numerische Sortierung zu bekommen. Mir passt das auch nicht immer, weswegen ich für einige Zwecke eigene Programme verwende. Andere Programme machen das teilweise auch. Z.B. gibt es in dem Programm Geeqie auch die (nicht sehr vielsagende) Einstellung "Sortieren nach Zahl". Das bedeutet, dass für die Sortierung nur der Wert der einzelnen Bytes herangezogen wird. Das ist aber das, was du suchst. In anderen Programmen heißt das (irreführend) "numeric sort". Das ist also eine Sache der jeweiligen Anwenderprogramme. Bei Thunar finde ich da leider keine entsprechende Einstellmöglichkeit. Das Ganze ist also eher eine Frage, ob der Programmentwickler das vorgesehen hat oder nicht. Aber in letzter Zeit geht ja (leider) der Trend eher dahin, die Programmoberflächen zu vereinfachen. Mann lässt also alle Einstellungen weg, die den Anwender "verwirren" könnten.
|
zero5
(Themenstarter)
Anmeldungsdatum: 29. März 2022
Beiträge: 35
|
Hallo, vielen Dank. @san04: Habe es damit versucht und es funktioniert jetzt wie in Porteus. ☺ Danke dafür. Perfekt ist es nicht, da ich den Unterstrich gerne vor Zahlen hätte, aber nach Punkt. Habe da ein bisschen im Netz gesucht, eine einfache Lösung scheint es dafür nicht zu geben. Es gibt allerdings wohl die Möglichkeit, sich sein persönliches Locale zu basteln. Muss man sich aber wohl auskennen. Die Bilder hatte ich (über die Forumsmaske) unbenannt und dann nicht auf die Dateiendungen geachtet. Weiß ich das, danke für den Hinweis. @Dakuan: Doch, es geht mit den Spracheinstellungen bzw.: Einstellungen des Sortiersatzes: LANG und COLLATE sind unterschiedliche Parameterkategorien.
Das - will ich meinen - ist wohl auch das Problem im von mir genannten Link, dass da mit der falschen Parameter-Kategorie hantiert wird. Deshalb - will ich vermuten - funktioniert es beim einen mit "LANG=de_DE.utf8" und beim andere nicht - das hat gar keinen Einfluss drauf, weil eben nicht "LANG", sondern "COLLATE" verändert werden muss. In diversen Anwenderprogrammen kann dann nochmal bestimmt werden, ob eben die Einstellung aus "COLLATE" verwendet wird, oder aber eine eigene (programmspezifische) Einstellung. Es stimmt aber, dass für Thunar hier keine Einstellung getätigt werden kann. Grüße
Christian
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Hallo! Das was du gerne hättest verlangt eine speziell so programmierte Sortierung. „Normal“ (im Sinne von gegeben) wäre die Sortierung Zahlen, Großbuchstaben, Unterstrich, Kleinbuchstaben, weil das der ASCII-Standard so vorhält — oder eben die „natürliche“ Sortierung nach Position in der Partitionstabelle. Unter Plasma kann ich das leider so nicht prüfen, da da wirklich die Unterstriche oben sind, was vermutlich daran liegt, das Qt bemüht ist auf allen Plattformen zu funktionieren und sowas mitbringt. COLLATE=C dürfte dir die ASCII-Sortierung bringen. Ich habe hier einen Mix aus en_US und en_DK, könnte also auch Unterschiede aufwerfen.
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
Ok, COLLATE hatte ich gar nicht auf dem Zettel.
COLLATE=C dürfte dir die ASCII-Sortierung bringen.
Das klingt interessant. Die Auswirkungen und Nebenwirkungen muss ich mal testen. Wieder etwas gelernt.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Dakuan schrieb: Wieder etwas gelernt.
Sicher? Du kennst das doch sicher aus C, setlocale(LC_ALL, "POSIX"); oder setlocale(LC_ALL, "C"); ⇨ https://www.gnu.org/software/libc/manual/html_node/Locales.html
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
Sicher? Du kennst das doch sicher aus C, setlocale(LC_ALL, "POSIX");
Na ja, kennen schon, aber die notwendigen Parameter nicht vollständig verstanden (mein Englisch ist nicht so dolle). Deshalb hatte ich darum bisher immer einen Bogen gemacht. Jetzt denke ich, dass ich da wohl doch mal die Systemfunktionen als Alternative zu meinen "besonderen" Sortierungen anbieten sollte.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Beispielausgabe: [locale ]O|O|F|D|F|D|F|D|F|D|F|D|F|D|F|D|
[POSIX ].|.|1|1|9|9|A|A|Z|Z|_|_|a|a|z|z|
[C ].|.|1|1|9|9|A|A|Z|Z|_|_|a|a|z|z|
[en_US.UTF-8].|.|_|_|1|1|9|9|a|a|A|A|z|z|Z|Z|
[de_DE.UTF-8].|.|_|_|1|1|9|9|a|a|A|A|z|z|Z|Z|
[en_DK.UTF-8].|.|_|_|1|1|9|9|a|a|A|A|z|z|Z|Z|
[en_GB ISO-8].|.|_|_|1|1|9|9|a|a|A|A|z|z|Z|Z|
[es_ES.UTF-8].|.|_|_|1|1|9|9|a|a|A|A|z|z|Z|Z|
[fr_BE@euro ].|.|1|1|9|9|A|A|Z|Z|_|_|a|a|z|z| Erklärung: · O = Verzeichnisse . und .. · F = File (Dateiname beginnend mit) · D = Dir (Ordner beginnend mit) Wie zu sehen ist, ist die normale Sortierung nach C/POSIX die nach ASCII-Code. Zur Ermittlung habe ich ein kleines C-Programm geklöppelt, welches mit setlocale( LC_COLLATE, *locale ) jeweils das selbe Verzeichnis temporärer Dateien durchläuft und diese mit alphasort sortiert.
|
san04
Anmeldungsdatum: 19. Januar 2010
Beiträge: 1066
|
Hi ChickenLipsRfun2eat, [C ].|.|1|1|9|9|A|A|Z|Z|_|_|a|a|z|z|
ich verstehe nicht, warum hier der Unterstrich nach den Großbuchstaben auftaucht. Ich meine als ich das ausprobiert hab war das nicht der Fall. Dort war es ja wie die Porteus-Sortierung, in deiner Notation also 1|1|9|9|_|_|A|A|a|a (Groß- und Kleinschreibung habe ich nicht probiert, aber jedenfalls beides hinter dem Unterstrich) Ist es vielleicht doch ein Zusammenspiel aus locale und thunar, was sich in der Konsole so nicht reproduzieren lässt?
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
ich verstehe nicht, warum hier der Unterstrich nach den Großbuchstaben auftaucht.
Wenn "C" die ASCII Sortierung ist, also stumpf nach Bytewert, ist das klar. @ChickenLipsRfun2eat Danke für den Link. Da war ein interessantes Beispielprogramm dabei. Ich denke, ich sollte meine Programme anpassen, damit sie auf systemweite Einstellungen reagieren können, falls der Anwender das möchte. Ich muss die Einstellungen ja nicht selber verändern.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
san04 schrieb: ich verstehe nicht, warum hier der Unterstrich nach den Großbuchstaben auftaucht
Jedes druckbare Zeichen hat einen Zahlenwert. Auch heute gilt noch als Minimalbasis ASCII. Wenn du dir die Zahlen ansiehst, wird klar das das so ist:
Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex
0 00 NUL 16 10 DLE 32 20 48 30 0 64 40 @ 80 50 P 96 60 ` 112 70 p
1 01 SOH 17 11 DC1 33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q
…
9 09 HT 25 19 EM 41 29 ) 57 39 9 73 49 I 89 59 Y 105 69 i 121 79 y
10 0A LF 26 1A SUB 42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z
…
15 0F SI 31 1F US 47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o 127 7F DEL
A-Z haben 65-90, _ 95 und a-z 97-122 als Werte. alphasort sortiert nach Wertigkeit des Alphabets.
|
san04
Anmeldungsdatum: 19. Januar 2010
Beiträge: 1066
|
Danke für die Erklärung, konnte dein Verhalten jetzt auch reproduzieren. Ich war etwas verwirrt, weil mein Nautilus in Standardeinstellung dann doch direkt so sortierte wie gewünscht (also mit Unterstrich zuerst).
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
san04 schrieb: Ich war etwas verwirrt, weil mein Nautilus in Standardeinstellung dann doch direkt so sortierte wie gewünscht (also mit Unterstrich zuerst).
Ja. Das liegt daran, wie der Dateimanager letztendlich programmiert ist und welche Sortiermodelle integriert sind. Die locale ist nur die erste Instanz, die festlegt, welchen Dezimaltrenner du verwendest, etc. UTF-8 Zeichen würden in C auch ganz dubios sortiert, da nur das erste Byte zählt, diese aber mehrere haben. Das erfordert dann das Arbeiten mit breiteren Zeichentypen, etc. Vertiefe es nicht, es macht absolut keinen Spaß 😀
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
... UTF-8 Zeichen würden in C auch ganz dubios sortiert, da nur das erste Byte zählt, diese aber mehrere haben.
Nein, UTF-8 codierte Zeichen werden da korrekt sortiert, so wie es dem Unicode Wert entspricht. Darauf wurde besonderen Wert gelegt.
Das erfordert dann das Arbeiten mit breiteren Zeichentypen, etc. Vertiefe es nicht, es macht absolut keinen Spaß
Dass muss nicht sein. Ich verwende z.B. auch für UTF-8 codierte Texte die normalen Regex Funktionen. Funktioniert prima. Breitere Zeichentypen werden erst erforderlich, wenn man die Byts zu einem 32-Bit Wert zusammenfasst. Allerdings muss man bei UTF-8 aufpassen, wenn man einzelne Zeichen be- oder verarbeiten will, da man sich sonst leicht mitten in einer Sequenz wieder findet. Das erkennt man daran, dass ein Folgebyte immer mit 10...... beginnt. Wenn man allerdings "besondere" Sortierkriterien berücksichtigen will, sollte man umkodieren, da man dafür wohl eine Bewertungstabelle Benötigt. Das überlasse ich aber Leuten, die sich damit besser auskennen.
|