Hayır, sert bir bağlantı tamamen farklıdır. Yumuşak bir bağlantı Windows kısayoluna daha yakındır (önemli farklılıklar olsa da, sembolik bağlantılar sabit bağlantılardan çok Windows kısayollarına benzer). Sert bir bağlantı farklı bir şeydir ve neredeyse hiç ihtiyacınız olmayacak olanıdır.
Kısaca, bu komutla yumuşak bir bağlantı oluşturulur:
ln -s foo bar
Sonra koşarsan ls -l
, göreceksin:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Bu bir bağlantı olduğu ->
anlamına gelir . Böylece, örneğin bir metin editörüyle açılış , aslında ayrı dosyayı açacaktır . Ancak, silme sadece kısayolu siler, dosyayı etkilemez .bar
foo
bar
foo
bar
foo
Öte yandan, sabit bağlantılar bu komutla oluşturulur:
ln foo bar
Şimdi çalıştırırsanız ls -l
, dosyalar arasında herhangi bir ilişki olduğuna dair bir gösterge yoktur:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Fakat — ve bu çok önemli - bunlar aslında aynı dosya . Unix dosya sistemlerindeki dosyalar, inode kullanılarak depolanır ; Bir inode temelde dosya sisteminin bir dosya adını fiziksel sabit sürücüdeki belirli bir yere eşleme şeklidir. Bu nedenle, sabit bağlantılar, hedefleriyle aynı inode'a işaret eden dosyalardır . Bunu koymanın başka bir yolu da, tüm dosyaların gerçekte kendi inode'larına işaret eden sert linkler olmasıdır. Bir dosyaya sert bir bağlantı yapmak, sadece dosya sistemi üzerinde aynı inode'a işaret eden yeni bir işaretçi (dosya) oluşturur. Her inode, kendisine veya birine işaret eden veya hiç olmayan birden fazla dosya içerebilir.
Bunu daha net anlamak için ls -i
, bir dosyayla ilişkili inode'u gösteren kullanımı kullanın . Yumuşak bir bağlantı ve sert bir bağlantı oluşturalım ve ne olacağını görelim:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Şimdi, inode'larını kontrol et:
Yukarıda da görüldüğü gibi, her iki foo
ve HardLinkToFoo
SoftLinkToFoo farklı bir (16648036) sahipken aynı düğüm (16648029) var.
Biz adlandırmak ne olur foo
ile mv foo bar
?
Kırmızı renk, hedefi artık bulunamayan bir kopuk yumuşak bağlantıyı gösterir. Bunun nedeni, yumuşak bağlantıların bir dosyanın adını inode'a işaret etmemesidir. Adının değiştirilmesine rağmen, inode aynı kalır, böylece hardlink iyi, yine de çalışır.
Özet olarak, hard linkler aslında aynı dosyanın iki tezahürüdür ; diskin aynı bölümüne işaretçilerdir. Yumuşak bağlantılar sadece kısayollardır. Gerçek bir dünya benzetmesi yapmak için, hardlinks aynı telefon hattı için iki farklı telefon numarası gibidir ve yumuşak bağlantılar aynı evde iki farklı telefon hattı olması gibidir.