← man/files
link — man link — 80×24
ugur@toprak:~/man/files$man link
Bölüm 1 Dosyalar

link

dosyaları birbirine bağlar

Sinopsis

     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. hedef_dosya, kaynak_dosya ile aynı dosya izin modlarıyla oluşturulacaktır. Bu araç, "kopyalar" için depolama alanı harcamadan bir dosyanın birden fazla kopyasını aynı anda birçok yerde barındırmak için kullanışlıdır; bunun yerine bir bağ orijinal kopyayı "işaret eder". İki tür bağ vardır: sabit bağlar (hard links) ve sembolik bağlar (symbolic links). Bir bağın bir dosyayı nasıl "işaret ettiği", sabit ve sembolik bağlar arasındaki farklardan biridir.

Seçenekler aşağıdaki gibidir:

  • -F: Hedef dosya zaten mevcutsa ve bir dizinse, bağ işleminin gerçekleşebilmesi için onu kaldırır. -F seçeneği, -f veya -i seçenekleriyle birlikte kullanılmalıdır. -f veya -i seçeneklerinden hiçbiri belirtilmemişse, -f varsayılır. -s seçeneği belirtilmediği sürece -F seçeneği etkisizdir.

  • -L: Bir sembolik bağa sabit bağ oluştururken, sembolik bağın hedefine yönelik bir sabit bağ oluşturur. Varsayılan davranış budur. Bu seçenek -P seçeneğini iptal eder.

  • -P: Bir sembolik bağa sabit bağ oluştururken, sembolik bağın kendisine yönelik bir sabit bağ oluşturur. Bu seçenek -L seçeneğini iptal eder.

  • -f: Hedef dosya zaten mevcutsa, bağ işleminin gerçekleşebilmesi için onun bağını kaldırır (unlink). (-f seçeneği, önceki tüm -i ve -w seçeneklerini geçersiz kılar.)

  • -h: Eğer hedef_dosya veya hedef_dizin bir sembolik bağ ise, onu takip etmez. Bu seçenek, bir dizine işaret edebilecek bir sembolik bağı değiştirmek için en çok -f seçeneğiyle birlikte kullanışlıdır.

  • -i: Hedef dosya mevcutsa ln komutunun standart hataya bir onay istemi yazmasını sağlar. Standart girdiden gelen yanıt ‘y’ veya ‘Y’ karakteri ile başlıyorsa, bağ işleminin gerçekleşebilmesi için hedef dosyanın bağını kaldırır. Aksi takdirde bağ kurma girişiminde bulunmaz. (-i seçeneği, önceki tüm -f seçeneklerini geçersiz kılar.)

  • -n: Diğer ln uygulamalarıyla uyumluluk amacıyla -h seçeneğiyle aynı işlevi görür.

  • -s: Bir sembolik bağ oluşturur.

  • -v: ln komutunun ayrıntılı modda çalışmasını sağlayarak dosyaları işlendikçe gösterir.

  • -w: Bir sembolik bağın kaynağı şu anda mevcut değilse uyarı verir.

Varsayılan olarak ln sabit bağlar kurar. Bir dosyaya yönelik sabit bağ, orijinal dizin girdisinden ayırt edilemez; bir dosyada yapılan herhangi bir değişiklik, dosyayı referans almak için kullanılan addan bağımsız olarak geçerli olur. Dizinler sabit bağlanamaz ve sabit bağlar dosya sistemleri arasında geçiş yapamaz.

Bir sembolik bağ, bağlı olduğu dosyanın adını içerir. Referans verilen dosya, bağ üzerinde bir open(2) işlemi gerçekleştirildiğinde kullanılır. Bir sembolik bağ üzerindeki stat(2) çağrısı bağlı olan dosyayı döndürür; bağ hakkında bilgi almak için lstat(2) yapılmalıdır. Sembolik bağın içeriğini okumak için readlink(2) çağrısı kullanılabilir. Sembolik bağlar dosya sistemleri arasında geçiş yapabilir ve dizinleri referans alabilir.

Bir veya iki argüman verildiğinde, ln mevcut bir kaynak_dosya dosyasına bir bağ oluşturur. hedef_dosya verilirse bağ bu adı alır; hedef_dosya bağın yerleştirileceği bir dizin de olabilir; aksi takdirde geçerli dizine yerleştirilir. Yalnızca dizin belirtilmişse bağ, kaynak_dosya'nın son bileşenine kurulur.

İkiden fazla argüman verildiğinde, ln, hedef_dizin içine belirtilen tüm kaynak dosyalara yönelik bağlar kurar. Kurulan bağlar, bağlanan dosyalarla aynı adı taşıyacaktır.

Yardımcı program link olarak çağrıldığında, tam olarak iki argüman sağlanmalıdır ve bunlardan hiçbiri bir dizin belirtemez. Geçirilen iki argümanı kullanarak bir link(2) işlemi gerçekleştiren bu basit çalışma modunda hiçbir seçenek sunulamaz.

Örnekler

     /home/src adında bir sembolik bağ oluşturun ve onu /usr/src dizinine yönlendirin:

           # ln -s /usr/src /home/src

     /usr/local/bin/fooprog-1.0 dosyasına /usr/local/bin/fooprog adıyla sabit bağ kurun:

           # ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog

     Bir alıştırma olarak aşağıdaki komutları deneyin:

           # ls -i /bin/[
           11553 /bin/[
           # ls -i /bin/test
           11553 /bin/test

     Her iki dosyanın da aynı inode numarasına sahip olduğuna dikkat edin; yani /bin/[ esasen test(1) komutu için bir takma addır. Bu sabit bağ, test(1) komutunun kabuk betiklerinden, örneğin if [ ] yapısı kullanılarak çağrılabilmesi için mevcuttur.

     Bir sonraki örnekte, ln komutunun ikinci çağrısı orijinal foo'yu kaldırır ve baz dizinine işaret eden bir yedek oluşturur:

           # mkdir bar baz
           # ln -s bar foo
           # ln -shf baz foo

     -h seçeneği olmadan bu işlem foo'yu bar'a işaret eder durumda bırakır ve foo'nun içinde kendisine işaret eden yeni bir baz sembolik bağı oluştururdu. Bu, dizin gezintisinden kaynaklanır.

     Hatırlaması kolay bir kural, ln için argüman sırasının cp(1) ile aynı olmasıdır: İlk argümanın mevcut olması gerekir, ikincisi ise oluşturulur.

Uyumluluk

-h, -i, -n, -v ve -w seçenekleri standart dışıdır ve betiklerde kullanılmaları önerilmez. Yalnızca diğer ln uygulamalarıyla uyumluluk sağlamak amacıyla sunulmuşlardır.

-F seçeneği bir FreeBSD uzantısıdır ve taşınabilir betiklerde kullanılmamalıdır.

Ayrıca Bakınız

link(2), lstat(2), readlink(2), stat(2), symlink(2), symlink(7)

Standartlar

ln yardımcı programı IEEE Std 1003.2-1992 (“POSIX.2”) standardına uygundur.

Basitleştirilmiş link komutu Single UNIX Specification Sürüm 2 (“SUSv2”) standardına uygundur.

Geçmiş

ln komutu AT&T UNIX Sürüm 1'de ortaya çıktı.

macOS 26.4                          10 Mayıs 2021                          macOS 26.4