ln (Unix)
ln – uniksowy program służący do tworzenia dowiązań twardych oraz symbolicznych.
Użycie
ln [opcje] źródło cel
gdzie:
- źródło – plik lub pliki, do których tworzy się dowiązania;
- cel – nazwa pliku lub katalogu; jeśli cel jest nazwą pliku, stworzony zostanie link o konkretnej – podanej nazwie, jeśli zaś cel jest folderem zostaną w nim utworzone dowiązania do źródła, o nazwach identycznych z nazwami źródłowymi plików.
Opcje
Single UNIX Specification definiuje dwie opcje:
- -s – tworzy dowiązania symboliczne zamiast twardych;
- -f – wymusza (ang. force) tworzenie dowiązań, nawet, gdy istnieją już pliki o tej samej nazwie (nadpisuje je).
Wersja z GNU Coreutils dopuszcza także m.in.:
- -b – tworzy kopie zapasowe plików (ang. backup);
- -v – wyświetla szczegółowe informacje (ang. verbose mode).
Przykłady
ln abc def
Tworzy w pliku def dowiązanie twarde do pliku abc.
Dowiązania symboliczne
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.
Linki zewnętrzne
- ln -- specyfikacja Single Unix Specification
Strony man
- ln -- strona manuala z GNU Coreutils
ln(1)
– strona podręcznika systemu OpenBSDln(1)
– strona podręcznika systemu Linux