Soru Komut satırı üzerinden sembolik link hedefini bulun


Sembolik bir bağlantı kurduğumu söyle:

ln -s /root/Public/mytextfile.txt /root/Public/myothertextfile.txt

hedefini görmenin bir yolu var mı myothertextfile.txt komut satırını kullanıyor?


106
2017-10-19 18:36


Menşei




Cevaplar:


Kullan -f canonicalized sürümü yazdırmak için bayrak. Örneğin:

readlink -f /root/Public/myothertextfile.txt

itibaren man readlink:

-f, --canonicalize
      canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist

143
2017-10-19 18:42



Önerildiği gibi başka bir sorukullanmak isteyebilirsiniz readlink -f. - Denilson Sá Maia
Mac OS X'te çalışmak için brew install coreutils. Bu, harfle önceden yazılmış komutların temel gnu sürümlerini yükler. gyani greadlink -f somefile - Mike D
-f anahtarıyla, komut benim durumumda hiçbir şey döndürmez. - sotn
-F'yi kullanmak istediğim bilgiyi verdi, yani çoklu sembollerin çözümlenmesi ve son hedefin gösterilmesi. - isapir


readlink istediğiniz komuttur. Komuta için man sayfasına bakmalısın. Çünkü gerçek dosyaya bir sembolik linkler zinciri izlemek istiyorsanız, o zaman -e veya -f anahtarına ihtiyacınız vardır:

$ ln -s foooooo zipzip   # fooooo doesn't actually exist
$ ln -s zipzip zapzap

$ # Follows it, but doesn't let you know the file doesn't actually exist
$ readlink -f zapzap
/home/kbrandt/scrap/foooooo

$ # Follows it, but file not there
$ readlink -e zapzap

$ # Follows it, but just to the next symlink
$ readlink zapzap
zipzip

19
2017-10-19 19:03



İlk cevapta yanlış bir şey yok, ama bu daha eksiksiz ve yardımsever. - Mike S


Bu da işe yarayacak:

ls -l /root/Public/myothertextfile.txt

fakat readlink ayrıştırmak yerine bir betikte kullanılması tercih edilir ls.


4
2017-10-19 19:02





Bağlantının kaynağını ve hedefini göstermek istiyorsanız, deneyin. stat -c%N files*. Örneğin.

$ stat -c%N /dev/fd/*
‘/dev/fd/0’ -> ‘/dev/pts/4’
‘/dev/fd/1’ -> ‘/dev/pts/4’

Ayrıştırma için iyi değil (kullanım readlink bunun için), ancak karmaşıklık olmadan bağlantı adını ve hedefini gösterir. ls -l

-c yazılabilir --format ve %N "sembolik link ise, dereferanslı kote edilmiş dosya adı" anlamına gelir.


4
2017-09-29 17:44





readlink iyi bir şey, ama GNU'ya özgü ve çapraz olmayan platform. İçin çapraz platform komut dosyaları yazdım /bin/shbu nedenle şöyle bir şey kullanırdım:

 ls -l /root/Public/myothertextfile.txt | awk '{print $NF}'

veya:

 ls -l /root/Public/myothertextfile.txt | awk -F"-> " '{print $2}'

Ancak bunların farklı platformlarda test edilmesi gerekiyor. Çalışacaklarını düşünüyorum, ama% 100 emin değilsiniz ls çıkış formatı.


2
2018-04-17 21:35





Eğer kullanamazsan readlink, ardından sonucun ayrıştırılması ls -l böyle yapılabilirdi.

Normal sonuç şöyle olurdu:

ls -l /root/Public/myothertextfile.txt
lrwxrwxrwx 1 root root 30 Jan  1 12:00 /root/Public/myothertextfile.txt -> /root/Public/mytextfile.txt

Bu yüzden, "->" den önce her şeyi değiştirmek istiyoruz. Kullanabilirdik sed bunun için:

ls -l /root/Public/myothertextfile.txt | sed 's/^.* -> //'
/root/Public/mytextfile.txt

1
2017-09-02 08:25





ll veya ls -l sembolik bağlantı ve hedefiniz dahil olmak üzere dizin öğelerini listelemeli

cd -P /root/Public/myothertextfile.txt (sizin durumunuzda) orijinal yola işaret etmelidir


0
2018-05-02 13:48