Archiv der Kategorie: Shell

Verzeichnisse vergleichen mit OS X Bordmitteln

Wenn man in der Verlegenheit ist, zwei Verzeichnisse vergleichen zu müssen, z.B. weil ein Verzeichnis ein altes Backup einer Website und ein weiteres ein aktueller Download derselben Website in gehacktem Zustand (keine Sorge, ist alles wieder sauber, und es bestand zu keiner Zeit Gefahr für meine Leser!), helfen einem OS X Bordmittel:

diff /pfad/zum/einen/verzeichnis /pfad/zum/anderen/verzeichnis

liefert eine textuelle Ausgabe aller Unterschiede und

opendiff /pfad/zum/einen/verzeichnis /pfad/zum/anderen/verzeichnis

macht das selbe hübsch grafisch.

Quelle und mehr Beschreibung bei Mac OS X Hints.

Bei „diff“ gibt’s noch eine Menge netter Optionen, z.B. „-r“ für rekursives Vergleichen ganzer Verzeichnisbäume oder „-q“ für die Reduzierung der Ausgabe auf eine Zeile pro gefundener unterschiedlicher Datei. „man diff“ hilft, wie immer.

Wie man ein Medium auswirft, obwohl Eject nicht funktioniert

Eject
Lästige Meldung beim Auswurfversuch

Nach acht Monaten iMac und OS X habe ich auch schon Bekanntschaft mit diversen Problemchen gemacht. Hier eines davon Рmit entsprechender L̦sung:

Wenn der Mac die CD/DVD/Festplatte nicht mehr auswerfen will und der Finder den Versuch nur noch mit ‚Das Medium „X“ wird gerade verwendet und kann nicht ausgeworfen werden. Beenden Sie die Programme und versuchen Sie es erneut.‘ quittiert, steht man erstmal ratlos da, weil OS X nicht mitteilt, wer den bitteschön da auf welche Datei zugreift. Die Eject-Taste zu drücken bringt gar keine Fehlermeldung und selbst per Kommandozeile gibt es nichts aussagekräftiges

$ diskutil eject /Volumes/X/
Volume failed to eject

Dann versucht man wahrscheinlich ein Programm nach dem anderen zu beenden und zwischendurch immer wieder mal zu probieren, ob es jetzt endlich klappt. So ging es mir jedenfalls. Leider ohne Erfolg und ich fühlte mich recht an Windows erinnert. Enttäuschend. Bis mir einfiel, dass ich ja vor einem echten UNIX-System sitze und es daher wahrscheinlich einen Weg gibt – nur kennen müsste man ihn. Google fördert die Lösung im macuser.de-Forum zutage:

$ lsof | grep X

Einzugeben auf Shell-Ebene. Lsof („LiSt Open Files“ – siehe man lsof) listet Informationen über alle offenen Dateien nach Prozessen sortiert auf. In der ersten Spalte steht der Name des Prozesses, den man dann beenden sollte oder sonstwie dazu bringen, die Datei wieder loszulassen.

Bei mir war es übrigens der Finder selbst, der unerklärlicherweise doch noch eine Datei festhielt, obwohl diese in keinem Finder-Fenster mehr sichtbar war. Und wie beendet man den Finder? Antwort: ALT-Rechtsklick auf das Icon des Finders im Dock läßt den sonst versteckten Kontextmenü-Eintrag „Neustart“ erscheinen. Nach dem Neustart des Finders (nicht des ganzen Systems) ließ sich die CD auswerfen.

Notiz an Apple: Bitte die Fehlermeldung um die Info ergänzen, WER hier WEN noch geöffnet hat!

Update 2009-08-28: Apple hat meine Bitte schon erhört: Snow Leopard improves the reliability of ejecting discs and external drives. Sometimes when an application or process is using the files on a drive, Mac OS X prevents you from ejecting it, but you might not know why. In Snow Leopard, you should see fewer of those situations, and when you do get them, you’ll be told exactly what is using the drive, so you can quit it and eject the drive properly.