Sembolik bağlantının orijinal dosyasını bulma


20

Diyelim ki ana dizinimdeki bir dosyanın farklı bir bölümdeki başka bir dosyaya sembolik bir bağlantısı var. Bağlantılı dosyanın hedef konumunu nasıl bulurum? Bununla, yani, en ı var diyelim file2içinde /home/user/; ama bu diğerine sembolik bir bağlantı file1. file1Dosyayı bulmak için her bölüm / dizinde el ile gitmek zorunda kalmadan nasıl bulabilirim?


1
Lütfen "orijinal dosya" yı genişletin. Ya file1sembolik köprü ise file0? Symlink'inizin ( file0) son hedefini mi yoksa sadece bir sonrakini file1mi ( ) bulmak istiyor musunuz ?
don_crissti

Yanıtlar:


26

Bunu dene :

readlink -f /path/file

(birden fazla seviye varsa sembol bağlantınızın son hedefi)

Sadece bir sonraki sembolik bağ seviyesini istiyorsanız, şunu kullanın:

readlink /path/file

im hiç çıktı alma
k-Rocker

Bir tane olmalı! Hata ya da yol
Gilles Quenot

hayır hiçbir şey: user@shell a5$ readlink -f ./student1.javave ben olsunuser@shell a5$
k-Rocker

nvm, sembolik bağlantım doğru değildi, neden olduğundan emin değilim. ama yeni bir tane yaptım ve işe yarıyor, teşekkürler.
k-Rocker

2
FWIW bir readlink /path/filesonraki hedefi döndürecektir.
don_crissti

2

1.

ls -l bin

üretmek

lrwxrwxrwx 1 az az 14 Ноя 12 22:13 bin -> ../Gdrive/bin/

2.

file bin

üretmek

bin: symbolic link to `../Gdrive/bin/' 

3.

stat bin

üretmek

File: «bin» -> «../Gdrive/bin/»

tamam iyi ben bir komut dosyası yapmaya çalışıyorum, bu yüzden bunları nasıl kullanırım? linux için yeni.
k-Rocker

1
@ k-Rocker Ne yapmak istediğinizi açıklarsanız daha iyi olur.
Costas

1

En basit yol: cdsembolik bağlantının bulunduğu yere ve ls -ldosyaların ayrıntılarını listelemek için yapın.

->Sembolik bağdan sonraki sağdaki kısım , işaret ettiği hedeftir.

Ör:

lrwxrwxrwx 1 kullanıcıAd grubuAdı 22 Ocak 17 13:29 temp.txt bağlantısı -> /home/user/temp.txt

Burada ( ->) "/home/user/temp.txt" yi gösteren "temp.txt bağlantısı " var.

Ancak, @Gilles Quenot'un işaret ettiği gibi ,readlink -f /path/to/symbolic_link


0

Costas üzerinde genişleyen

Varsayalım

ln -s test.txt sym_link_1.txt
ls -l sym_link_1.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt

Bir komut dosyasında şunları yapabilirsiniz (ters tırnak kullanın)

ln -s `readlink sym_link_1.txt` sym_link_2.txt

Sonra sende var

ls -l sym_link_*.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 17:01 sym_link_2.txt -> test.txt

0

Bağlantı dosyalarını bulmak için başka bir yöntem (daha önce yanıtlanmamıştır) aşağıdaki komutu kullanmaktır,

file -h <path_to_dir>/* | grep link

Komut :

file -h /home/prateek/* | grep link

Çıktı :

/ home / prateek / Müzik: / media / prateek / HD-E1 / Müzik'e sembolik bağlantı

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.