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

ln

dosyaları birbirine bağlar (link)

Özet

     ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file [target_file]
     ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file ... target_dir
     link source_file target_file

Açıklama

ln aracı, target_file ile belirtilen dosya adı için yeni bir dizin girdisi (bağlanmış dosya) oluşturur. target_file, source_file ile aynı dosya izin modlarıyla oluşturulacaktır. Bu işlem, “kopyalar” için depolama alanını tüketmeden bir dosyanın aynı anda birçok yerde birden fazla kopyasını tutmak için yararlıdır; bunun yerine, bir bağlantı orijinal kopyaya “işaret eder”. İki tür bağlantı vardır: sabit bağlantılar (hard link) ve sembolik bağlantılar (symbolic link). Bir bağlantının bir dosyaya nasıl “işaret ettiği”, sabit bağlantı ile sembolik bağlantı arasındaki farklardan biridir.

Seçenekler aşağıdaki gibidir:

  • -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. -F seçeneği, -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 sabit bir bağlantı oluşturur. Varsayılan davranış budur. Bu seçenek -P seçeneğini iptal eder.

  • -P: Sembolik bir bağlantıya sabit bir bağlantı oluştururken, sembolik bağlantının kendisine sabit bir bağlantı oluşturur. Bu seçenek -L seçeneğini iptal eder.

  • -f: Hedef dosya zaten mevcutsa, bağlantının kurulabilmesi 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: target_file veya target_dir sembolik bir bağlantıysa, onu takip etmez. Bu seçenek, bir dizine işaret edebilecek bir sembolik bağlantıyı değiştirmek için en çok -f seçeneği ile birlikte kullanışlıdır.

  • -i: Hedef dosya mevcutsa, ln'in standart hataya bir onay istemi yazmasını sağlar. 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ı kurmaya çalışmaz. (-i seçeneği, önceki tüm -f seçeneklerini geçersiz kılar.)

  • -n: Diğer ln uygulamalarıyla uyumluluk için -h ile aynıdır.

  • -s: Sembolik bir bağlantı oluşturur.

  • -v: ln'in ayrıntılı modda (verbose) çalışmasını ve dosyaları işlendikçe göstermesini sağlar.

  • -w: Sembolik bir bağlantının kaynağı şu anda mevcut değilse uyarır.

Varsayılan olarak, ln sabit bağlantılar (hard link) oluşturur. Bir dosyaya yapılan sabit bağlantı, orijinal dizin girdisinden ayırt edilemez; bir dosyada yapılan değişiklikler, dosyaya atıfta bulunmak için kullanılan addan fiilen bağımsızdır. Dizinlere sabit bağlantı verilemez ve sabit bağlantılar dosya sistemleri arasında geçiş yapamaz.

Sembolik bir bağlantı, bağlı olduğu dosyanın adını içerir. Bağlantı üzerinde bir open(2) işlemi gerçekleştirildiğinde referans verilen dosya kullanılır. Sembolik bir bağlantıda gerçekleştirilen stat(2) işlemi, bağlanan dosyayı döndürür; bağlantı hakkında bilgi edinmek için bir lstat(2) işlemi yapılmalıdır. Sembolik bir bağlantının içeriğini okumak için readlink(2) çağrısı kullanılabilir. Sembolik bağlantılar dosya sistemleri arasında geçiş yapabilir ve dizinlere referans verebilir.

Bir veya iki argüman verildiğinde, ln mevcut bir source_file dosyasına bir bağlantı oluşturur. target_file verilmişse, bağlantı bu adı alır; target_file bağlantının yerleştirileceği bir dizin de olabilir; aksi takdirde geçerli dizine yerleştirilir. Yalnızca dizin belirtilmişse, bağlantı source_file dosyasının son bileşenine (adına) yapılacaktır.

İkiden fazla argüman verildiğinde, ln belirtilen tüm kaynak dosyaları için target_dir dizininde bağlantılar oluşturur. Oluşturulan bağlantılar, bağlanan dosyalarla aynı adı taşıyacaktır.

Araç link olarak çağrıldığında, tam olarak iki argüman sağlanmalıdır ve bunlardan hiçbiri bir dizin belirtemez. İki 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 sembolik bir bağlantı oluşturun ve bunu /usr/src dizinine yönlendirin:

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

     # /usr/local/bin/fooprog dosyasını /usr/local/bin/fooprog-1.0 dosyasına sabit bağlayın:

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

     # 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) komutunun bir takma adıdır. Bu sabit bağlantı, 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 dosyasını kaldırır ve baz dizinine işaret eden yeni bir sembolik bağlantı oluşturur:

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

     # -h seçeneği olmadan, bu işlem foo'nun bar dizinine işaret etmesini sağlar ve foo'nun içinde kendisine işaret eden yeni bir baz sembolik bağlantısı oluşturur. Bu, dizin gezintisinin bir sonucudur.

     # Hatırlanması kolay bir kural, ln için argüman sırasının cp(1) ile aynı olmasıdır: İlk argümanın var 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 için sağlanmıştı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 aracı IEEE Std 1003.2-1992 (“POSIX.2”) standardına uygundur.

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

Geçmiş

Version 1 AT&T UNIX içinde bir ln komutu yer almaktaydı.

macOS 26.4 May 10, 2021 macOS 26.4