Thread wurde vom System oder vom Community-Team geschlossen.

Dateisystem und Schreibweise (Großschreibung/Kleinschreibung) … und Diskrepanzen

Schon wieder ein Beitrag, der keine Frage ist. Sondern vielleicht zur Diskussion anregt, ansonsten aber (mit dem hoffentlich passenden Titel hier) Informationen bereitstellen soll:


Datei-Namen („und Verwandte“) auf dem Mac unterscheiden zwischen Groß- und Kleinschreibung. Aber nur … eingeschränkt? bedingt? Jedenfalls hängt es davon ab, wie das jeweilige Volume formatiert wurde: case-preserving oder case-sensitive.

So weit, so gut (und: ich habe ja schon mal auf mögliche Probleme hingewiesen). Aber heute bin ich über einen „Effekt“ gestolpert, der mich, jedenfalls vorläufig, doch irritiert:

for l1 in o O; do for l2 in h H; do echo "***\tTest für \"ls ${l1}\* ${l2}\*\"\n"; ls ${l1}*.${l2}tml; done; done

***
	Test für "ls o\* h\*"


zsh: no matches found: o*.html

***
	Test für "ls o\* H\*"



zsh: no matches found: o*.Html

***
	Test für "ls O\* h\*"



Olivia.html

***
	Test für "ls O\* H\*"



zsh: no matches found: O*.Html


Wenn das Dateisystem (hier: Systemplatte, also case-preserving⁉︎ Jedenfalls konnte ich mit diskutil und Mount nichts Gegenteiliges entdecken) keinen Unterschied macht, wieso findet ls dann (im und zum Beispiel) *.html, nicht aber *.Html?


(Ist das ein Fall für den Support?)

Gepostet am 04. Juni 2023 22:42

Antworten
Frage gekennzeichnet als Höchstrangige Antwort

Gepostet am 11. Juni 2023 00:11

  1. „ls ist case sensitive“? Kaum. Es stellt dar, was darzustellen ist. Und das, was dargestellt wird, verwirrt. Der Finder handelt das kaum anders!
  2. Daß das, ein, Dateisystem diesen Punkt so oder so handhaben kann, habe ich ja schon erwähnt. Auch, daß MacOS damit Probleme bekam(?), wenn es auf einem “case sensitive” Volume lag(?). Was mit der Grund für meine Verwunderung ist. Aber … s. u.
  3. Das Kommando ls kann nicht (mehr, wenn man es mit gezählten Korinthen sehen will) von Unix übernommen worden sein, denn OS X ist (ungefähr seit 1.8) ein „waschechtes“ Unix. Und da man ls meint “An ls command appeared in Version 1 AT&T UNIX.” gehört es einfach dazu. Jedenfalls gab und gibt es da nichts anzupassen. Vor allem, weil es ja auch auf “case sensitive” Systemen funktionieren muß!


Aber gerade vorhin habe ich, mit erneuter Überraschung, festgestellt, daß diese Unterscheidung (wie in meinem Beispiel beschrieben) schon alt ist. Das war „schon immer so“, ist mir nur nie aufgefallen („eyeTV 4 ist schuld“). — Man sollte das, jedenfalls wenn man sich „öfter mal ins Terminal verirrt“, im Hinterkopf behalten!

6 Antworten
Frage gekennzeichnet als Höchstrangige Antwort

11. Juni 2023 00:11 als Antwort auf Corona0769

  1. „ls ist case sensitive“? Kaum. Es stellt dar, was darzustellen ist. Und das, was dargestellt wird, verwirrt. Der Finder handelt das kaum anders!
  2. Daß das, ein, Dateisystem diesen Punkt so oder so handhaben kann, habe ich ja schon erwähnt. Auch, daß MacOS damit Probleme bekam(?), wenn es auf einem “case sensitive” Volume lag(?). Was mit der Grund für meine Verwunderung ist. Aber … s. u.
  3. Das Kommando ls kann nicht (mehr, wenn man es mit gezählten Korinthen sehen will) von Unix übernommen worden sein, denn OS X ist (ungefähr seit 1.8) ein „waschechtes“ Unix. Und da man ls meint “An ls command appeared in Version 1 AT&T UNIX.” gehört es einfach dazu. Jedenfalls gab und gibt es da nichts anzupassen. Vor allem, weil es ja auch auf “case sensitive” Systemen funktionieren muß!


Aber gerade vorhin habe ich, mit erneuter Überraschung, festgestellt, daß diese Unterscheidung (wie in meinem Beispiel beschrieben) schon alt ist. Das war „schon immer so“, ist mir nur nie aufgefallen („eyeTV 4 ist schuld“). — Man sollte das, jedenfalls wenn man sich „öfter mal ins Terminal verirrt“, im Hinterkopf behalten!

