Dalam sistem Unix-style, struktur data yang mewakili objek sistem file (dengan kata lain, data tentang file), disimpan dalam apa yang disebut "inode".
Nama file hanyalah tautan ke inode ini, dan disebut sebagai "tautan keras". Tidak ada perbedaan antara nama depan file diberikan dan tautan selanjutnya. Jadi jawabannya adalah, "ya": tautan keras adalah file biasa dan, memang, file biasa adalah tautan keras.
The ls
perintah akan menunjukkan berapa banyak hard link yang ada untuk file.
Sebagai contoh:
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
Di sini kami telah membuat file bernama /tmp/hello.txt
. Di 1
dalam output dari ls -l
menunjukkan bahwa ada 1 tautan keras ke file ini. Tautan keras ini adalah nama file itu sendiri /tmp/hello.txt
.
Jika sekarang kita membuat tautan keras lain ke file ini:
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
Anda sekarang dapat melihat bahwa kedua nama file menunjukkan ada 2 tautan keras ke file tersebut. Tak satu pun dari ini adalah nama file yang "tepat", keduanya sama-sama valid. Kita dapat melihat bahwa keduanya menunjuk ke inode yang sama (dalam kasus ini, 5374043):
seumasmac@comp:~$ ls -i /tmp/hello*
5374043 /tmp/helloagain.txt 5374043 /tmp/hello.txt
Ada kesalahpahaman umum bahwa ini berbeda untuk direktori. Saya pernah mendengar orang mengatakan bahwa jumlah tautan yang dikembalikan oleh ls
suatu direktori adalah jumlah subdirektori, termasuk .
dan ..
yang tidak benar . Atau, setidaknya, meskipun akan memberi Anda nomor yang benar, itu tepat untuk alasan yang salah!
Jika kita membuat direktori dan melakukan yang ls -ld
kita dapatkan:
seumasmac@comp:~$ mkdir /tmp/testdir
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 2 seumasmac seumasmac 4096 Oct 4 13:20 /tmp/testdir
Ini menunjukkan ada 2 tautan keras ke direktori ini. Ini adalah:
/tmp/testdir
/tmp/testdir/.
Perhatikan bahwa /tmp/testdir/..
ini bukan tautan ke direktori ini, ini tautan ke /tmp
. Dan ini memberi tahu Anda mengapa "jumlah subdirektori" berfungsi. Ketika kami membuat subdirektori baru:
seumasmac@comp:~$ mkdir /tmp/testdir/dir2
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 3 seumasmac seumasmac 4096 Oct 4 13:24 /tmp/testdir
Anda sekarang dapat melihat ada 3 tautan keras ke /tmp/testdir
direktori. Ini adalah:
/tmp/testdir
/tmp/testdir/.
/tmp/testdir/dir2/..
Jadi setiap sub-direktori baru akan menambah jumlah tautan satu per satu, karena ..
entri yang dikandungnya.