Gibt es eine Möglichkeit zu verhindern, dass diese lästigen .DS_Store-Dateien jemals erstellt werden?

Gibt es eine Möglichkeit (z. B. einen binären Hack in den Finder), ihn daran zu hindern, .DS-Stores auf LOKALEN Volumes zu erstellen?

Ich verwende Leopard, daher funktionieren diese nicht:

Außerdem verlangsamt BlueHarvest meinen Computer.

Siehe: Verhindern, dass MacOS .*- und ._*-Dateien erstellt – gibt es einen bestimmten Grund , warum Sie diese nicht möchten?
@slhck: blueharvest funktioniert, verlangsamt aber meinen Computer. Ich suche so etwas
Ich habe vergessen, dass TotalFinder nur auf ≥ 10.6 funktioniert, sorry.
Diese Frage wäre zu lokalisiert, wenn sie spezifisch für Leopard und früher wäre. Antworten könnten gegebenenfalls nur die aktuell niedrigste oder höchste unterstützte Version erwähnen.

Antworten (6)

Lösungen von Drittanbietern

Meiner Erfahrung nach ist BlueHarvest Klassenbester. Technisch gesehen ist es keine Antwort auf die Frage; Es kann Dateien entfernen, aber nicht verhindern ..DS_Store

Wenn BlueHarvest effektiv ist, aber nicht zu Ihrem Anwendungsfall passt, wird es schwierig, eine akzeptable Antwort auf Ihre Frage zu geben.

Wenn Sie keine akzeptable Lösung eines Drittanbieters haben, müssen Sie mit dem arbeiten, was in Leopard integriert ist …

Ohne eine Lösung eines Drittanbieters: Schränken Sie Ihre Verwendung von Finder ein

Indem Sie Ansichten vermeiden, die Sie nicht speichern möchten, können Sie die Erstellung von .DS_StoreDateien verhindern.

Die meisten Benutzer werden es schwierig finden, sich auf diese Weise zurückzuhalten, aber es ist eine wahre Antwort innerhalb der Grenzen der Frage.

http://diigo.com/0qiwp für eine kommentierte Ansicht von http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html , wo Matt Deatherage (ein ehemaliger Ingenieur bei Apple) .DS_Storeund anderes erklärt Arten von Dateien.

Um zu verhindern, dass diese hässlichen .DS_Store-Dateien angezeigt werden, scheint es eine relativ neue Option zu geben, dies sauber zu tun, nicht nur für Netzlaufwerke, wie:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

sondern auch für USB-verbundene Volumes:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

In Bezug auf den Titel der OP-Frage ist dies die beste Lösung ohne Hacks, da sie nicht nur das Fehlverhalten des Netzwerks behebt, sondern auch für die meisten angeschlossenen Festplatten gilt. Und das könnte das größte Ärgernis für die meisten Benutzer sein, die Geräte wie USB-Sticks zwischen verschiedenen Umgebungen teilen. Es verwendet nur von Apple bereitgestellte Optionen und beeinträchtigt den normalen Betrieb in keiner Weise.

In Bezug auf die im OP-Body erläuterte konkrete Situation ist dies von begrenztem Wert, da diese USB-Option nur in späteren Versionen von OS X/macOS verfügbar ist. Darüber hinaus löst dies immer noch nicht das Problem der .DS_StoreErstellung auf internen Festplatten, wo sie ebenfalls mühsam zu handhaben sein können. Obwohl sie an diesem Ort tatsächlich einem Zweck dienen könnten.

Eine umfassendere Lösung für dieses Problem, wenn auch eine hackigere, die auf den meisten Versionen des Mac-Betriebssystems funktioniert, lautet wie folgt: Um dieses böse Verhalten auf allen Festplatten vollständig zu unterdrücken – und mit einem binären Patcher/Code-Injektor wie der Frage nach das OP sehnt sich nach – es gibt DeathToDSStore / mit Quelle .

Beide Optionen gehen davon aus, dass noch jemand den Finder verwendet … Die Verwendung eines anderen Dateimanagers würde dieses Problem ebenfalls lösen. Es gibt zahlreiche Anwärter, den Finder für die Dateiverwaltung unter macOS zu ersetzen. Zwei der Platzhirsche in diesem Bereich sind Pathfinder oder XFile .

+1 für den USBStores-Befehl (den kannte ich nicht!) sowie DeathToDSStore.
Diese Antwort scheint für die lokale Festplattenpartition nicht zu funktionieren.

Ich habe keine Möglichkeit gefunden, die Erstellung zu verhindern, aber Sie können sie mit einem Skript automatisch löschen:

#!/bin/sh

find ~ -name .DS_Store -exec /bin/rm -f -- {} \;

exit 0

Führen Sie es alle X Minuten über launchdoder aus cron. Es dauert fast keine Zeit, um auf meinem mehrere Jahre alten iMac zu laufen. Es wird nur Ihr $HOME (~) durchsuchen, aber dort werden die meisten von ihnen sein. Ändern Sie ~ zu / , wenn Sie sie auf dem gesamten Laufwerk löschen möchten, die Ausführung jedoch viel länger dauert. Passen Sie die Häufigkeit daher entsprechend an.

