ln – uniksowy program służący do tworzenia dowiązań twardych oraz symbolicznych.
ln [opcje] źródło cel
gdzie:
Single UNIX Specification definiuje dwie opcje:
Wersja z GNU Coreutils dopuszcza także m.in.:
ln abc def
Tworzy w pliku def dowiązanie twarde do pliku abc.
Jeżeli w pustym katalogu test utworzony zostanie plik źródło o treści abc:
$ ls -ali
total 8
969797 drwxr-xr-x 2 test test 4096 Dec 9 09:10 .
1036602 drwxr-xr-x 3 test test 4096 Dec 9 09:10 ..
$ echo abc > źródło
$ ls -ali
total 12
969797 drwxr-xr-x 2 test test 4096 Dec 9 09:11 .
1036602 drwxr-xr-x 3 test test 4096 Dec 9 09:10 ..
969768 -rw-r--r-- 1 test test 10 Dec 9 09:11 źródło
to liczba reference count zwiększy się z 8 do 12, a dane zostaną zapisane pod i-węzłem np. 969768.
Jeżeli następnie w tym samym katalogu stworzy się dowiązanie symboliczne link:
$ ln -s źródło link
$ ls -ali
total 12
969797 drwxr-xr-x 2 test test 4096 Dec 9 09:11 .
1036602 drwxr-xr-x 3 test test 4096 Dec 9 09:10 ..
969768 -rw-r--r-- 1 test test 10 Dec 9 09:11 źródło
969817 lrwxrwxrwx 1 test test 8 Dec 9 09:11 link -> źródło
to liczba reference count nie zwiększy się, ale link zostanie zapisany pod innym i-węzłem, tu np. 969817.
Teraz można przekonać się, że plik link jest dowiązaniem symbolicznym:
$ file link
link: dowiązanie symboliczne do `źródło`
a także odczytać jego zawartość:
$ cat link
abc
jednakże, gdyby usunąć plik źródło, odczyt taki byłby niemożliwy:
$ rm -f źródło
$ ls -ali
total 8
969797 drwxr-xr-x 2 test test 4096 Dec 9 09:36 .
1036602 drwxr-xr-x 3 test test 4096 Dec 9 09:32 ..
969817 lrwxrwxrwx 1 test test 8 Dec 9 09:11 link -> źródło
$ file link
link: zerwane dowiązanie symboliczne do `źródło`
$ cat link
cat: link: Nie ma takiego pliku lub katalogu
Gdyby jednak link był dowiązaniem twardym, to dane byłyby nadal dostępne.
ln(1) – strona podręcznika systemu OpenBSDln(1) – strona podręcznika systemu Linux