Frage zu Links (hard/symbolic) und Aliase

Diskutiere das Thema Frage zu Links (hard/symbolic) und Aliase im Forum Mac OS - Unix & Terminal.

  1. Blain

    Blain Thread Starter Mitglied

    Beiträge:
    1.438
    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.535
    Zustimmungen:
    470
    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.939
    Zustimmungen:
    1.211
    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.535
    Zustimmungen:
    470
    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.939
    Zustimmungen:
    1.211
    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.535
    Zustimmungen:
    470
    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.939
    Zustimmungen:
    1.211
    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.535
    Zustimmungen:
    470
    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.939
    Zustimmungen:
    1.211
    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:
    582
    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?!?)
     
  11. magheinz

    magheinz Mitglied

    Beiträge:
    2.535
    Zustimmungen:
    470
    Mitglied seit:
    06.02.2005
    Also soft und hardlinks sind eine Eigenschaft des Dateisystems.
    Der Bug selber hat aber nix damit zu tun. Der Bug ist meiner Meinung nach das textedit beim Dateiöffnen eine neue Datei anlegt was einfach falsch ist.
    Beim Dateiöffnen sollte eigentlich die vorhandene Datei geöffnet werden und nicht eine vorhandene gelöscht und dann einfach neu abgespeichert werden.
    Das dürfte ja auch zu unerfreulichen Nebeneffekten führen.
    Das erklärt ja auch das Problem vom OP. Wenn er eine Datei hat und einen Hardlink auf diese und jetzt die Datei gelösct wird und von Textedit neu angelegt wird, was passiert mit dem hardlink? Der zeigt ja jetzt auf eine andere Datei.
     
  12. Andi

    Andi Mitglied

    Beiträge:
    7.939
    Zustimmungen:
    1.211
    Mitglied seit:
    16.05.2002
    ...

    Hallo magheinz und timbajr,

    ehrlich gesagt wäre mir wohler wenn das Jemand bestätigen bzw. widerlegen könnte...

    Darüber wie es sein sollte sind wir uns ja einig.
    So hab ich es gemacht:

    administrators-power-mac-g4:~ admin$ cd /Users/admin/Documents/Hardlinktest/
    administrators-power-mac-g4:~/Documents/Hardlinktest admin$ touch test.txt
    administrators-power-mac-g4:~/Documents/Hardlinktest admin$ ln test.txt testhl.txt
    administrators-power-mac-g4:~/Documents/Hardlinktest admin$ ls -li
    total 0
    2807611 -rw-r--r-- 2 admin staff 0 Apr 3 15:40 test.txt
    2807611 -rw-r--r-- 2 admin staff 0 Apr 3 15:40 testhl.txt

    (test.txt mit TextEdit geöffnet und gespeichert)

    administrators-power-mac-g4:~/Documents/Hardlinktest admin$ ls -li
    total 8
    2807618 -rw-r--r-- 1 admin staff 4 Apr 3 15:41 test.txt
    2807611 -rw-r--r-- 1 admin staff 0 Apr 3 15:40 testhl.txt

    (test.text nochmals geöffnet und gespeichert)

    administrators-power-mac-g4:~/Documents/Hardlinktest admin$ ls -li
    total 8
    2807618 -rw-r--r-- 1 admin staff 8 Apr 3 15:45 test.txt
    2807611 -rw-r--r-- 1 admin staff 0 Apr 3 15:40 testhl.txt

    wenn ich das Ganze mit pico anstatt TextEdit mache funktioniert es wie erwartet.

    Gruß Andi
     
  13. maceis

    maceis Mitglied

    Beiträge:
    16.775
    Zustimmungen:
    604
    Mitglied seit:
    24.09.2003
    http://bugreporter.apple.com
     
  14. magheinz

    magheinz Mitglied

    Beiträge:
    2.535
    Zustimmungen:
    470
    Mitglied seit:
    06.02.2005
    Danke, das hatte ich auch schon gefunden.
    Aber "ADC Membership is required to use this tool." hindert mich am Bugreport.
     
  15. maceis

    maceis Mitglied

    Beiträge:
    16.775
    Zustimmungen:
    604
    Mitglied seit:
    24.09.2003
    Melde Dich halt an, tut doch nicht weh ;).
     
  16. Andi

    Andi Mitglied

    Beiträge:
    7.939
    Zustimmungen:
    1.211
    Mitglied seit:
    16.05.2002
    ...

    Hallo maceis,

    vielleicht nur die Antwort:

    It's not a bug - It's a feature.

    Ich kann's mir nur so erklären, dass es einfacher/sicherer ist bei Änderungen in einer Datei die ganze Datei neu zu schreiben und wenn das erfolgreich war das Original zu löschen. Bei CL-Programmen mag das anders sein...

    Ist dann ein Entwicklerproblem.

    Gruß Andi
     
  17. magheinz

    magheinz Mitglied

    Beiträge:
    2.535
    Zustimmungen:
    470
    Mitglied seit:
    06.02.2005
    Das halte ich für Unsinn. Datei öffnen ist nunmal Datei öffnen und nicht Kopie von Datei öffnen und original löschen.
    Vor allem wenn man dabei Dateisystemfeatures wie z.B: links kaputt macht.

    Man kann auch Problem los in einer Temporären Datei arbeiten, aber man sollte dann trotzdem beim Abspeichern die Originaldatei überschreiben und nicht eine neue erzeugen. Das ist einfach unsauber.

    Übrigens, beim zweiten mal öffnen einer Datei macht textedit das ja anscheinend nicht. Nur wenn der linkcounter größer 1 ist.
     
  18. detto

    detto Mitglied

    Beiträge:
    3.183
    Zustimmungen:
    263
    Mitglied seit:
    22.08.2007
    Moment, das findet schon beim Öffnen statt? Ich dachte hier war vom Ändern die Rede, sprich vom Speichern?
     
  19. Andi

    Andi Mitglied

    Beiträge:
    7.939
    Zustimmungen:
    1.211
    Mitglied seit:
    16.05.2002
    ...

    Hallo magheinz,

    ich finde das auch nicht gut. Wie sieht es mit Leopard aus? Hat das nicht eine UNIX-Zertifizierung? Da dürfte das ja nicht sein - oder?

    Gruß Andi
     
  20. magheinz

    magheinz Mitglied

    Beiträge:
    2.535
    Zustimmungen:
    470
    Mitglied seit:
    06.02.2005
    richtig:
    Datei speichern ist nunmal Datei speichern und nicht Kopie von Datei speichern und original löschen. ;)
     
Die Seite wird geladen...
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...