ln (Unix)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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]