Ieder bestand op je systeem wordt voorgesteld door een inode (voor Informatie Node; uitgesproken als "ai-node"): in een inode staat alle informatie over het bestand. Een inode is echter niet direct zichtbaar. In plaats daarvan is iedere inode in het bestandssysteem door één of meer hard links gelinkt. Hard links bevatten de naam van het bestand, en het inode-nummer. De inode bevat het bestand zelf, d.w.z. de lokatie van de informatie die op disk wordt opgeslagen , zijn toegangspermissies, het type van het bestand, enzovoort. Het systeem kan ieder inode terugvinden zodra het 't inode-nummer heeft.
Een enkel bestand kan meer dan één link hebben. Dit betekent dat meerdere bestandsnamen naar hetzelfde bestand verwijzen (dat wil zeggen dat ze zijn verbonden met hetzelfde inode-nummer). Je kunt echter geen hardlinks over bestandssystemen heen maken: alle hardlinks moeten naar een bepaald bestand (inode) op hetzelfde bestandssysteem zijn. Dit komt omdat ieder bestandssysteem zijn eigen set inodes heeft, en er kunnen dus dubbele inode-nummers tussen bestandssystemen zijn.
Aangezien alle hardlinks naar een gegeven inode naar hetzelfde bestand verwijzen, kun je wijzigingen aan het bestand maken, verwijzend naar de naam ervan, en die wijzigingen dan verwijzend naar een andere naam, bekijken. Probeer:
cd naar je home-directory en maak een bestand aan genaamd eerste-link met het woord "hello". Wat je in feite hebt gedaan is het doorsturen van de uitvoer van echo (echo echoot gewoon terug wat je het hebt opgegeven), waarbij de uitvoer in eerste-link werd geplaatst. Zie het hoofdstuk over shells voor een volledige uitleg.
Bevestig de inhoud van eerste-link.
Maak een hardlink aan: tweede-link verwijst nu naar dezelfde inode als eerste-link.
Constateer dat tweede-link hetzelfde is als eerste-link
Het aantal hardlinks weergegeven voor eerste-link en tweede-link is 2.
Dit is een andere shell redirectie truc - maak je geen zorgen om de details. We hebben het woord "change" toegevoegd aan tweede-link. Constateer dit met cat tweede-link.
eerste-link bevat ook het woord "change"! Dit komt doordat eerste-link en tweede-link naar hetzelfde bestand verwijzen. Het doet er niet toe hoe je het noemt wanneer je het wijzigt.
Wijzig de permissies van eerste-link. Geef een ls -l als bevestiging dat de permissies van tweede-link ook zijn veranderd. Dit betekent dat de permissie informatie in de inode wordt bewaard, niet in links.
Verwijder deze link. Dit is een subtiliteit van rm --- het verwijdert werkelijk links. geen bestanden. Typ nu ls -l en zie dat tweede-link er nog steeds is. Het aantal hardlinks voor tweede-link is verlaagd naar één.
Verwijder de andere link. Wanneer er geen links meer naar een bestand zijn, verwijdert Linux het bestand zelf, dat wil zeggen, zijn inode.
Alle bestanden werken op deze manier --- zelfs speciale typen bestanden, zoals devices (b.v. /dev/hda).
Een directory is gewoon een lijst met bestandsnamen en inode-nummers, dat wil zeggen, een lijst met hardlinks. Als je een hardlink aanmaakt, voeg je slechts een naam-nummer paar toe aan een directory. Als je een bestand verwijdert, ben je gewoon een hardlink vanuit een directory aan het verwijderen.