Trovare il file originale di un collegamento simbolico


20

Quindi diciamo che ho un collegamento simbolico di un file nella mia directory home a un altro file su una partizione diversa. Come troverei la posizione di destinazione del file collegato? Con questo, voglio dire, diciamo che ho file2dentro /home/user/; ma è un collegamento simbolico ad un altro file1. Come troverei file1senza dover passare manualmente attraverso ogni partizione / directory per trovare il file?


1
Espandi su "file originale". E se file1fosse un link simbolico a file0? Vuoi trovare l'ultimo target del tuo symlink ( file0) o solo il prossimo ( file1)?
don_crissti,

Risposte:


26

Prova questo :

readlink -f /path/file

(ultimo target del tuo link simbolico se esiste più di un livello)

Se vuoi solo il livello successivo di link simbolico, usa:

readlink /path/file

non ottengo alcun output
k-Rocker

Dovresti averne uno! Errore o percorso
Gilles Quenot,

niente di niente: user@shell a5$ readlink -f ./student1.javae ottengouser@shell a5$
k-Rocker il

nvm, il mio link simbolico non era configurato correttamente, non so perché. ma ne ho creato uno nuovo e funziona, grazie.
k-Rocker,

2
FWIW readlink /path/filerestituirà il prossimo obiettivo.
don_crissti,

2

1.

ls -l bin

produrre

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

2.

file bin

produrre

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

3.

stat bin

produrre

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

ok bene sto provando a fare uno script, quindi come dovrei usarli? Sono nuovo di Linux.
k-Rocker,

1
@ k-Rocker Se spieghi cosa intendi fare sarebbe meglio.
Costas,

1

Il modo più semplice: cddove si trova il collegamento simbolico e fare ls -lper elencare i dettagli dei file.

La parte a destra di ->dopo il collegamento simbolico è la destinazione a cui punta.

Ex:

lrwxrwxrwx 1 userName groupName 22 gen 17 13:29 Link a temp.txt -> /home/user/temp.txt

Qui abbiamo "Link a temp.txt" che punta a ( ->) "/home/user/temp.txt".

Ma, come sottolinea @Gilles Quenot , puoi anche farloreadlink -f /path/to/symbolic_link


0

Espansione su Costas

Supponi di avere

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

In uno script puoi fare (usare i backtick)

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

Allora hai

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

Un altro metodo (a cui non è stata data risposta in precedenza) per trovare i file di collegamento è utilizzare il comando seguente,

file -h <path_to_dir>/* | grep link

Comando :

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

Uscita :

/ home / prateek / Music: link simbolico a / media / prateek / HD-E1 / Music

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.