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 file2
dans /home/user/
; mais c'est un lien symbolique vers un autre file1
. Comment pourrais-je trouver file1
sans avoir à parcourir manuellement chaque partition/répertoire pour trouver le fichier?
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
Modifier 2020:
maintenant, GNU coreutils propre realpath
:
realpath /path/file
semblable à readlink -f
par défaut
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/»
Manière la plus simple: cd
où se trouve le lien symbolique et faites ls -l
pour répertorier les détails des fichiers.
La partie à droite de ->
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 @ Gilles Quenot le souligne , vous pouvez aussi simplement faire readlink -f /path/to/symbolic_link
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 astuces)
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
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