Unix tarzı sistemlerde, dosya sistemi nesnelerini temsil eden veri yapısı (diğer bir deyişle, bir dosya hakkındaki veriler ), "inode" adı verilen şeyde depolanır.
Bir dosya adı sadece bu inode için bir linktir ve “hard link” olarak adlandırılır. Bir dosyanın verildiği ad ile bir sonraki bağlantı arasında hiçbir fark yoktur. Yani cevap, "evet" dir: bir hard link normal bir dosyadır ve gerçekten de normal bir hard linktir.
ls
Komut dosyasına kaç sabit bağlantılar gösterecektir.
Örneğin:
seumasmac@comp:~$ echo Hello > /tmp/hello.txt
seumasmac@comp:~$ ls -l /tmp/hello.txt
-rw-rw-r-- 1 seumasmac seumasmac 6 Oct 4 13:05 /tmp/hello.txt
Burada adlı bir dosya oluşturduk /tmp/hello.txt
. 1
Çıktıda ls -l
bu dosyaya 1 sabit bağlantı olduğunu gösterir. Bu hard link dosya isminin kendisidir /tmp/hello.txt
.
Şimdi bu dosyaya başka bir sabit link oluşturursak:
seumasmac@comp:~$ ln /tmp/hello.txt /tmp/helloagain.txt
seumasmac@comp:~$ ls -l /tmp/hello*
-rw-rw-r-- 2 seumasmac seumasmac 6 Oct 4 13:05 /tmp/helloagain.txt
-rw-rw-r-- 2 seumasmac seumasmac 6 Oct 4 13:05 /tmp/hello.txt
Artık her iki dosya adının da dosyaya 2 sabit bağlantı olduğunu gösterdiğini görebilirsiniz. Bunların hiçbiri "uygun" dosya adı değil, ikisi de eşit derecede geçerli. İkisinin de aynı düğüme işaret ettiğini görebiliyoruz (bu durumda, 5374043):
seumasmac@comp:~$ ls -i /tmp/hello*
5374043 /tmp/helloagain.txt 5374043 /tmp/hello.txt
Bunun dizinler için farklı olduğu konusunda yaygın bir yanılgı bulunmaktadır. İnsanların ls
bir dizin için döndürülen bağlantı sayısının alt dizinlerin sayısı olduğunu .
ve ..
hangilerinin yanlış olduğunu söylediğini duydum . Veya, en azından, size doğru rakamı verirken, yanlış sebeplerden dolayı doğru!
Eğer bir dizin yaratır ve yaparsak ls -ld
:
seumasmac@comp:~$ mkdir /tmp/testdir
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 2 seumasmac seumasmac 4096 Oct 4 13:20 /tmp/testdir
Bu, bu dizine 2 sabit bağlantı olduğunu gösterir. Bunlar:
/tmp/testdir
/tmp/testdir/.
Not /tmp/testdir/..
olduğu değil bu dizine bir bağlantı, bu bir bağlantı var /tmp
. Bu da size "alt dizinlerin sayısı" olayının neden çalıştığını söyler. Yeni bir alt dizin yarattığımızda:
seumasmac@comp:~$ mkdir /tmp/testdir/dir2
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 3 seumasmac seumasmac 4096 Oct 4 13:24 /tmp/testdir
Şimdi /tmp/testdir
dizine 3 sabit bağlantı olduğunu görebilirsiniz . Bunlar:
/tmp/testdir
/tmp/testdir/.
/tmp/testdir/dir2/..
Bu nedenle, her yeni alt dizin, ..
içerdiği girişten dolayı bağlantı sayısını bir artırır .