Neden ln -s tek bir argüman kabul ediyor?


27
> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user    3 Jul 29 14:00 foo -> foo

Bu bir hata mı ln, yoksa bir dosyayı kendine bağlamak için bir kullanım durumu mu var?

Bu birlikte coreutils 8.21-1ubuntu5.1.

Yanıtlar:


45

Bu bir böcek değil. Kullanım durumu, bir dosyayı aynı temel adla, ancak farklı bir dizine bağlamak istediğinizde içindir:

cd /tmp
ln -s /etc/passwd
ls -l passwd
lrwxrwxrwx 1 xxx xxx 11 Jul 29 09:10 passwd -> /etc/passwd

Aynı dizinde olan bir dosya adı ile bunu yaptığınızda, çok iyi bir şey yapmayan bir bağlantı oluşturduğu doğrudur!

Bu, sembolik bağlantılar veya sert bağlantılar kullanıp kullanmadığınızdan bağımsız olarak çalışır.


15
Bunu koymak için başka bir yol: ln -s /path/to/filekısa ln -s /path/to/file .. Gibi lskısa ls ..
Stéphane Chazelas

3
@ StéphaneChazelas evet ve iki bütün tuş vuruşlarını kurtarıyorsunuz! :-)
Celada

4
Bu davranışın POSIX tarafından belirtilmediğini, ancak Unix'in ilk sürümünde en azından oldukça yaygın olduğu (GNU, meşgul kutusu, FreeBSD, Solaris, Ultrix ve en azından) 70'lerin başında).
Stéphane Chazelas

9

Elbette öğrenmenin en kolay yolu, denemek ve görmek. 2. bağımsız değişken verilmediğinde, lngeçerli dizinde orijinaliyle aynı ada sahip bir bağlantı oluşturur:

$ ln -s /etc
$ ls -l
lrwxrwxrwx 1 terdon terdon         4 Jul 29 16:09 etc -> /etc

Bu ayrıca şöyle açıklanmıştır man ln:

2. formda, geçerli dizinde TARGET'e bir bağlantı oluşturun.

"2. biçim" ifadesi:

[SEÇENEK] ... HEDEF (2. form)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.