Tôi hiểu rất rõ khái niệm về các liên kết cứng và đã đọc các trang hướng dẫn cho các công cụ cơ bản như cp--- và thậm chí các thông số kỹ thuật POSIX gần đây --- một số lần. Tôi vẫn ngạc nhiên khi thấy các hành vi sau:
$ echo john > john
$ cp -l john paul
$ echo george > george
Tại thời điểm này johnvà paulsẽ có cùng một nút (và nội dung), và georgesẽ khác nhau ở cả hai khía cạnh. Bây giờ chúng tôi làm:
$ cp george paul
Tại thời điểm này, tôi mong đợi georgevà paulcó các số inode khác nhau nhưng cùng một nội dung --- kỳ vọng này đã được thực hiện --- nhưng tôi cũng dự kiến paulbây giờ sẽ có một số inode khác johnvà johnvẫn có nội dung john. Đây là nơi tôi đã ngạc nhiên. Nó chỉ ra rằng việc sao chép một tệp vào đường dẫn đích paulcũng có kết quả của việc cài đặt cùng một tệp đó (cùng một nút) tại tất cả các đường dẫn đích khác có chung paulinode. Tôi đã nghĩ rằng cptạo ra một tập tin mới và di chuyển nó vào nơi trước đây bị chiếm giữ bởi tập tin cũ paul. Thay vào đó, những gì nó dường như làm là mở tệp hiện có paul, cắt bớt nó và viếtgeorgeNội dung của tập tin hiện có. Do đó, bất kỳ tệp "khác" nào có cùng inode đều được cập nhật nội dung "của chúng" cùng một lúc.
Ok, đây là một hành vi có hệ thống và bây giờ tôi biết để mong đợi nó, tôi có thể tìm ra cách làm việc xung quanh nó, hoặc tận dụng nó, khi thích hợp. Điều gì làm tôi bối rối là tôi phải xem tài liệu này ở đâu? Tôi sẽ ngạc nhiên nếu nó không được ghi lại ở đâu đó trong các tài liệu mà tôi đã xem. Nhưng rõ ràng là tôi đã bỏ lỡ nó và bây giờ không thể tìm thấy một nguồn thảo luận về hành vi này.