ln (Unix)

lnuniksowy program służący do tworzenia dowiązań twardych oraz symbolicznych.

Użycie

edytuj
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

edytuj

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

edytuj
ln abc def

Tworzy w pliku def dowiązanie twarde do pliku abc.

Dowiązania symboliczne

edytuj

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

edytuj
  • ln -- specyfikacja Single Unix Specification

Strony man

edytuj