MacOS Catalina – Papierkorb will sofort löschen

Wer kennt es nicht?

Man möchte eine Datei in den Papierkorb verschieben – und bekommt eine Fehlermeldung, die darauf hinweist, dass – wenn man weiter macht – die betreffende Datei sofort gelöscht wird.

Wo ist der Papierkorb? Und warum funktioniert er nicht?

Gestern ging’s doch noch!

Zunächst wird man im Stammverzeichnis der Macintosh HD nach dem geschützten Systemordner „.Trashes“suchen müssen.

 

 

 

 

 

 

 

 

 

 

 

 

Ist der vorhanden, kann man aufatmen – hier geht’s weiter:

Konstruktionsbedingt ist der „Papierkorb“  ein Unterverzeichnis, das im Benutzerverzeichnis beim Anmelden des Benutzers angelegt wird. Wenn man sich auch versteckte Dateien anzeigen lässt, sollte im Normalfall im Benutzerverzeichnis ein Ordner mit angezeigtem Namen „Papierkorb“ existieren.

Wenn nicht, wird dieses angelegt, sobald man eine Datei in den Papierkorb verschieben möchte. Klickt man auf „Informationen“ erfährt man, dass dieses Verzeichnis nur für den Benutzer als „Papierkorb“ angezeigt wird, der interne, wahre Name lautet: .Trash. Mit einem Punkt vorn ist es als „versteckt“ gekennzeichnet.

Soweit, so gut.

Manchmal aber – und ich kann nicht herausfinden, wieso – wird statt des Verzeichnisses eine Datei angelegt. Diese heißt auch .Trash.

Und das ist dann der Grund, warum es nicht gelingt, Dateien im Papierkorb zwischenzulagern, bis man sie endgültig löschen möchte.

Die Datei .Trash zeigt sich da als störrisch.

Lösung des Problems: nachschauen, ob .Trash ein Verzeichnis oder eine Datei ist – Datei löschen, Papierkorb funktioniert wieder.

Das schreit geradezu nach einer Automatisierung – beispielsweise einer Apple-Script-Aktion.

Also etwa so:

try    

set theFile to "~/.Trash"   
set msg to "Keine Datei ~/.Trash"       

tell application "System Events"           

if exists file theFile then do shell script "rm '~/.Trash'"           

say "Der Fehler ist behoben"            

end if    

end tell   

# sollte das Verzeichnis Papierkorb existieren, käme eine kryptische Fehlermeldung, die wir hier abfangen       

display dialog msg on error  
say "mit dem Papierkorb kannst Du arbeiten"

end try

Ich kann euch aber beruhigen: selbst, wenn man alles schön zusammen klickt, funktioniert es doch nicht immer zuverlässig. Speziell, wenn man es bei der Benutzeranmeldung als „Anmeldeobjekt“ ausführen lässt, wird das Apple-Script enttäuschen.

 

Warum also nicht mal ein Shellscript verwenden? Zumal das Löschen der störrischen Datei auch unter Apple-Script nur funktioniert, wenn man „rm“ in der Anweisung „do shell script“ bemüht.

#! /bin/zsh 
# erstmal das Datum und die Uhrzeit in eine Variable, auf die später zurückgegriffen werden kann 

d=$(date +%d.%m.%Y\ %H:%M) 

# erste Abfrage: ist Trash ein Verzeichnis? 
# wenn ja, schreib Datum und Uhrzeit und die Ansage in die Log-Datei

if [ -d ~/.Trash ] ; then echo $d 'Der Papierkorb scheint funktionstüchtig' | tee -a checkTrash.log 

# zweite Abfrage, wenn erste negativ: ist Trash eine Datei? 
# wenn ja, schreib Datum, Uhrzeit und Ansage in die Log-Datei und lösche Trash 

elif [ -f ~/.Trash ] ; then echo $d '.Trash ist eine Datei und wird gelöscht!' | tee -a checkTrash.log && rm -f ~/.Trash 

