ln (Unix)

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

Użycie[edytuj | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

ln abc def 

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

Dowiązania symboliczne[edytuj | edytuj kod]

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 | edytuj kod]

  • ln -- specyfikacja Single Unix Specification

Strony man[edytuj | edytuj kod]