63 Stimmen

Wie lautet der Unix-Befehl zum Erstellen eines Hardlinks zu einem Verzeichnis in OS X?

Wie erstellt man in OS X einen Hardlink (im Gegensatz zu einem Symlink oder einem Mac OS-Alias), der auf ein Verzeichnis verweist? Ich kenne bereits den Befehl "ln target destination", aber der funktioniert nur, wenn das Ziel eine Datei ist. Ich weiß, dass Mac OS im Gegensatz zu anderen Unix-Umgebungen Hardlinks zu Ordnern zulässt (dies wird z. B. für Time Machine verwendet), aber ich weiß nicht, wie ich es selbst machen kann.

1voto

zainengineer Punkte 11921

Unter Linux können Sie bind mount verwenden, um eine feste Verknüpfung von Verzeichnissen zu simulieren. Nicht sicher bei OSX

sudo mount --bind /some/existing_real_contents /else/dummy_but_existing_directory
sudo umount /else/dummy_but_existing_directory

1voto

techiejohn Punkte 13

Dies kann auch mit dem eingebauten Perl (vom Terminal aus) gemacht werden, ohne etwas zu kompilieren. Mein spezieller Anwendungsfall ist Google Drive (das keine symbolischen Links unterstützt), daher spiegeln die folgenden Beispiele diesen Anwendungsfall wider.

So verknüpfen Sie Ihren Ordner "Dokumente" mit Google Drive, damit er synchronisiert wird:

perl -e 'link "/Users/me/Documents", "/Users/me/Google Drive/Documents"'

So entfernen Sie den Link zu Ihrem "Dokumente"-Ordner aus Google Drive:

sudo perl -U -e 'unlink "/Users/me/Google Drive/Documents"'

Zum Entkoppeln benötigen Sie "Root" (siehe "unlink" perldoc).

-1voto

Penfold Punkte 2438

Die kurze Antwort lautet: Das geht nicht. :) (außer vielleicht als Root, dann wäre es genauer zu sagen, dass man es nicht sollte.)

Unixe erlauben nur eine bestimmte Anzahl von Verweisen auf Verzeichnisse - ".." aus allen seinen Unterverzeichnissen und "." aus sich selbst. Alles andere ist möglicherweise ein Rezept für einen sehr verwirrenden Verzeichnisbaum. Dies ist/war offensichtlich eine Designentscheidung von Ken Thompson.

(Abgesehen davon, dass Apples Time Machine dies offenbar auch tut :) )

-1voto

Nuray Altin Punkte 1271

Falls es keinen Unterordner gibt, können Sie versuchen

ln ordner_pfad/* . * ziel_ordner

bei mir funktioniert es unter OSX 10.9

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X