Du könntest auch verwenden find ~ -name .DS_Store -delete. Und vergessen Sie nicht das -nameFlag – ohne es würde der Befehl für alle Dateien in ~und gelten ./.DS_Store.
Ich weiß, dass ich ein Skript verwenden kann, aber Ihre Antwort beantwortet die Frage nicht.
Die Antwort auf die Frage ist "nein". Es gibt keine Möglichkeit, ihre Erstellung zu verhindern (außer auf Netzwerkfreigaben, was auch nicht die Frage war). Diese Antwort versucht, das gleiche Endergebnis zu erzielen. Wenn SE eine Antwortkategorie namens "Workaround" hätte, hätte ich sie darunter gestellt. Es ist sicherlich keine schlechtere "Antwort" als ein Daemon, der an ein Framework angehängt wird (< asepsis.binaryage.com/> ), und viel sicherer als das Hacken in eine Systembinärdatei, und es läuft auf jeder Version von Mac OS X.
Nur dass es nicht das gleiche Endergebnis erzielt. Blueharvest ist eine bessere Problemumgehung (gleiches Endergebnis, abgesehen von der Tatsache, dass der Computer wie ein Schwein läuft). Auch Asepsis ist ein Treiber IIRC.
a) Ich sagte "versucht, dasselbe Endergebnis zu erzielen", nämlich keine .DS_Store-Dateien auf Ihrem Computer zu haben. b) "Besser" ist ein relativer Begriff, da die Verlangsamung des gesamten Betriebs des Computers ein erheblicher Nachteil ist. c) Asepsis ist „eine Kernel-Erweiterung und ein systemweiter Daemon im Userspace“ und wird „in jeden Startprozess geladen“, was dem, was ich gesagt habe, ziemlich nahe kommt. Du scheinst viel mehr daran interessiert zu sein, mir zu sagen, dass ich falsch liege, als Hilfe anzunehmen, also werde ich aufhören, sie anzubieten.
Denn das hilft nicht.
Wie "benutzt man launchd", um dies zu tun?
@kinokijuf, lass die berechtigte Einstellung fallen. Wenn dir jemand kostenlose Hilfe anbietet , darfst du das nicht kritisieren. Es ist fair, einmal einfach zu sagen, dass es nicht das ist, wonach Sie suchen, aber TJ Luomas Verteidigung (die Sie leider notwendig gemacht haben) ist mehr als ein Hinweis genug für Sie, die Klappe zu halten. Meine Güte.
Das Ausführen des Befehls dauert sehr lange. Mehr als 5 Minuten sicher!

Versuchen Sie diesen Befehl im Terminal:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Es scheint für mich zu funktionieren.

Es funktioniert nur für das Netzwerk, nicht für lokale Volumes.
Du hast Recht. Ich entschuldige mich für meine Verwirrung.
Dies ist der einzige wirkliche Fall, in dem ich sehen konnte, dass .DS_Stores nervig sind. Sie sind unter Mac OS standardmäßig ausgeblendet und sind entscheidend für das Speichern von Ansichtseinstellungen für einzelne Ordner
Aber ich möchte keine Ansichtseinstellungen speichern.

Ich hatte das gleiche Problem, und Lösungen, um diese lästigen Dateien auf der lokal bereitgestellten Festplatte zu verhindern, funktionierten bei mir nicht.

Am Ende habe ich eine geeignete Lösung gefunden, die darin besteht, diese Dateien regelmäßig nur auf der lokal gemounteten Festplatte zu suchen und zu entfernen. Ich habe einen Cronjob mit folgendem Inhalt hinzugefügt:

9 */1 * * * find -x ~ -path /Users/adietz/Library -prune -o -fstype local  -name .DS_Store -print -exec /bin/rm -f -- {} \; >> ~/.cron.log 2>&1

Hier ist, was es bedeutet:

  • 9 */1 * * *führt den Befehl alle 9 Minuten nach der vollen Stunde aus (also 10:09, 11:09, 12:09, ...)
  • find -x ... -fstype local(optional) Führen Sie die Suche nur auf dem lokal gemounteten Dateisystem durch und ignorieren Sie alle anderen gemounteten Laufwerke darunter~
  • ~der zu durchsuchende Ordner (Home-Ordner)
  • -path /Users/user/Library -prune -o(optional) Ausdruck, um den LibraryOrdner NICHT zu durchsuchen (was zu Eingabe-/Ausgabefehlern führen kann).
  • -name .DS_Storeder zu suchende Dateiname
  • -print(optional) ein gefundenes Vorkommen drucken
  • -exec /bin/rm -f -- {} \;entfernen Sie die Datei
  • >> ~/.cron.log 2>&1(optional) Fügt die Ausgabe einer Datei hinzu, damit Sie überprüfen können, ob sie funktioniert und wo die lästigen Dateien entfernt wurden

EDIT: funktioniert anscheinend nicht mehr in neueren macOS-Versionen

Ich habe ein effizienteres Skript erstellt (das kontinuierlich als Daemon ausgeführt werden soll), es führt eine Ausführung von findam Anfang aus, um bereits vorhandene Dateien zu löschen, und fängt neue Dateien in Echtzeit über fsevents ab. Sie werden also sofort nach ihrer Erstellung zerstört, und der Ressourcenverbrauch ist sehr gering. AFAIK ist dies der beste Weg, sie loszuwerden, ohne SIP zu deaktivieren.
Hier ist es – https://github.com/magicgoose/DS_Store-Kill

Dieser Vorschlag funktioniert nicht. Die Dateien werden trotzdem erstellt.
Das tut mir leid. Seitdem gab es mehrere macOS-Versionen, und ich habe dieses Skript nicht beibehalten, weil ich aufgehört habe, macOS als primäres Betriebssystem zu verwenden.