Über störrische Mülleimer und die Genialität Apples

Ihr kennt sicher diese Situation, in der ihr eine Datei löschen wollt, diese aber laut der aufploppenden Fehlermeldung noch von irgendeinem Programm verwendet wird. Ihr habt natürlich keine Ahnung von welchem Programm die Rede ist und seid euch sicher, dass ihr die einzige infrage kommende App schon vor Stunden geschlossen habt. Was also tun? Neustarten? Pah, unter Windows war das noch eine praktikable Lösung, aber unter Mac OS? Wie oft startet man einen Mac schon neu? Alle zwei Wochen? Soll diese Datei jetzt zwei Wochen die Festplatte okkupieren? Das kann doch keine Lösung sein.

In vielen Situationen ist es interessant zu erfahren, welches Programm die unlöschbare Datei denn noch nutzt. Dies geht bei unixoiden Systemen recht einfach mit lsof:

mac:~ user$ lsof '/Path/to/file'

Lsof listet den Prozess auf, der diese Datei nutzt. Beendet man den Prozess, sollte auch die Datei löschbar sein.

Ein anderes Gräuel ist ein nicht leerbarer Papierkorb. Der Papierkorb ist nämlich nicht anderes als ein Ordner:

~/.Trash

Boom, mehr nicht. Und da das Macintosh-Dateisystem HFS auch Dateiverschiebungen bei gerade genutzten Dateien erlaubt, kann es durchaus sein, dass man eine Datei in den Papierkorb bekommt, dieser dann aber nicht mehr leerbar ist.

Wenn man einfach keinen Bock mehr hat, kann man so gut wie alle Probleme mit der Macht des Root-Users lösen. Der darf alles übergeordnet über allem anderen. Doch wie nutzt man am einfachsten und sichersten den Root-User? Richtig, Mac OS X ist Unix. Per sudo also. Um Dateien mit Root-Macht in den Papierkorb zu verschieben reicht also ein einfaches

sudo mv /Path/to/file ~/.Trash/

Das übermächtige Leeren des Mülleimers erfolgt mit

sudo rm -rf ~/.Trash/*

Doch Vorsicht, angewandt auf die falschen Pfade können diese Befehle euer System schlimm zurichten. Aber wie automatisieren wir das ganze jetzt?

Apple gibt dem User für diese Zwecke zwei geniale Tools an die Hand: AppleScript und den Automator. Mit AppleScript-Editor und Automator kann man schnell und einfach kleine Arbeitsabläufe in eine .app-Datei packen, die einem fortan den Alltag erleichtert.

Um Dateien schnell und einfach mit Root-Rechten in den Papierkorb zu verschieben, öffnen wir zunächst den Automator und wählen dort die Application-Option:

[Bild depubliziert.]

In der Auswahl links könnt ihr nun nach „Run Shell Script“ suchen und das Ergebnis in den Ablauf ziehen. In dieses Panel-Ding muss nun ein Script eingetragen werden. So sieht es bei mir aus:

[Bild depubliziert.]

Hier noch einmal das Script zum Guttenbergen (oh Gott, wie schlecht…):

for f in "$@" do /usr/bin/sudo /bin/mv "$f" /Users/[EuerUsername]/.Trash/ done

Nach dem Speichern ist dieses Script fast einsatzbreit. Fast. Denn Dinge mit Root-Rechen verschieben kann euer Benutzer noch nicht ohne Weiteres. Das Programm würde beim Ausführen auf eine Passworteingabe stoßen und nicht mehr weiterlaufen. Doch dazu unten mehr.

Zunächst geht es um das andere Programm: Jenes nämlich, das euch den Müll (~/.Trash) nach unten (löschen) bringt, ohne zu quengeln. Öffnet dazu den AppleScript-Editor, wählt eingangs „Application“ (ähnlich wie schon im Automator) und fügt folgenden Code ein:

do shell script "/usr/bin/sudo /bin/rm -rf /Users/[EuerUsername]/.Trash/*"

…vergesst nicht, [EuerUsername] mit eurem Username zu ersetzen. :D

Auch hier speichern wie das Programm. Fertig. Wieder nur fast. Wie lösen wir Passwort-Sache? Ganz einfach: Mac OS X ist immer noch Unix. Also mit Sudoers.

Öffnet zunächst ein Terminal-Fenster und gebt folgenden Befehl ein:

mac:~ user$ sudo visudo

Dies öffnet die sogenannte „Sudoers“-Datei, in der festgelegt ist wie sudo genutzt werden kann. Um den Befehl auszuführen müsst ihr wahrscheinlich euer Account-Passwort eingeben.

In Visudo bewegt ihr euch ans Ende des Dokuments. Dort tippt ihr auf [i], um den Editiermodus zu öffnen. Fügt nun an das Dokument folgende zwei Zeilen an:

[EuerUsername] ALL=(ALL) NOPASSWD: /bin/rm /Users/[EuerUsername]/.Trash/* [EuerUsername] ALL=(ALL) NOPASSWD: /bin/rm -rf /Users/[EuerUsername]/.Trash/*

Mit [esc] gelangt man aus dem Editiermodus zurück in den Befehlsmodus. Dort gebt ihr *:wq *ein, um die Sudoers-Datei zu speichern.

Die beiden erstellen Programme sollten nun problemlos funktionieren. Testet das mal. Wenn alles glatt läuft, könnt ihr sie (und das ist auch ziemlich awesome) in die Toolbar des Finders ziehen:

[Bild depubliziert.]

Wie ich die Icons verändert habe? Ganz einfach, das kann man sich eh merken, ist eine nette Funktion. Icons verändern geht ganz einfach:

Zunächst braucht man die Icon-Datei. Icons bewahrt Mac OS X unter

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources

auf. Von dort einfach ein genehmes Bildchen suchen. Das Programm im Finder markieren und ⌘ + [I] drücken. Die Datei-Informationen öffnen sich. Das Icon kann man einfach auf das alte Icon ziehen. So einfach ist das. Yay!

[Bild depubliziert.]

Eine letzte Sache: Mich hat es genervt, dass sich für diese einfach Aufgabe ein Icon im Dock zeigte. Auch Dock-Icons lassen sich ganz einfach deaktivieren. Bei allen Programmen. Also merken:

Das entsprechende Programm im Finder markieren und mit rechts anklicken. Im Kontext-Menü „Paketinhalte anzeigen“ wählen. Programme unter Mac OS sind nämlich Ordner. Yay! In

Contents/info.plist

sind die Informationen zu dem Programm gespeichert. Dort kann man direkt unter

folgende Zeilen einfügen:

LSUIElement

Nach dem Speichern öffnet sich das Programm nicht mehr mit einem Dock-Icon.

…Und so einfach löscht ihr aus störrische Dateien. Ganz einfach und schnell… :D

(Und morgen folgt ein umfassender Artikel zur Telekom…)