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.