Frage zu Links (hard/symbolic) und Aliase

Dieses Thema im Forum "Mac OS - Unix & Terminal" wurde erstellt von Blain, 02.04.2008.

  1. Blain

    Blain Thread Starter Mitglied

    Beiträge:
    1.392
    Zustimmungen:
    37
    Mitglied seit:
    06.07.2006
    Hallo Leute,

    also ein Alias ist doch das gleiche wie ein Symbolic Link, nur dass ich beim Alias in der Shell nur an den 0 Bytes der Größe erkenne dass es sich um einen handelt. Ausserdem hat der Alias doch den Nachteil dass ich nur in der Aqua-Oberfläche rausfinden kann wo das original liegt (rechtsklick --> Original anzeigen)

    Ein Symbolic Link wird ja im Directory als solcher ausgewiesen, da ja nach einem ls -l bei den permissions "lrwxr-xr-x" angezeigt wird und das l auf einen Link hinweist. Ausserdem habe ich den Vorteil dass ich auch in der Shell sehe wohin die reise geht.

    Wenn ich sowohl beim Symbolic Link als auch beim Alias das Original umbenenne greifen beide ins Leere

    Bis jetzt denke ich habe ich alles verstanden. So und jetzt erklärt mir einer mal einen Hard link:

    Ich habe eine Datei namens hossa.txt und ich lege jetzt mittels "ln hossa.txt mahlzeit.txt" einen harten link an. Wenn ich nun aber in hossa.txt was ändere, so ist das NICHT in mahlzeit.txt mitgeändert....

    Für mich schaut das so aus als wäre es eine stinknormale Kopie der Datei...

    Grüße Blain
     
  2. magheinz

    magheinz Mitglied

    Beiträge:
    2.342
    Zustimmungen:
    227
    Mitglied seit:
    06.02.2005
    Also:
    Ein INODE ist ein Eintrag in Dateisystemindex.
    In diesem sind diverse Sachen wie Rechte usw, aber auch der Speicherort auf der Festplatte abgelegt.
    Das heisst es gibt eine Tabelle mit folgenden Einträgen:
    ID;Rechte,Owner,Gruppe,Linkzähler usw.
    Wenn jetzt eine Datei erzeugt wird dann wird eine neue Verknüpfung Name1->ID1 erzeugt.
    Legst du jetzt einen Softlink an, dann wird eine neue Datei erzeugt, welche als Inhalt den Pfad des Ziels hat, also NAME1->ID2.
    Legst du einen Hardlink an, dann Wird im Dateisystem eine neue Datei mit der ID des Ziels erzeugt, also NAME3->ID1.

    leg mal eine Datei mit
    Code:
    echo "test" >testdatei
    an.
    dann erzeugst du mit
    Code:
    ln testdatei testhardlink
    und
    Code:
    ln -s testdatei testsoftlink
    zwei links an.
    Schau dir jetzt die informationen die
    Code:
    ls -li
    liefert an.
    Du siehst, testdatei und testhardlink haben die selbe inode, sind also quasi die selbe Datei wärend testsoftlink selbstständig ist. Deswegen kannst du jetzt auch testdatei löschen. testhardlink bleibt weiterhin gültig.
    Hier sieht man ganz gut wie im Dateisystem eine Datei gelöscht wird. Es wird einfach nur die Zuordnung Dateiname->Inode gelöscht. nicht jedoch die Datei an sich.

    Da scheint was gehörig schief zu laufen!

    Hier gibts noch ne kleine Übersicht. Ganz am Ende der Seite ist eine Tabelle mit einem Vergleich von Softlink<->Hardlink<->OSX-Alias:
    http://r-goetz.de/linux/bg/fs.html

    Eine andere Erklärung steht in der manpage zu ln:
    http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/ln.1.html
     
  3. Andi

    Andi Mitglied

    Beiträge:
    7.856
    Zustimmungen:
    1.104
    Mitglied seit:
    16.05.2002
    ...

    Hallo Blain,

    das Ganze ist etwas kompliziert.
    Der Alias ist ein Finder eigenes "Ding" der geht nach der File ID deshalb kann man beides Alias und Original umbenennen oder verschieben. Die Zuordnung übernimmt der Alias Manager. Die Shell kann diesem nicht folgen (oder nur mit einem Zusatztool).

    Der Symbolische Link geht nach dem Pfad. Da kann man logischerweise nichts umbenennen oder verschieben. Das ist ein Shell "Ding" der Finder kann aber einem Symbolischen Link folgen.

    Der Hard Link ist wie von magheinz beschrieben ein weiterer Eintrag der selben Datei. Du kannst in der Shell eins von beiden mit z.B pico verändern und die Veränderung ist in beiden. Änderst Du eins aber mit z.B. TextEdit und sicherst wird das ganze Konstrukt aufgelöst und eine neue Datei geschrieben - drum kommt's Dir nur als Kopie vor. Ist also auch ein Shell "Ding" und GUI Programme ignorieren das. Im Finder kannst Du aber eins von beiden löschen und das andere bleibt erhalten.

    Jetzt gibt es noch das "Ding" in der Seitenleiste des Finders. Benennt man das um wird auch das Original umbenannt. Löscht man es wird auch das Original gelöscht - ganz böse...

    Gruß Andi
     
  4. magheinz

    magheinz Mitglied

    Beiträge:
    2.342
    Zustimmungen:
    227
    Mitglied seit:
    06.02.2005
    Das würde ich aber mal eindeutig als Bug bezeichnen.
    Wieso sollte TextEdit eine neue Datei erzeugen wenn schon eine vorhanden ist?
     
  5. Andi

    Andi Mitglied

    Beiträge:
    7.856
    Zustimmungen:
    1.104
    Mitglied seit:
    16.05.2002
    ...

    Hallo magheinz,

    ja - wundert mich auch. Weil im Eingangspost so ziemlich nichts gestimmt hat, habe ich das ausprobiert.
    pico geht TextEdit nicht.
    Für das Warum habe ich auch keine Erklärung.
    Vielleicht kann das noch Jemand mal probieren...

    Gruß Andi
     
  6. magheinz

    magheinz Mitglied

    Beiträge:
    2.342
    Zustimmungen:
    227
    Mitglied seit:
    06.02.2005
    Ich hab ein paar Tage frei und deshalb grad keinen mac in reichweite.
    Falls du Zeit und Lust hast schau doch mal nach ob sich die inode der Datei ändert wenn man sie mit textedit editiert hat.
    Mich würde interessieren ob das Teil eventuell einfach in einer temporärer Datei arbeitet und beim Speichern die original löscht und eine neue anlegt. Das wäre nämlich ziemlich dämlich.

    Interessant wäre es auch ob das nur beim Speichern passiert oder ob textedit das generell macht, ich hoffe ja nicht.
     
  7. Andi

    Andi Mitglied

    Beiträge:
    7.856
    Zustimmungen:
    1.104
    Mitglied seit:
    16.05.2002
    ...

    Hallo magheinz,

    der inode ändert sich. TextEdit scheint einfach eine neue Datei "über" die alte zu schreiben. Bei erneuter Veränderung durch TextEdit bleibt der inode aber gleich...

    10.4.11

    Gruß Andi
     
  8. magheinz

    magheinz Mitglied

    Beiträge:
    2.342
    Zustimmungen:
    227
    Mitglied seit:
    06.02.2005
    Ok, dann siehts wirklich nach einem bug aus.
    kann man sowas irgendwo bei apple melden?
     
  9. Andi

    Andi Mitglied

    Beiträge:
    7.856
    Zustimmungen:
    1.104
    Mitglied seit:
    16.05.2002
    ...

    Hallo magheinz,

    sicher kann man Bugs bei Apple melden. Nur ob es einer ist, ist die Frage.
    Shell und Aqua sind halt zwei Paar Schuhe. Den Alias kennt die Shell ja auch nicht...

    Gruß Andi

    PS: Hoffentlich ist das nicht nur bei mir und dem TE so :rolleyes:
     
  10. timbajr

    timbajr Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    Mitglied seit:
    22.04.2005
    Shell und Aqua dürften aber keine Unterschiede imho machen. Ich tendiere auch zu einem Bug, aber lass mich gerne belehren, was das für einen Sinn haben soll (und v.a. wie das so ohne weiteres geht?!?)
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.