Alle Zugriffe auf Dateien laufen über Verzeichnisse und darin eingetragene Dateinamen. Die Einträge in ein Verzeichnis sind nichts weiter als eine Zeichenkette und eine Zahl: die Inode-Nummer. Auf diese Weise kann man einer Datei (d.h. Inode) beliebig viele Namen zuordnen - jede solche Zuordnung nennt sich hard link bzw. Referenz.
Die erste Referenz auf eine Datei erzeugt man beim Anlegen der Datei unter irgend einem Namen. Weitere Referenzen unter anderen Namen oder aus anderen Verzeichnissen kann man mit dem Befehl ln old_file new_filename hinzufügen.
Das Betriebssystem zählt jede dieser Referenzen mit; erst wenn der Zähler auf Null gefallen ist, wird eine Datei gelöscht. D.h. rm löscht die eigentlichen Daten erst, wenn der letzte link entfernt ist. Der normale Benutzer kann hard links nur für normale Dateien, nicht für directories anlegen, da man sonst den Rechner stark verwirren könnte (Schleifen im Dateibaum). Es werden jedoch automatisch in jedem Verzeichnis die zwei hard links . auf das Verzeichnis selber und .. auf das darüberliegende angelegt. Dies kann man mit cd ausnützen.
Der Nachteil des obigen Mechanismus ist, daß er nur innerhalb eines Filesystems funktioniert. Man kann also keine hard links von seinem CIP-Home aus in ein Projekthome legen.
Dieser Einschränkung unterliegen symbolic links nicht. Ein solcher link ist eigentlich eine Textdatei, in der einfach der Pfad zu der gewünschten Datei steht. Sie wird vom Betriebssystem jedoch gesondert behandelt (Typ L), d.h. wie bei hard links greift man, wenn man auf den link zugreift automatisch auf die eigentliche Datei zu (Beachte, daß es bei hard links soetwas wie die eigentliche Datei bzw. den Link darauf nicht gibt - alle Referenzen sind gleichwertig).
Man legt einen solchen Link an mit dem Befehl ln -s filepath linkname. Der Dateityp "Symbolic Link" wird von ls -l mit einem l in der ersten Spalte der Dateiattribute gekennzeichnet. Hinter dem Namen des links wird dann ein Pfeil und das Ziel des links ausgegeben:
example%ls -asl /vmunix 1 lrwxrwxrwx 1 root 15 Oct 14 20:34 /vmunix -> +private/vmunix