# wenn Trash weder als Datei noch Verzeichnis vorhanden, wundere dich und 
# schreib Datum und Uhrzeit und Meldung in die Log-Datei 

else echo $d 'Kein .Trash weit und breit' | tee -a checkTrash.log 

fi 

exit

So.

Unter einprägsamem Namen („irgendwas“.sh – das sh deutet schon an, dass es ein Shellscript sei) abgespeichert, anschließend ausführbar machen (chmod u+x irgendwas.sh) und in der Systemsteuerung unter Benutzer&Gruppen – Anmeldeobjekte registrieren und dann sollte es seine Arbeit jedes mal bei Benutzeranmeldung tun.

Wenn man im Terminal unter EinstellungenProfileShell die Option „Shell“ „schließen, wenn kein Fehler aufgetreten ist“ ausgewählt hat, wird man beim Anmelden einmal die Shell kurz aufblitzen sehen und dann nicht weiter damit belästigt. Man kann gelegentlich in die Logdatei schauen und sich freuen, wie oft das Shellscript dem Papierkorb auf die Beine geholfen hat….

Alternativ könnte das Shellscript auch so aussehen:

#!/bin/zsh 
#Variable Datum und Uhrzeit erzeugen 

d=$(date +%d.%m.%Y\ %H:%M) 

for datei in ~/.Trash 

   do [ -f $datei ] && echo $d "$datei: ist eine reguläre Datei und wird gelöscht" | tee -a checkTrash.log && rm -f ~/.Trash 

        [ -d $datei ] && echo $d "$datei: ist ein Verzeichnis - der Papierkorb funktioniert" | tee -a checkTrash.log 

        [ ! -e $datei ] && echo $d "$datei: existiert nicht!" | tee -a checkTrash.log 

   done

 

 

MacOS und der Papierkorb – Objekte „klemmen“ im Papierkorb

Nach einer Renovierung einiger Einstellungsdateien, die nötig war, um Apple-Mail das Starten mit sekundenlangem Beachballing abzugewöhnen, wollten sich einige der gelöschten Dateien nicht aus dem Papierkorb verabschieden.
Apple selbst hat zu diesem Problem eine relativ akkurate Anleitung veröffentlicht.

Die aber in meinem Fall das Problem überhaupt nicht lösen wollte.

Also musste ich – mal wieder – tief im Maschinenraum verschwinden und sehr händisch die Lösung erzwingen. Einfach das Terminal bemühen und dort Dateien löschen, funktioniert nicht: hartnäckig erscheint beim Versuch die Meldung: „operation not permitted“ – da sind wir konsequent…

Also anders:

  1. Man starte den Rechner von der Wiederherstellungspartition (beim Hochfahren CMD-R halten, bis das Apple-Logo erscheint).
  2. Das Festplattendienstprogramm aufrufen und die Partition „MacOS-HD-Daten“ aktivieren.
  3. Das Festplattendienstprogramm kann nun beendet werden.
  4. Aus dem Reiter „Dienstprogramme“ kann jetzt das Terminal gestartet werden.
  5. Man navigiere dorthin, wo der klemmende Ordner „.Trash“ residiert, also „Volumes/Users/<Benutzer>/.Trash“
  6. Dort mit ls -a auflisten lassen, was so alles im verunglückten Papierkorb liegt.
  7. Jetzt diese Objekte löschen, wobei Verzeichnissen mit rmdir und Dateien mit rm Beine gemacht wird – und Verzeichnisse kann man nur löschen, wenn sie leer sind, daher ist etwas Geduld und Beinarbeit erforderlich.
  8. Erst wenn der Papierkorb komplett leergeräumt wurde, kann man wieder das normale System starten und sich freuen, dass dieser wieder seine normalen Dienste anbietet.

Wohl dem, der sich mit dem Terminal auskennt!

Interessanterweise startet das Terminal in der Wiederherstellungskonsole mit der Bourne-again-Shell (BASH), also nicht wundern, wenn das Ganze anders aussieht, als man im normalen Betrieb gewöhnt ist, denn dort ist neuerdings die Z-Shell (ZSH) voreingestellt.