$ echo totoot > toto
$ cat toto
totoot

L'option -i permet de voir l'inode:

$ ls -i
923134 toto
$

On créé un lien (non symbolique)
Autrement dit, on donne un second nom au même inode (donc aux mêmes données)
(La commande semble faire pointer vers le nom... alors qu'elle fait pointer vers l'inode pointé par le nom..bref..)

$ ln toto hardlink
$ ls -i
923134 hardlink 923134 toto

Le nouveau nom de fichier affiche bien les mêmes données :

$ cat hardlink
totoot

On créé un lien symbolique qui pointe non plus sur l'inode de toto, mais sur le nom toto.
On peut voir que l'inode est différent:

$ ln -s toto symbolink
$ ls -i
923134 hardlink 923140 symbolink 923134 toto
$

L'option -l permet de voir que c'est un lien symbolique (le l juste après l'inode et la flèche à la fin de la ligne)

$ ls -il
total 8
923134 -rw-r--r-- 2 yannick yannick 7 2005-12-07 17:31 hardlink
923140 lrwxrwxrwx 1 yannick yannick 4 2005-12-07 17:35 symbolink -> toto
923134 -rw-r--r-- 2 yannick yannick 7 2005-12-07 17:31 toto

Concrètement, on obtient bien le contenu de toto en appelant symbolink

$ cat symbolink
totoot
$

Par contre cette fois, si en enlève toto, symbolink ne fonctionne plus... alors que hardlink oui

$ mv toto toto2
$ cat symbolink
cat: symbolink: Aucun fichier ou répertoire de ce type
$ $ cat hardlink
totoot

On remet toto et symbolink refonctionne

$ mv toto2 toto
$ cat symbolink
totoot

La 3ème colonne indique combien de liens (hard) pointent vers un inode (ci dessous 2 pour 923134)

$ ls -li
total 8
923134 -rw-r--r-- 2 yannick yannick 7 2005-12-07 17:31 hardlink
923140 lrwxrwxrwx 1 yannick yannick 4 2005-12-07 17:35 symbolink -> toto
923134 -rw-r--r-- 2 yannick yannick 7 2005-12-07 17:31 toto

Si on en créé un autre... cela passe donc à 3:

$ ln toto hardkinleretour
$ ls -li
total 12
923134 -rw-r--r-- 3 yannick yannick 7 2005-12-07 17:31 hardkinleretour
923134 -rw-r--r-- 3 yannick yannick 7 2005-12-07 17:31 hardlink
923140 lrwxrwxrwx 1 yannick yannick 4 2005-12-07 17:35 symbolink -> toto
923134 -rw-r--r-- 3 yannick yannick 7 2005-12-07 17:31 toto

Les données ne sont donc supprimées que si l'on supprime le dernier nom poitant vers l'inode.
A noter également que si 2 noms poitent vers le même inode, le sytème affiche la même taille pour chacun des 2... Cela ne signifie pas que les données sont en double!