10. Juni 2023 21:55 als Antwort auf Zedmaraces

Hallo Zedmaraces


Ob dein Beitrag ein Fall für den Support ist, musst Du entscheiden. Ich konnte mit Terminal und allen Varianten der Gross/Kleinschreibung und folgenden Dateien in einem Testordner die folgenden Suchtreffer finden:

Gelb sind die Suchoptionen (klein o und klein h, klein o und gross H, gross O und klein h, gross O und gross H) und die farbigen Markierungen die Rückmeldungen vom Terminal:

Ausgangsdateien:


Allerdings habe ich beim Anlegen der HTML-Dateien folgendes bemerkt:

  1. Das Anlegen von "Olivia.htm" bei gleichzeitig vorhandener Datei "olivia.htm" im Ordner funktioniert nicht: Es sei die gleiche Datei, sagt Mac-OS.
  2. Das Anlegen von "Olivia.Htm" bei gleichzeitig vorhandene Datei "Olivia.htm" im Ordner funktioniert nicht: Es sei die gleiche Datei, sagt Mac-OS.
  3. Gehe ich mit dem Terminal in den Testordner mit CD "Testordner" und ändere den Dateinamen mit "MV Alterdateiname Neuerdateiname" verschwindet oder wird die vorherige Datei sogar gelöscht, ohne zu fragen, ob sie überschrieben werden soll. Sie ist auch keine unsichtbare Datei mehr, wie mir TinkerTool mitteilt.
  4. Das Suchen mit Spotlight im "Testordner" nach ".HTM", sowie ".htm" hat das gleiche Ergebnis: MacOS listet immer alle Schreibweisen auf, siehe Bilder.
  5. Erstelle ich jedoch eine Datei "Olivia.htm" und "Olivia.html" kann ich beide Dateien anlegen, obwohl es nach meiner Meinung der gleiche Dateiname ist, und die Dateiendungen html und htm für die gleiche Dateierweiterung stehen.
  6. Suche ich mit Spotlight im Ordner, werden die HTML-Dateien im Suchergebnis falsch angezeigt, also mit klein geschriebener Dateierweiterung "htm" und nicht gemischt mit grosser und kleiner Schreibweise. Siehe Bilder. Das hat damit zu tun, dass anscheinend Spotlight einen anderen Index abfragt, als wirklich den aktuellen Ist-Zustand im Testordner (Olivia3.Html wird als Olivia3.html angezeigt: Bug oder falscher Spotlight-Schnappschuss).
  7. Mittels z.B. "NameMangler" kann ich Dateien sensitiv suchen und auch Dateien umbenennen. Hier wurde nur die Datei mit dem grünen Haken gelistet, die den Suchergebnissen entspricht:
  8. Mit welcher Programmiersprache ist der Befehl "LS" im Terminal programmiert worden? Es kommt nicht nur darauf an, welche Werkzeuge du benutzt, sondern mit welcher Programmiersprache sie auch geschrieben wurden.



11. Juni 2023 19:54 als Antwort auf Corona0769

Angst? Das glaube ich nicht! KISS ist dabei ein wesentliches Motto! Und außerdem kommen da dann auch umgehend weitere Probleme (beispielsweise) mit ins Boot.

Für mich war da jedenfalls nur überraschen, daß (in diesem Fall, aber alle anderen Shell-Kommandos werden das kaum anders sehen) ls die Antwort „Datei ist da“ bzw. „nicht da“ nicht, nicht vom Dateisystem beantwortet bekommt.

10. Juni 2023 22:27 als Antwort auf AndiV

Ob dein Beitrag ein Fall für den Support ist, musst Du entscheiden.

Ich weiß noch nicht so recht. „Gebt mir Dokumentation“ wäre da erst mal der Hilferuf.

Ich konnte mit Terminal und allen Varianten der Gross/Kleinschreibung und folgenden Dateien in einem Testordner die folgenden Suchtreffer finden:  …

Immerhin: das paßt schon mal zu meiner „Entdeckung“. Auch wenn wir diese Angelegenheit (noch?) nicht „aus der Nähe sehen“.

Allerdings habe ich beim Anlegen der HTML-Dateien folgendes bemerkt: 1.
Das Anlegen von "Olivia.htm" bei gleichzeitig vorhandener Datei "olivia.htm" im Ordner funktioniert nicht: Es sei die gleiche Datei, sagt Mac-OS.

An der Stelle also “case preserving“: die unterschiedliche Schreibweise wird zwar im Dateisystem vermerkt, aber nicht als solche gesehen.

2. Das Anlegen von "Olivia.Htm" bei gleichzeitig vorhandene Datei "Olivia.htm" im Ordner funktioniert nicht: Es sei die gleiche Datei, sagt Mac-OS.

