man/files
man · Dosyalar

$ link

Bölüm 1 · Dosyalar

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

Özet

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

Açıklama

link yardımcı programı, tam olarak iki argüman alır ve bu argümanlar dizin olamaz. İki argümanı kullanarak doğrudan bir link(2) sistem çağrısı yürütür ve herhangi bir komut satırı seçeneği (flag) kabul etmez.

Daha genel olan ln aracı ise 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): 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.

Seçenekler (Yalnızca ln için geçerlidir)

  • -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. link komutunu kullanarak iki dosya arasında basit bir sabit bağlantı (hard link) oluşturma:

    link orijinal.txt kopya.txt

    [!IMPORTANT] link komutuyla dizinleri bağlayamazsınız ve herhangi bir -s veya -f gibi parametre kullanamazsınız.

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

    ln -s /usr/src /home/src
  3. 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
  4. 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ı.

  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

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