Tüm yolu yazmadan geçerli klasöre mutlak yol olarak bağlanma


10

Simge bağlantıları, göreli yollar için kaydedilen kısayollardır:

~/foo ln -s . ~/bar/foo
~/foo ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .

Dosya ~/bar/fooşu baranki dizinin bir sembolik bağlantısı , yani kendisi

O sırada bulunduğum dizine başka bir dizinde bir sembolik bağlantı oluşturmak istersem ne olur? Yukarıdaki örnekte, ben varım ~/foove ~/bar/foobir sembolik bağlantı olarak oluşturmak istiyorum ~/foo. Tabii ki geçerli dizinim 5 karakterden biraz daha uzun olabilir ve yazması o kadar kolay olmayabilir.

Yanıtlar:


13

Tip söyleyebilirim

ln -s $PWD ~/bar/

veya

ln -s `pwd` ~/bar/

Ayrıca kullanabilirsiniz

ln -s $PWD ~/bar/

ama sanırım bunu biliyordunuz ve aradığınız şey bu değil. Bu yüzden lütfen hedefinizin ne olduğunu açıklamak için sorunuzu güncelleyebilir misiniz?

Yol boşluk içeriyorsa, kullanılması önerilir:

ln -s "$PWD" ~/bar/

2
$Değişkenlerinizi ve komut değişikliklerinizi iki kez tırnak içine alın , aksi takdirde boşluklu dosya adları çalıştırmayı engeller. Ayrıca, $(basename $PWD)bitişe ihtiyacınız yoktur (ve bir $(ve alıntı :-)) unutmuşsunuzdur ) çünkü bu zaten varsayılan bağlantı adıdır.
Daniel Andersson

Bence aptal oluyordum. pwdYaklaşımı denediğimi düşündüm ve bir şeyler ters gitti. Bunu bir ID-ten-T hatasına indirelim
Gareth

@DanielAndersson, yoldaki boşlukları desteklemediğinden haklısın. İyi bir nokta. kayıt için cevabı güncelleyeceğim :)
Huygens

4

Kesinlikle:

ln -s "$(readlink -f .)" ~/bar

(komut dosyalarında genelliğe iyi gelebilir) veya yalnızca

ln -s ~/foo ~/bar

Nispeten:

ln -s ../foo ~/bar

Sekme tamamlama, yazmanıza yardımcı olacaktır.


Grawity'nin yorumundan ve http://lists.gnu.org/archive/html/coreutils-announc/2012-03/msg00000.html :

* 8.16 (2012-03-26) sürümündeki kayda değer değişiklikler [kararlı]

...

lnartık --relative, hedefin nasıl belirtildiğine bakılmaksızın, bir hedefe göreli sembolik bağlantı oluşturma seçeneğini kabul etmektedir .

Yani bu sürümle:

ln -s --relative . ~/bar

çalışmalıdır (uygulamada ilk örneğiniz aynıdır, --relativeanahtarın eklenmesi ile ).


4
En son çekirdekler kullanarak otomatik olarak göreli semboller oluşturabilir ln -s -r foo ~/bar.
user1686

@grawity: İlginç. Görünüşe göre benim sistemimde değil (Debian Sid).
Daniel Andersson

Git'e göre, 22 Mart'ta v8.16 için eklenmiş gibi görünüyor.
user1686

1
Ayrıca, $(readlink -f .)aşırı avantajı $PWDnedir?
user1686

2
@grawity: Fazla değil. Geçerli çalışma dizinine bir bağlantı tarafından ulaşılmışsa farklı çalışırlar. readlink -fdaha sonra geçerli dizinin mutlak hedef yoluna bağlanırken $PWD, şu anda hazır olan dizine bağlanır. İstenen zaman zaman muhtemelen farklıdır ve her şeyden önce büyük olasılıkla sorun olmaz.
Daniel Andersson
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.