Egal wie ich versuche, einen symbolischen Link zu erstellen, OS X spielt nicht mit und erstellt stattdessen einen Alias. Ich habe mehrere Tools ausprobiert und auch über das Terminal mit dem ln
Befehl.
Ich bin auf einer Neuinstallation und die Verwendung des ln
Befehls hat vorher gut funktioniert. Irgendeine Ahnung, was los ist?
Danke Will
Versuchen wir ein paar Experimente und schauen uns ein paar Dinge an.
Wechseln Sie in einem Terminal-Emulator, z. B. Terminal.app in /Applications/Utilities, in Ihr Home-Verzeichnis ( cd ~
) und erstellen Sie ein Verzeichnis ( mkdir [directory]
).
Stellen Sie sicher, dass Sie in das Verzeichnis gehen, das wir gerade erstellt haben ( cd [directory]
).
cd ~
mkdir directory
cd directory
Danach erstellen Sie eine Datei; Eine einfache Textdatei reicht aus:
echo "This is a simple text file" > originalfile.txt
ls -l@
Versuchen Sie nun, einen festen Link wie diesen zu erstellen:
/usr/bin/ln originalfile.txt hardlink.txt
Versuchen Sie dann, einen symbolischen Link wie diesen zu erstellen:
/usr/bin/ln -s originalfile.txt symboliclink.txt
Öffnen Sie nun das Verzeichnis im Finder mit open .
und erstellen Sie einen Alias.
In dem Terminal-Emulator, den Sie zuvor geöffnet haben, ls
sollte uns ein anderer Folgendes liefern:
Testarossa:test tonyw$ ls -l@
total 2528
-rw-r--r-- 2 tonyw staff 19 25 Jan 15:51 file.txt
-rw-r--r--@ 1 tonyw staff 426048 25 Jan 15:52 file.txt alias
com.apple.FinderInfo 32
com.apple.ResourceFork 850686
-rw-r--r-- 2 tonyw staff 19 25 Jan 15:51 hard.txt
lrwxr-xr-x 1 tonyw staff 8 25 Jan 15:53 symbolic.txt -> file.txt
Die Finder-GUI sollte auch dazu führen:
Bitte beachten Sie, dass die Finder-GUI einen symbolischen Link als Alias anzeigt.
Ein symbolischer Link ist nicht dasselbe wie ein Alias. Ein echter Alias hat erweiterte Attribute als ein symbolischer Link.
In der Finder-GUI gibt es keine Möglichkeit zu sagen, dass ein fester Link etwas anderes als eine Datei ist.
Bei allen symbolischen Links gibt es am linken Ende der Attribute ein „l“, und der ls
Befehl sagt uns, wohin er zeigt.
Wenn Sie dies versuchen, was genau bekommen Sie?
originalfile.txt
Sie eine Datei mit einem festen Link erstellt, und als Sie erstellt hardlink.txt
haben, war das ein zweiter fester Link zu derselben Datei. Es gibt keine Möglichkeit (im Finder oder an der Eingabeaufforderung oder anderswo), festzustellen, welcher Name das Original und welcher der "Link" war. Sie sind beide Links. Jede Datei hat mindestens einen festen Link.OS X kann beides erstellen, aber auf unterschiedliche Weise. Da Sie das Wort Alias zu verwenden scheinen, handelt es sich um eine Datei- (oder Verzeichnis-) Verknüpfung, die im Finder für alles erstellt wurde, was Sie dort aufgelistet sehen, während ein Symlink (symbolischer Link) in einer Shell-Instanz erstellt werden kann, die von Ihrer Terminal-App gestartet wird mit dem Befehl:
ln -s <source file path><target file path>
Ein Symlink kann nicht direkt in einem Finder-Fenster erstellt werden (indirekt vielleicht durch Aufrufen eines AppleScript-Skripts aus einem Shell-Skript oder umgekehrt).
Aber hier gibt es eine Mehrdeutigkeit, weil es eine andere Art von Alias gibt, nämlich einen benutzerdefinierten Spitznamen, den Sie einer Folge von Shell-Befehlen geben können, wenn Sie eine Terminalsitzung öffnen. Zum Beispiel in einem Bash-Shell-Fenster:
$ alias listall=ls -al`
Dies definiert einen Spitznamen listall
für den Befehl ls -al
, alle Dateien im aktuellen Verzeichnis aufzulisten. In diesem Zusammenhang beschreibt 'alias' Befehls-Spitznamen - alias
eigentlich ist es ein in die Bash-Shell eingebauter Befehl zum Erstellen solcher Spitznamen.
Ich bin kein Experte für das OS X-Dateisystem, nur ein Benutzer und Skriptersteller, aber nach dem, was ich gelesen habe, liegt der Grund, warum ein Finder-Alias in OS X nicht bricht, darin, dass er eine eindeutige Seriennummer für seine Zieldatei (eine sogenannte Inode-Nummer, die für jede Datei und jedes Verzeichnis existiert), die unabhängig von ihrem Dateipfad ist. Das bedeutet, dass, wenn Sie das Ziel in ein anderes Verzeichnis verschieben, der Alias immer noch darauf verweist, während ein Symlink brechen würde, weil er den Dateipfad des Ziels verwendet.
Sie können im Finder keine Symlinks (symbolische Links) erstellen, sondern nur Aliase. Sie können jedoch AppleScript verwenden, um symbolische Links zu erstellen, wenn Sie dies letztendlich benötigen.
Um zu verstehen, warum das so ist, müssen wir den Unterschied zwischen Aliasen, Symlinks und Hardlinks verstehen:
Aliase sind Finder- Konventionen; Das heißt, sie funktionieren nur im Finder und nicht in der UNIX-Umgebung von OS X. Sie sind kleine Datendateien und Ihre Shell (bash, sh, zsh usw.) weiß nicht, wie sie sie interpretieren soll.
Symbolische Links (kurz Symlinks) sind Verknüpfungen , die Teil des *NIX-Dateisystems sind. Finder behandelt sie als Quasi-Aliase, Sie können sie sehen und verwenden, aber sie enthalten keine der zusätzlichen Metadaten, die Finder-Aliase enthalten.
Feste Links sind den Aliasnamen im Finder ziemlich ähnlich, außer dass sie nicht den Pfad zur Originaldatei enthalten. Feste Links erscheinen als normale Dateien im Finder; Sie werden nicht merken, dass Sie nicht mit der Originaldatei arbeiten, sondern mit der verknüpften. Harte Links werden ln
standardmäßig erstellt, wenn Sie das -s
Flag weglassen.
Für weitere Details habe ich in dieser Antwort ausführlicher darüber geschrieben .
Das Fazit hier ist, dass Sie Symlinks und Hardlinks nur in Terminal (UNIX-Umgebung von OS X) erstellen, aber global verwenden können. Sie können Aliase nur im Finder erstellen und verwenden. (IMO) Aus diesem Grund halte ich mich von Aliasnamen fern und verwende fast ausschließlich Symlinks.
Ich hatte dieses Problem. Habe versucht den Link in einem anderen Ordner zu speichern. Mit ein bisschen Trial and Error hat es geklappt. Keine Ahnung warum.
Matthias Riegler
Benutzer68523
ln -s <source> <dest>
Tools ausprobiert wie: seiryu.home.comcast.net/~seiryu/symboliclinker.htmlmmmmmm
Benutzer68523
ithos67
ln
dies wirklich der Fall istln
. Führen Sie im Terminal aus,type ln
um sicherzustellen, dass es/bin/ln
.ThomasW