Recherche du fichier d'origine d'un lien symbolique


20

Disons donc que j'ai un lien symbolique d'un fichier dans mon répertoire personnel vers un autre fichier sur une partition différente. Comment trouver l'emplacement cible du fichier lié? Par cela, je veux dire, disons que j'ai file2dans /home/user/; mais c'est un lien symbolique vers un autre file1. Comment pourrais-je trouver file1sans avoir à parcourir manuellement chaque partition / répertoire pour trouver le fichier?


1
Veuillez développer le "fichier d'origine". Et si file1est un lien symbolique vers file0? Voulez-vous trouver la dernière cible de votre lien symbolique ( file0) ou juste la suivante ( file1)?
don_crissti

Réponses:


26

Essaye ça :

readlink -f /path/file

(dernière cible de votre lien symbolique s'il y a plus d'un niveau)

Si vous voulez juste le prochain niveau de lien symbolique, utilisez:

readlink /path/file

je n'obtiens aucune sortie
k-Rocker

Vous devriez en avoir un! Erreur ou chemin
Gilles Quenot

non rien: user@shell a5$ readlink -f ./student1.javaet je reçoisuser@shell a5$
k-Rocker

nvm, mon lien symbolique n'a pas été correctement configuré, je ne sais pas pourquoi. mais j'en ai fait un nouveau et ça marche, merci.
k-Rocker

2
FWIW readlink /path/filerenverra la prochaine cible.
don_crissti

2

1.

ls -l bin

produire

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

2.

file bin

produire

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

3.

stat bin

produire

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

ok et bien j'essaye de faire un script, alors comment les utiliser? im nouveau pour linux.
k-Rocker

1
@ k-Rocker Si vous expliquez ce que vous avez l'intention de faire, ce serait mieux.
Costas

1

Manière la plus simple: cdoù se trouve le lien symbolique et faire ls -lpour lister les détails des fichiers.

La partie à droite ->après le lien symbolique est la destination vers laquelle il pointe.

Ex:

lrwxrwxrwx 1 userName groupName 22 janvier 17 13:29 Lien vers temp.txt -> /home/user/temp.txt

Ici, nous avons "Lien vers temp.txt" qui pointe vers ( ->) "/home/user/temp.txt".

Mais, comme le souligne @Gilles Quenot , vous pouvez aussireadlink -f /path/to/symbolic_link


0

Expansion sur Costas

Supposons que vous ayez

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

Dans un script, vous pouvez le faire (utiliser des backticks)

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

Alors vous avez

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

Une autre méthode (à laquelle on n'a pas répondu précédemment) pour trouver des fichiers de liens consiste à utiliser la commande ci-dessous,

file -h <path_to_dir>/* | grep link

Commande :

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

Sortie :

/ home / prateek / Musique: lien symbolique vers / media / prateek / HD-E1 / Musique

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.