OS X erstellt keine symbolischen Links, sondern Aliase

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 lnBefehl.

Ich bin auf einer Neuinstallation und die Verwendung des lnBefehls hat vorher gut funktioniert. Irgendeine Ahnung, was los ist?

Danke Will

Welchen Befehl hast du genau versucht?
@MatthieuRiegler Ich habe ln -s <source> <dest>Tools ausprobiert wie: seiryu.home.comcast.net/~seiryu/symboliclinker.html
ln kann nur Links erstellen, Alias ​​stammen nur von Apple-Tools - Woher wissen Sie, dass es sich um einen Alias ​​handelt?
@Mark Finder klassifiziert es als Alias ​​und wenn ich ls -la ausführe, nennt es es auch einen Alias.
Stellen Sie sicher, dass lndies wirklich der Fall ist ln. Führen Sie im Terminal aus, type lnum sicherzustellen, dass es /bin/ln.
Es gibt gute Antworten auf diese Frage auf Superuser: superuser.com/questions/24095/…

Antworten (4)

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, lssollte 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:

Die Finder-GUI mit der Originaldatei, einem Hardlink und einem symbolischen Link.

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 lsBefehl sagt uns, wohin er zeigt.

Wenn Sie dies versuchen, was genau bekommen Sie?

Also, um diese Idee huckepack zu tragen, können wir OSX/Finder irgendwie dazu zwingen, Symlinks als solche statt als Aliase umzubenennen?
... es gibt keine Möglichkeit zu sagen, dass ein fester Link etwas anderes als eine Datei ist. Das liegt daran, dass es keinen Unterschied gibt. Als Sie erstellt haben, haben originalfile.txtSie eine Datei mit einem festen Link erstellt, und als Sie erstellt hardlink.txthaben, 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 listallfür den Befehl ls -al, alle Dateien im aktuellen Verzeichnis aufzulisten. In diesem Zusammenhang beschreibt 'alias' Befehls-Spitznamen - aliaseigentlich 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 lnstandardmäßig erstellt, wenn Sie das -sFlag 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.