Menemukan file asli dari tautan simbolik

20

Jadi katakanlah saya memiliki tautan simbolis dari sebuah file di direktori home saya ke file lain di partisi yang berbeda. Bagaimana saya menemukan lokasi target dari file yang tertaut? Maksud saya, katakanlah saya ada file2di /home/user/; tapi itu adalah tautan simbolis ke yang lain file1. Bagaimana saya menemukan file1tanpa harus secara manual melalui setiap partisi / direktori untuk menemukan file?

k-Rocker
sumber
1
Harap perluas "file asli". Bagaimana jika file1symlink ke file0? Apakah Anda ingin menemukan target terakhir symlink Anda ( file0) atau hanya yang berikutnya ( file1)?
don_crissti

Jawaban:

26

Coba ini :

readlink -f /path/file

(target terakhir symlink Anda jika ada lebih dari satu level)

Jika Anda hanya ingin tautan simbolik level selanjutnya, gunakan:

readlink /path/file
Gilles Quenot
sumber
Saya tidak mendapatkan hasil
k-Rocker
Anda harus memilikinya! Galat atau lintasan
Gilles Quenot
tidak ada apa-apa: user@shell a5$ readlink -f ./student1.javadan saya dapatuser@shell a5$
k-Rocker
nvm, tautan simbolis saya tidak diatur dengan benar, tidak yakin mengapa. tetapi saya membuat yang baru dan berhasil, terima kasih.
k-Rocker
2
FWIW readlink /path/fileakan mengembalikan target berikutnya.
don_crissti
2

1.

ls -l bin

menghasilkan

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

2.

file bin

menghasilkan

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

3.

stat bin

menghasilkan

File: «bin» -> «../Gdrive/bin/»
Costas
sumber
ok well im mencoba membuat skrip, jadi bagaimana saya akan menggunakan ini? Saya baru mengenal linux.
k-Rocker
1
@ k-Rocker Jika Anda menjelaskan apa yang ingin Anda lakukan, akan lebih baik.
Costas
1

Cara termudah: cdke tempat tautan simbolik berada dan lakukan ls -luntuk mendaftar detail file.

Bagian di sebelah kanan ->setelah tautan simbolik adalah tujuan yang ditunjuknya.

Ex:

lrwxrwxrwx 1 userName groupName 22 Jan 17 13:29 Tautan ke temp.txt -> /home/user/temp.txt

Di sini kita memiliki "Tautan ke temp.txt" yang menunjuk ke ( ->) "/home/user/temp.txt".

Tapi, seperti yang ditunjukkan @Gilles Quenot , Anda juga bisa melakukannyareadlink -f /path/to/symbolic_link

Gabriel Staples
sumber
0

Memperluas Costas

Misalkan Anda punya

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

Dalam skrip yang dapat Anda lakukan (gunakan backticks)

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

Maka kamu telah

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
RWolfe
sumber
0

Metode lain (yang tidak dijawab sebelumnya) untuk menemukan file tautan adalah dengan menggunakan perintah di bawah ini,

file -h <path_to_dir>/* | grep link

Perintah :

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

Keluaran :

/ home / prateek / Musik: tautan simbolik ke / media / prateek / HD-E1 / Musik

Prateek Joshi
sumber