Ok, das hat mich dazu gebracht, meinen Kopf zu schlagen. Um in OS X einen festen Link in einem Terminalfenster zu erstellen, müssen Sie dies einfach eingeben können ...
ln a.txt b.txt
... und dies sollte eine harte Verbindung von a.txt
zu schaffen b.txt
. Einfach und unkompliziert.
Wenn ich diese Anweisung ausführe, wird sie im Finder b.txt
angezeigt a.txt
. a.txt
Hat aber auch nach der Bearbeitung mit TextEdit b.txt
noch die Originaldaten! Mit anderen Worten, es sieht so aus, als hätte es eine Kopie ausgeführt, keinen Link, weder hart noch auf andere Weise.
Macht für mich keinen verdammten Sinn! Kann mir jemand sagen, was ich hier falsch mache?
osx-snow-leopard
hardlink
Mark A. Donohoe
quelle
quelle
Antworten:
Der Grund für dieses Verhalten ist recht einfach und hängt davon ab, wie Dateien in den meisten Mac OS X-Anwendungen gespeichert werden: Atomisch.
Was passiert ist, dass eine Kopie der Datei in einen temporären Staging-Bereich geschrieben und dann verschoben wird, um die Originaldatei zu ersetzen.
Dies unterbricht ganz natürlich harte Verbindungen.
quelle
vi
- es reicht nicht aus, Schreibberechtigungen für die Datei festzulegen, Sie benötigen auch den Ordner!Wenn angezeigt wird, lesen Sie diesen Eintrag vom Superuser , dass dies eine Funktion von TextEdit ist. Die normale Methode zum Erstellen von Hardlinks ist also korrekt, aber TextEdit verhält sich so, dass dies nicht funktioniert. (Der Link besagt, dass eine neue Datei erstellt und nach dem Bearbeiten über die alte Datei verschoben wird.)
quelle
Beachten Sie, dass Emacs standardmäßig (in allen Unixen) auch dieses (verblüffende!) Verhalten aufweist, obwohl die Ursache etwas anders ist (dies ist die "sichere" Vorgehensweise in Situationen mit sehr wenig Speicherplatz). Es kann jedoch auf verschiedene Arten konfiguriert werden.
Siehe die Dokumentation für
make-backup-files
(VerwendungC-h v make-backup-files
) und fürbackup-by-coping
backup-by-coping-when-linked
backup-by-coping-when-mismatch
backup-by-coping-when-privileged-mismatch
quelle