Capisco molto bene la nozione di hardlink e ho letto le pagine man per strumenti di base come cp--- e persino le recenti specifiche POSIX --- un numero di volte. Sono rimasto sorpreso di osservare il seguente comportamento:
$ echo john > john
$ cp -l john paul
$ echo george > george
A questo punto johne paulavrà lo stesso inode (e contenuto) e georgedifferirà per entrambi gli aspetti. Adesso facciamo:
$ cp george paul
A questo punto ho aspettato georgee paulavere diversi numeri di inode, ma lo stesso contenuto --- questa aspettativa era rispettato --- ma ho anche aspettato pauldi avere ora un numero di inode diverso da john, e per johnavere ancora il contenuto john. Questo è dove sono stato sorpreso. Si scopre che la copia di un file nel percorso di destinazione paulha anche il risultato dell'installazione dello stesso file (stesso inode) in tutti gli altri percorsi di destinazione che condividono paull'inode. Stavo pensando che cpcrea un nuovo file e lo sposta nel posto precedentemente occupato dal vecchio file paul. Invece quello che sembra fare è aprire il file esistente paul, troncandolo e scriveregeorgecontenuto in quel file esistente. Quindi qualsiasi "altro" file con lo stesso inode ottiene "contenuto" aggiornato allo stesso tempo.
Ok, questo è un comportamento sistematico e ora che so di aspettarmelo, posso capire come aggirarlo o sfruttarlo, a seconda dei casi. Cosa mi confonde dove avrei dovuto vedere questo comportamento documentato? Sarei sorpreso se non fosse documentato da qualche parte nei documenti che ho già visto. Ma a quanto pare l'ho perso, e ora non riesco a trovare una fonte che discute di questo comportamento.