Geçerli dizine mutlak bir sembolik bağlantı oluşturma


12

Şimdi çok uzun yolu olan bir dizin altındayım. Gelecekte daha hızlı ziyaret etmek için, ona bir bağlantı oluşturmak istiyorum.

denedim

ln -s . ~/mylink

~/mylinkaslında bağlanır ~. Öyleyse eski ~yol adına genişleyebilir ve sonra verebilir lnmiyim?

Yanıtlar:


19

Bir symlink aslında verdiğiniz yolu bir dize olarak saklar¹. Bu, bağlantınızın ~/mylink" ." (bir karakter) içerdiği anlamına gelir . Bağlantıya eriştiğinizde, bu yol, bağlantıyı yaptığınız zamanki yerine bağlantının nerede olduğuna göre yorumlanır.

Bunun yerine, bağlantıda istediğiniz gerçek yolu saklayabilirsiniz:

ln -s "$(pwd)" ~/mylink

(çalışma dizini adı) çıktısını komut satırınıza koymak için komut değiştirme özelliğini kullanarak pwd. lntam yolu görür ve daha sonra doğru yeri gösterecek şekilde sembolik bağınıza kaydeder.

¹ Aşağı yukarı.


2
Ayrıca bkz "$PWD"POSIX kabuklarında ve ~0içinde zsh.
Stéphane Chazelas

7

Kullanmalısın:

ln -s "$(cd . && pwd)" ~/mylink

veya:

ln -s "$(pwd -P)" ~/mylink

geçerli çalışma dizini için doğru sonucu almak. Bu soruda olduğu gibi içinde çalışırken değiştirilebilir .


1
Birincisi her mermide yardımcı olmayabilir ( bu cevaba bakınız ). OP muhtemelen $PWD(o $(pwd -P)anki dizinin standart yolu) kullanmak yerine ( oraya ulaşmak için kullandığı yol) kullanmak istiyor . Eğer $PWDgeçerli dizine artık puan, o zaman hiç orada söylüyor $(pwd -P)ya sonraki dakikada irade.
Stéphane Chazelas


@ StéphaneChazelas: "$PWD"Mevcut direcory taşındığında hala eski değere sahip olduğunu görebilirsiniz . PWDsadece siz cdveya kabuk tarafından başlatıldığında ayarlanır .
cuonglm

Ama ne dediğimi OP birkaç kabukları (ksh93, kül, yash) içinde bulunduğumuz dizin altına bazı mutlak yoldan daha eski $ PWD istiyorum olasılığı ve bu olmasıdır, olarak açıklanabilir orada çağıran cdmarka garanti edilmez $ PWD veya pwd çıktısı mevcut dizine giden yolu gösterir. Gerçekleşmesi muhtemel olmayan bir şeye karşı korumaya çalışıyorsunuz, ancak ilk çözümde bu mutlaka etkili değil ve ikincisinde bu davranışı değiştiriyor.
Stéphane Chazelas

1
Birisi siz mv yaptıktan sonra yaparsa ln, aynı durumda kalırsınız. Öte yandan, eğer öyleyse cd /long/logical/path/to/some/directory, bağlantının /vg0/lv1/user2/app4(kanonik yol) işaret etmesini istemezsiniz çünkü bağlantı /long/logical/path/to/some/directorybaşka bir yere işaret ettiğinde yanlış yere işaret eder.
Stéphane Chazelas
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.