man/files
man · Dosyalar

$ ln

Bölüm 1 · Dosyalar

dosyaları birbirine bağlar (bağlantı / link oluşturur)

Özet

ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] kaynak_dosya [hedef_dosya]
ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] kaynak_dosya ... hedef_dizin
link kaynak_dosya hedef_dosya

Açıklama

ln yardımcı programı, hedef_dosya ile belirtilen dosya adı için yeni bir dizin girdisi (bağlanmış dosya) oluşturur. Oluşturulan hedef_dosya, kaynak_dosya ile aynı dosya izin modlarına sahip olacaktır.

Bu işlem, "kopyalar" için ek disk alanı harcamadan bir dosyanın aynı anda birden fazla yerde barındırılmasına imkan tanır.

İki tür bağlantı vardır:

  1. Sabit Bağlantılar (Hard Links): Orijinal dizin girdisinden ayırt edilemez. Dosyada yapılan herhangi bir değişiklik, hangi adla erişilirse erişilsin anında yansır. Dizinler sabit bağlanamaz ve sabit bağlantılar farklı dosya sistemleri arasında geçiş yapamaz.
  2. Sembolik Bağlantılar (Symbolic Links / Soft Links): Bağlı olduğu dosyanın yol adını (dizge olarak) içerir. Sembolik bağlantılar dosya sistemleri arasında geçiş yapabilir ve dizinleri de referans alabilir.

Yardımcı program link olarak çağrıldığında (veya link syntax'ı kullanıldığında), tam olarak iki argüman sağlanmalıdır ve bunlardan hiçbiri dizin olamaz. link(2) sistem çağrısını doğrudan yürüten bu basit modda hiçbir seçenek (flag) kullanılamaz.

Seçenekler

  • -F: Hedef dosya zaten mevcutsa ve bir dizinse, bağlantının kurulabilmesi için onu kaldırır. -F seçeneği, -f veya -i seçeneklerinden biriyle birlikte kullanılmalıdır. Ne -f ne de -i belirtilmişse, -f varsayılır. -s belirtilmediği sürece hiçbir işlem yapmaz (no-op).
  • -L: Sembolik bir bağlantıya sabit bir bağlantı oluştururken, sembolik bağlantının hedefine (bağlandığı dosyaya) sabit bir bağlantı oluşturur. Varsayılan davranış budur. Bu seçenek -P seçeneğini geçersiz kılar.
  • -P: Sembolik bir bağlantıya sabit bir bağlantı oluştururken, sembolik bağlantının kendisine (dosya adına) sabit bir bağlantı oluşturur. Bu seçenek -L seçeneğini geçersiz kılar.
  • -f: Hedef dosya zaten mevcutsa, bağlantının kurulabilmesi için onun bağını kaldırır (unlink). Bu seçenek önceki tüm -i ve -w seçeneklerini geçersiz kılar.
  • -h / -n: Eğer hedef_dosya veya hedef_dizin bir sembolik bağlantısa, onu takip etmez (hedefini çözmez). Bu seçenek, bir dizine işaret edebilecek bir sembolik bağlantıyı değiştirmek için en çok -f seçeneğiyle birlikte kullanışlıdır.
  • -i: Hedef dosya mevcutsa standart hataya bir onay istemi yazdırır. Standart girdiden gelen yanıt 'y' veya 'Y' karakteri ile başlıyorsa, bağlantının kurulabilmesi için hedef dosyanın bağını kaldırır. Aksi takdirde bağlantı kurma girişiminde bulunmaz. Bu seçenek önceki tüm -f seçeneklerini geçersiz kılar.
  • -s: Sabit bağlantı yerine sembolik bir bağlantı (soft/symlink) oluşturur.
  • -v: Ayrıntılı (verbose) modda çalışarak dosyaları işlendikçe standart çıktıya yazdırır.
  • -w: Oluşturulan bir sembolik bağlantının kaynağı şu anda mevcut değilse bir uyarı mesajı verir.

Örnekler

Aşağıdaki örnekler kabukta (shell) çalıştırılabilecek şekilde gösterilmiştir:

  1. /usr/src dizinine işaret eden /home/src adında bir sembolik bağlantı oluşturma:

    ln -s /usr/src /home/src
  2. Bir programın yeni sürümüne sabit bağlantı (hard link) oluşturma:

    ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog
  3. foo sembolik bağlantısını dizin derinliğine takılmadan zorlayarak (-f) yeni baz dizinine yönlendirme:

    ln -shf baz foo

    [!NOTE] -h seçeneği olmasaydı, bu işlem foo'yu baz'a yönlendirmek yerine, foo'nun işaret ettiği mevcut hedef dizininin içinde baz adında yeni bir sembolik bağlantı oluşturacaktı.

  4. Sabit bağlantıların inode numaralarını kontrol ederek aynı fiziksel dosyaya işaret ettiğini doğrulama:

    ls -i /bin/[ /bin/test

    Çıktı örneğinde her iki dosyanın da aynı inode numarasına (örneğin 11553) sahip olduğu görülür. /bin/[ aslında [test(1)] komutunun if bloklarında daha doğal kullanılabilmesi için oluşturulmuş bir sabit bağlantıdır.

  5. ln argüman sırasını hatırlamak için cp(1) komutunu düşünün: İlk argüman (kaynak) her zaman mevcut olmalıdır, ikinci argüman (hedef) ise oluşturulacak olandır.

Uyumluluk

-h, -i, -n, -v ve -w seçenekleri standart dışıdır. Yalnızca diğer ln uygulamalarıyla uyumluluk amacıyla sunulmuşlardır. -F seçeneği ise bir FreeBSD uzantısıdır.

Ayrıca Bakınız

link(1), cp(1), ls(1), readlink(1), link(2), lstat(2), stat(2), symlink(2), symlink(7)