Hardlinks kavramını çok iyi anlıyorum ve cp--- ve hatta en son POSIX özellikleri gibi temel araçlar için adam sayfalarını birkaç kez okudum . Yine de aşağıdaki davranışı gözlemlemekten şaşırdım:
$ echo john > john
$ cp -l john paul
$ echo george > george
Bu noktada johnve paulaynı inode (ve içeriğe) sahip georgeolacak ve her iki açıdan da farklı olacaktır. Şimdi yapıyoruz:
$ cp george paul
Bu noktada beklenen georgeve paulfarklı inode'a ama aynı içeriği --- bu beklenti gerçekleşti olması --- ama aynı zamanda beklenen paulşimdi farklı bir inode numarası olması johnve için, johnhala içeriğe sahip john. İşte burada şaşırdım. Bir dosyayı hedef yola kopyalamanın paul, aynı dosyayı (aynı inode), inode'yu paylaşan diğer tüm hedef yollara kurmanın sonucu olduğu da ortaya çıkıyor paul. Bunun cpyeni bir dosya oluşturduğunu ve eski dosyanın işgal ettiği yere taşıdığını düşünüyordum paul. Bunun yerine, var olan dosyayı açmak paul, kısaltmak ve yazmakgeorgeiçeriğini mevcut dosyaya aktarın. Bu nedenle, aynı inode'a sahip "diğer" dosyalar, "içeriklerini" aynı anda günceller.
Tamam, bu sistematik bir davranış ve şimdi beklediğimi bildiğime göre, uygun şekilde nasıl çalışacağını veya bundan nasıl faydalanabileceğimi anlayabilirim. Bu davranışı belgelediğim yerde beni şaşırtan ne oldu? Daha önce baktığım belgelerde bir yerde belgelenmemişse şaşırırdım . Ama görünüşe göre kaçırdım ve şimdi bu davranışı tartışan bir kaynak bulamıyorum.