Dito.

4. Gehe ich mit dem Terminal in den Testordner mit CD "Testordner" und ändere den Dateinamen mit "MV Alterdateiname Neuerdateiname" verschwindet oder wird die vorherige Datei sogar gelöscht, ohne zu fragen, ob sie überschrieben werden soll. Sie ist auch keine unsichtbare Datei mehr, wie mir TinkerTool mitteilt.

mv ≘ move! Soweit möglich wird damit „nur“ der Name manipuliert und ggf. das betroffene Objekt in einen anderen Verzeichnispfad verschoben. Nur wenn die Grenzen des jeweiligen Dateisystems (Mac: normalerweise das Volume) überschritten werden, entsteht dabei eine Kopie (und abschließend wird das Original gelöscht):

As the rename(2) call does not work across file systems, mv uses cp(1) and rm(1) to accomplish the move.

— (man mv)

5. Das Suchen mit Spotlight im "Testordner" nach ".HTM", sowie ".htm" hat das gleiche Ergebnis: MacOS listet immer alle Schreibweisen auf, siehe Bilder.

Wieder: case preserving.

Erstelle ich jedoch eine Datei "Olivia.htm" und "Olivia.html1. " kann ich beide Dateien anlegen, obwohl es nach meiner Meinung der gleiche Dateiname ist, und die Dateiendungen html und htm für die gleiche Dateierweiterung stehen.

’tschuldigung, aber nein. Datei- bzgl. Objektnamen sind immer „am Stück“. Diese „Dateinamenserweiterung“ ist eine Windows-Dummheit, die Redmond erfolgreich in alle „konkurrierenden Produkte“ gezwungen hat. Type und Crestor waren elegant und hätten sowohl das System als auch die Anwender vor machen Ärger bewahrt!

Der Unterschied zwischen .htm und .html ist also ungefähr ähnlich wie „anderer creator“. Daß sie „hinten dran“ vom OS gleich oder sehr ähnlich behandelt werden (hier: was das Öffnen angeht), ist nur so etwas wie ein gewollter Zufall.

2. Suche ich mit Spotlight …

Spotlight ist … ein komplexes und recht umfangreiches Thema. Und da es hier nur auf einem Nebengleis parallel mitfährt, hier IMO uninteressant.

2. Mit welcher Programmiersprache ist der Befehl "LS" im Terminal programmiert worden? Es kommt nicht nur darauf an, welche Werkzeuge du benutzt, sondern mit welcher Programmiersprache sie auch geschrieben wurden.

Programmiersprache?

Tipp: man zsh (ggf. mit einem echo $SHELL davor und/oder danach).


Meine Vermutung: case preserving ist Vergangenheit, aber dieser Umstand wird uns „von der GUI“ (irgendwo zwischen der Ebene Terminal und „modern gestalteten“, aber immer umständlicher handhabbaren Fenstern) verheimlicht. Oder zu verheimlichen versucht.


Beiläufig: da „Codeeinfügung“ hier anscheinend nur ganze Absätze mag, hier also ein mißbrauchtes „Kursiv“.


Kleiner, aber evtl. nicht unwichtiger Nachtrag: Deine Frage zur „Programmiersprache“ läßt mich Dir empfehlen, mit Dingen wie dem Terminal vorsichtig, sehr vorsichtig umzugehen! Daß es da keinen Papierkorb gibt, ist nur eine der weniger schmerzhaften Entdeckungen, die man da machen kann!

10. Juni 2023 23:36 als Antwort auf Zedmaraces

ls ist case sensitive, während der Finder es nicht ist. Das Dateisystem kann entweder Groß/Kleinschreibung beachten (was der UNIX Standard ist) oder ignorieren. Das Kommando ls wurde vom UNIX übernommen und nicht für das neue Dateisystem angepasst, eigentlich müsste erst der Typ des Dateisystem geprüft werden und dann im zweiten Schritt entweder auf genaue Übereinstimmung oder eben unabhängig von Groß/Kleinschreibung. Von meiner Warte arbeiten beide wie erwartet Finder kennt das Format des Dateisystem - ls nicht. Interessant ist das Kopieren cp olivia.html OLIVIA.HTML, das wird vom Dateisystem unterbunden.

Für die gewünschte Anwendung sollte ein ls [oO]*.[hH]* die Lösung sein

Dateisystem und Schreibweise (Großschreibung/Kleinschreibung) … und Diskrepanzen

Willkommen in der Apple Support Community
Ein Forum, in dem Apple-Kunden sich gegenseitig mit ihren Produkten helfen. Melde dich mit deinem Apple Account an, um Mitglied zu werden.