Als ich mal wieder einen meiner USB-Sticks im Windwows-Explorer öffnete, war das Maß endgültig voll. Ich konnte den Anblick von .DS_Store, .Trashes, .Spotlight-V100, .fseventsd, .TemporaryItems nicht mehr ertragen. Diese “Fremdkörper” sind mir von jeher ein Dorn im Auge, zumindest auf Dateisystemen des jeweils anderen Betriebssystems. Das dieses nicht nur ein Spleen meinerseits ist, ergab eine kurze Google-Recherche nach diesen Dateinamen, das Ärgernis darüber ist offensichtlich weit verbreitet und wird schon seit x-Jahren diskutiert.Diverse Entwickler haben sich anscheinend im Laufe der Zeit mit Lösungen für die Beseitigung dieser Angelegenheit auseinander gesetzt. Aber eine All-inclusive-Lösung konnte ich nicht finden, schon gar nicht im OpenSource/Freeware Bereich. Und als passionierter Coder kam eine Kauflösung eines properitären Herstellers nicht in Frage. Also fing ich quick and dirty an, ein kleines bash-Script zu schreiben. Der Aufwand dafür sollte möglichst gering bleiben.
- Bash – Quellcode des ersten Entwurfs
#!/bin/bash
#set -x
dropList=".DS_Store ._* .Trashes .Spotlight-V100 .fseventsd"
for volume in /Volumes/*; do
if ! [ -L "$volume" ] && [ -d "$volume" ]; then
echo touching "$volume/.metadata_never_index"
touch "$volume/.metadata_never_index"
for drop in $dropList; do
if [ -e "$volume/$drop" ]; then
echo removing "$volume/$drop"...
sudo /bin/rm -rf "$volume/$drop"
fi;
done;
if ! [ -e "$volume/.Trashes" ]; then
sudo /bin/ln -sf "/.Trashes" "$volume/.Trashes"
fi;
fi;
done;
echo ""
echo Beliebige Taste um zum beenden.
read
# -eof-
Funktionserklärung
Das Script entfernt die o.g. Dateien/Ordner aller “echten” Verzeichnisse (keine SymLinks). Leider geht es anscheinend ganz ohne DotFiles nicht. Um Spotlight an der Indexierung zu hindern, ist es erforderlich eine Datei mit dem Namen “/.metadata_never_index” anzulegen, wenn es denn sein muss, damit sollte man leben können. Als nächstes kommt der /.Trashes Ordner dran. Nicht erst einmal ist es mir passiert, dass ich USB-Sticks weitergegeben habe, auf dem vermeintlich gelöschte Daten im .Trashes befunden haben. Ich will keine Papierkorb Funktion auf FAT/NTFS Dateisystemen. Daher legt das Script einen Symlink/ zu /.Trashes an. Das erfüllt zwar nicht den erhofften Zweck, nämlich den Papierkorb auf dem eigenen Mac zu verwenden, aber es wird auch kein .Trashes Ordner angelegt. Die Dateien werden (nach entsprechender Warnung) sofort entgültig gelöscht.

Dot-Files aufs Minimum reduzieren
Zwei Dot-Files bleiben zurück, bislang fand ich keinen Weg, auch diese zu entfernen.
/.Trashes
/.metadata_never_index
Aufgrund meines letzten Kenntnisstands sind diese beiden Dateien die letzten, die auf dem Volume zurückbleiben sollten um in Zukunft dem Mac frühzeitig mitzuteilen, sich hier zurückzuhalten.
Nachteile des Scripts
1.) Es werden stets alle gemounteten Verzeichnisse “durchgenudelt”
2.) Man muss das Script manuell starten
3.) Es werden auch Volumes mit HFS Dateisystem bearbeitet, was nicht gewünscht ist.
4.) All dieses würde eine individuelle Konfiguration erfordern.
Alternative Lösung wurde zur App
Es war klar, “quick and dirty” war nicht ausreichend, aber die Idee war geboren. Als möglicher Weg fielen mir die Ordneraktionen ein, wie sich herausstellte, das Mittel der Wahl. Aber wie geht das? Erst versuchte ich mich mit dem Automator, aber das war zu weit oben. Bei Automator Recherchen wurde auch immer wieder AppleScript genannt, also schaute ich mir das mal an. Kam mir ja erst sonderbar vor, musste mich erstmal komplett neu einlesen. Schliesslich kam ich doch schneller rein als gedacht, ich erkannte viele Parallelen zu Tcl/Tk, welches ich seit mehreren Jahrzehnten einsetze. Auch der AppleScript-Editor ist sehr komfortabel, liefert eine gute Codeunterstützung. Weiterhin gibt es massenhaft Dokumentationen und Beispiele zu AppleScript im Netz. Nach ca. 3-4 Tagen war die “all-inclusive” App fertig für den Einsatz. Ich stelle es gern als Package als Urbanware zur Verfügung. Die genaue Funktionsbeschreibung der App befindet sich hier.