Was sind 'Aliase' - technisch gesprochen

U

uwolf

Aktives Mitglied
Thread Starter
Dabei seit
26.09.2006
Beiträge
883
Reaktionspunkte
195
Hallo.

Unter OSX kann ich mit Hilfe des Finders einen Alias auf eine andere Datei anlegen. Ich dachte zuerst das wäre nichts weiter als ein symbolischer Link, ist ja ein Unix-Derivat darunter.

Schaut man den Alias aber mit ls -l an, so ist er eine normale Datei mit 0 Byte Größe. Ein less zeigt konsequenterweise nichts an.

Also, was ist den nun ein Alias ? Vielleicht ein Bestandteil des verwendeten Dateisystems, mit dem aber ls nichts anfangen kann ?

Würde mich interessieren.

Ach ja, die Antwort ist vielleicht in dem Buch 'Mac OS X Internals: A Systems Approach, by Amit Singh
Kennt das jemand ?


Gruß
Uwe
 
Ohne wirklich eine Antwort zu haben:
Diese Aliase gab es schon im klassischen Mac OS. Daher vermute ich ein Feature des HFS-Dateisystems. :)
 
Verknüpfung?
 
Das dürfte eine Datei sein in der steht, dass es eine Verknüpfung auf eine andere Datei ist.

Es ist (leider?) kein symbolischer Link (so einen kann man IMHO nicht über das GUI erzeugen) sondern eben eine Stufe weniger.

Einen symb.link kann man ja auch benutzen um eine Datei zu öffnen (also in einem Programm über Ablage-öffnen oder in einem Setting eine Datei wählen) Für das Programm ist es dann so, als hätte man die originale Datei gewählt und nicht einen link.

Bei diesen Verknüpfungen ist das IMHO anders. Man kann sie im Finder nutzen um per Doppelklick die Datei oder das Programm zu öffnen. Aber man kann sie wohl nicht verwenden, um die mit ihr verknüpfte Datei über "Ablage - öffnen" zu öffnen etc. (wobei ich letzteres jetzt gerade nicht probieren kann - bin am Windows-Rechner :) - da geht es definitiv nicht)
 
Unter (T)UNIX sind symlinks ja durchaus echte inodes, wenn auch keine Datei im klassischen Sinne.

Beim Filesystem des MAC OS gehört ja zu jeder Datei auch ein Kontext-Bereich in dem Zusatzinformationen liegen ( etwa das Vorgabeprogramm zum öffnen der Datei,...). Zu diesem bereich hat der Benutzer direkt keinen Zugrif. es macht also durchaus Sinn Dateien mit 0 Byte zu erstellen um Information dazu imKontextbereich abzulegen. Sprich: hat zwar 0-Byte enthält aber trotzdem Info ;)
 
Prinzipiell gibt es zwei Sorten von links, softlinks und hardlinks.
Dabei zeigt der Soflink auf einen Pfad, soll heissen, verschiebt man die Zieldatei, funktioniert der softlink nicht mehr. Ein Hardlink hingegen zeigt auf die Inode der Zieldatei. Beim verschieben dieser (der Zieldatei) bleibt der hardlink intakt.

In wie fern das nun auch exakt auf HFS+ zutrifft, kann ich nicht sagen. Unter FS wie UFS/UFS2, ext,... ist dies so wie beschrieben.
 
Alias != BSD symbolic link
Alias != BSD hard link

In HFS und HFS+ haben alle Dateien einen Datenteil (data fork) und einen Metadatenteil (resource fork). Der Metadatenteil lässt sich normalerweise mit einem ls nicht anzeigen. Man muss ihn sich geziehlt anzeigen lassen, z.B. mit ls -l <datei>/rsrc. Den Inhalt kann man sich auch mit den üblichen Tools anzeigen lassen: cat <datei>/rsrc, strings <datei>/rsrc oder hexdump <datei>/rsrc. Dann siehst Du, dass in einem Alias alle relevanten Informationen nur im Metadatenteil gespeichert sind.

Mir persönlich wäre es lieber wenn ein Alias == BSD symbolic link. Denn durch die jetzige Situation, kann man Aliase in der Shell nicht nutzen und symbolische Links im Finder nicht nutzen.

Pingu
 
Zuletzt bearbeitet:
Wie schon geschrieben, sind Alias Dateien eben Dateien (keine Links!), die es so schon unter System 7 gab. Ich kann mir vorstellen, dass Alias Dateien bald mal "deprecated" werden und dann irgendwann komplett gegen symlinks ausgetauscht werden.

Alex
 
Wie sich das mit Softlinks, Hardlinks und Aliasen genau verhält, kann man übrigens hier nachlesen:

http://forums.macosxhints.com/showpost.php?p=257462&postcount=23

Damit ist zwar noch nicht wirklich geklärt, was Aliase technisch sind, aber es ist jedenfalls so, dass die Datei nur scheinbar 0KB hat, die eigentlichen Infos stehen im Ressource Fork.

Edit:Sorry, viel zu langsam, ich hätte den Thread zwischendurch mal aktualisieren sollen :)
 
...

Hallo uwolf,

soweit ich das verstanden habe, ist der Alias ein Finder bzw. OS eigenes "Ding".
Hat mit dem Filesystem nur am Rande zu tun, weil dieses eben Resourceforks unterstützt.
Der Alias verweist auf eine File-ID eine Nummer die jeder Datei zugewiesen wird. Darum kann man Ziel und Alias beliebig umbenennen und verschieben.
Aufgelöst und Aktualisiert wird der Alias durch den Alias-Manager.

Der kann noch etwas mehr. Zeigt der Alias auf eine Datei in einem DiskImage, mountet der Alias-Manager das DiskImage für Dich oder einen Server oder fordert Dich auf eine bestimmtes Volume einzulegen etc.

... dass Alias Dateien bald mal "deprecated" ...
Warum? Der Alias funktioniert doch am Besten von allen...

Edit: Link vergessen http://developer.apple.com/documentation/mac/Files/Files-342.html#HEADING342-0

Gruß Andi
 
Andi schrieb:
Warum? Der Alias funktioniert doch am Besten von allen...

aliase gehen halt im terminal nicht, im gegensatz zum symlink ;)
 
...

Hallo oneOeight,

aliase gehen halt im terminal nicht, im gegensatz zum symlink

Punkt für Dich ;)

Ich habe das gefunden. Würde das das Problem lösen und wenn ja - wie genau? :rolleyes:

Gruß Andi
 
Aliasse haben dafür ein paar echt starke Eigenschaften.
z.B. werden die Zieldateien auch dann noch gefunden, wenn man sie verschiebt oder umbenennt.
 
maceis schrieb:
Aliasse haben dafür ein paar echt starke Eigenschaften.
z.B. werden die Zieldateien auch dann noch gefunden, wenn man sie verschiebt oder umbenennt.

Aber dass muss ein Programm (OS z.B.) machen, das macht nicht das Dateisystem

Alex
 
Sowohl die Tatsache, dass das Terminal ein Alias nicht erkennt, sowie jene, dass "ein Programm" die Infos umschreibt, spricht doch dafür das es sich hierbei um ein Finderfeature handelt oder nicht?
 
Ein Alias ist (wie bereits erwähnt) eine Datei. Die Linkinformationen befinden sich im resource fork (u.a. Pfad und CNID des Zieles). Unterstützt werden Aliase nur von HFS und HFS+. Anlegen und bearbeiten ist von der Unixebene aus nicht möglich. Nur Cocoa und Carbonprogramme können mit Aliasen umgehen.

Grüße,
Flo
 
...

Hallo lengsel,

mit osascript kann man einen Finderalias anlegen. Auch das Beispiel in meinem Link löst den Alias auf. Leider gelingt es mir nicht das Ergebnis direkt an z.B cd weiterzugeben...

In einem shellscript könnte man es aber verwenden - wenn man wollte.

Gruß Andi
 
Natürlich kann man über "Umwege" auch aus der Kommandozeile heraus mit Aliasen arbeiten. Das war auch nur eine prinzipielle Einordnung, gemäß der Ausgangsfrage.

Grüße,
Flo
 
maceis schrieb:

Also, technisch gesehen kann das nicht der Alias. Der speichert auch nur, wo das original liegt.

Ich denke, man könnte durchaus eine solche Funktionalität auch für einen symlink basteln.

Alex
 
Zurück
Oben Unten