Question Quelle est la différence entre le lien symbolique et le raccourci?


Quelle est la différence entre un lien symbolique et un raccourci?


67
2018-03-06 16:21


origine




Réponses:


Je pense que le point important est que les raccourcis ne sont qu'un fichier. Ils ont une taille (une petite, qui fait simplement référence à l'endroit où ils pointe) et ils ont besoin d'une application pour prendre en charge ce type de fichier afin d'être utilisé.

Un lien symbolique est au niveau du système de fichiers et tout le voit comme le fichier original. Une application ne nécessite aucun support particulier pour utiliser un lien symbolique.


52
2018-03-06 17:58



Commandes d'arborescence (tout comme les utilitaires Unix) find, tar, du, etc) faire besoin de connaître les liens symboliques ou ils peuvent faire des choses très stupides. Par exemple, le fait de suivre des liens symboliques en aveugle peut créer des cycles dans le système de fichiers, c’est-à-dire mal. - dmckee
@dmckee; Très bon point, bien qu'aucune application n'ait besoin d'un soutien spécifique pour les suivre, elle a besoin d'un soutien spécifique pour ne pas suis les! - Phoshi
Oui, pas besoin de soutien pour utilisation eux, mais ont besoin de savoir a propos leur. - dmckee
@Phoshi Qu'est-ce que vous voulez dire exactement par "et ils nécessitent une application pour supporter ce type de fichier afin d'être utilisé.". Pouvez-vous s'il vous plaît expliquer avec un exemple? - Geek
@Geek: Un "raccourci" est un fichier contenant le chemin du fichier d'un autre fichier. Lorsque vous le lisez, vous lisez un fichier spécialement formaté qui vous indique où regarder. Si votre application n'écoute pas et lit simplement le fichier textuellement, vous ne le suivez pas. Un lien symbolique est au niveau du système de fichiers, c'est le système de fichiers lui-même qui contient le "vrai" chemin vers les données et lorsque vous tentez d'y accéder, vous récupérez les données pointées. - Phoshi


Un "lien symbolique" peut en fait se substituer à un répertoire ou à un fichier de manière fonctionnelle et est couramment utilisé dans les environnements Unix / Linux. Bien qu'il existe apparemment un support pour cela dans Windows, je n'en ai encore vu aucune utilisation réelle.

Un "raccourci" est simplement un fichier normal qui fait référence au fichier ou au répertoire de destination, ainsi que d'autres éléments tels que l'icône à afficher. Contrairement à un lien symbolique, vous ne pouvez pas "cd ./shortcut-name" sous DOS (sous Unix / Linux, vous pouvez "cd ./symlink-name" et cela fonctionnera comme un sous-répertoire réel).

En outre, dans la plupart des applications Windows, lorsque vous cliquez sur un raccourci dans un dialogue File-> Open GUI, votre champ de nom de fichier est rempli avec le nom de fichier de ce raccourci et agit comme un sous-répertoire. un lien symbolique en tant que chemin (sans modifier le champ du nom de fichier).


18
2018-03-06 17:02



Dans Unix / Linux, il existe également des "liens physiques" qui ne sont appliqués qu’aux fichiers (pas aux répertoires). Ce sont des entrées de noms de fichiers naturels dans le système de fichiers qui, elles, pointent vers les mêmes données de fichiers que les autres entrées de noms de fichiers ailleurs (il n’est pas nécessaire que ce soit dans le même répertoire). - Randolf Richardson
@Randolf: 1) Les liens durs existent aussi dans Windows. 2) L'une des caractéristiques des raccourcis shell est le suivi automatique des cibles: si la cible est déplacée, la plupart du temps, les raccourcis continueront à fonctionner. (Dans un domaine AD, il est même possible de suivre des fichiers sur des ordinateurs, par exemple, si vous déplacez une HD ailleurs.) 3) Une utilisation des liens symboliques consiste à rediriger un fichier ou un répertoire vers un autre emplacement - ils peuvent pointer vers des fichiers (contrairement aux jonctions) et aux répertoires (contrairement aux liens durs), croiser des liens durs et AFAIK. - grawity
grawity: Merci! C'est une excellente information. - Randolf Richardson
Commentaire tardif, et je ne suis pas sûr de ne pas savoir ce que je fais avec les raccourcis, mais je devais créer un lien symbolique au lieu d’un raccourci pour mon fichier vimrc (je fais référence à un projet dotfiles que j'utilise dans un répertoire séparé). - making3


Comme d'autres l'ont mentionné, un lien symbolique est l'un des types de liens disponibles au niveau du système de fichiers, ce qui le rend transparent pour les applications. J'ai trouvé cette documentation très utile (en particulier la section "Recadrer / Dérouler / Jonctions extérieures / Liens symboliques"). Et l'outil là aussi a l'air sympa. (En mentionnant ceci, et mklink, j'espère que plus de recherches trouveront cette discussion.)

Un raccourci est un fichier, pas un lien réel, et il n'est généralement suivi avec succès qu'en tant que lien lorsqu'il est interprété par l'interface utilisateur Windows (interface utilisateur). Par exemple, lorsque vous double-cliquez sur un raccourci de dossier, Windows vous redirige vers cet autre emplacement. (Cela inclut les boîtes de dialogue génériques d'ouverture de fichier et d'enregistrement de fichier que la plupart des applications appellent.) Sur mon bureau, j'ai un raccourci vers ce dossier: C: \ ProgramData \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ G

Le nom de fichier du raccourci est: C: \ Users \ user5 \ Desktop \ Games.lnk, bien que Windows supprime l'extension .lnk et affiche simplement "Games", même si vous décochez "Masquer les extensions pour les types de fichiers connus". Mais si vous ouvrez une invite de commande et que vous faites un répertoire, vous le verrez:

C:\Users\user5\Desktop>dir "g*"
 Volume in drive C has no label.
 Volume Serial Number is 900...
 Directory of C:\Users\user5\Desktop
03/08/2014  05:30 PM             1,710 Games.lnk
               1 File(s)          1,710 bytes
               0 Dir(s)  246,818,222,080 bytes free

Je peux créer l'équivalent avec un lien symbolique en utilisant l'option \ D (pour le répertoire):

C:\Users\user5\Desktop>mklink /D mysymlink  "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G

C:\Users\user5\Desktop>cd mysymlink

C:\Users\user5\Desktop\mysymlink>

(Une jonction de répertoires (\ J) est également une option, car il s’agit d’un lien de dossier.) L’explorateur Windows, tout comme cette console et la plupart des applications, vous permettra de naviguer dans ce sous-répertoire apparent plutôt que "across" à un autre endroit ou (b) échec.

Les raccourcis ne se comportent pas comme des sous-répertoires. Je peux appeler le comportement de fichier par défaut de l'interface utilisateur Windows avec cette commande (cela ouvre le dossier "G" dans l'Explorateur Windows):

C:\Users\user5\Desktop>"Games.lnk"

Alors que mysymlink est répertorié (voir le décompte) en tant que véritable sous-répertoire et ne peut pas être lancé de cette manière:

C:\Users\user5\Desktop>dir "my*"
 Volume in drive C has no label.
 Volume Serial Number is 900...

 Directory of C:\Users\user5\Desktop

03/29/2014  06:08 PM    <DIR>          mysubdir
03/29/2014  05:40 PM    <SYMLINKD>     mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
               0 File(s)              0 bytes
               2 Dir(s)  246,816,153,600 bytes free

C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.

Inversement, vous ne pouvez pas changer de répertoire en un raccourci:

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

L'interface utilisateur Windows vous permet de cliquer avec le bouton droit de la souris pour modifier les propriétés d'un raccourci. Ou, ce qui suit montre exactement ce qui est réellement stocké dans le fichier .lnk (données binaires), bien qu'un éditeur hexadécimal afficherait mieux:

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

Alors que tenter d'exécuter Notepad sur un sous-dossier réel affiche un message d'erreur "Accès refusé" et un Bloc-notes vide.

A l'inverse, si je crée un lien symbolique (pas un lien symbolique), je peux le lancer avec le Bloc-notes. Parmi les appels notepad.exe suivants, les deux premiers fonctionnent et le troisième échoue (il ouvre le fichier .LNK, le fichier binaire gobbledegook).

C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt

C:\Users\user5\Desktop>notepad.exe "symplain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"

Ce n'est pas juste une chose de console. Copier un raccourci vers le Bloc-notes sur mon bureau et essayer de faire glisser chacun des trois éléments dessus, il présente exactement le même comportement. (Parce que glisser-déposer, contrairement au double-clic, permet à l'application d'interpréter le raccourci.)

En ce qui concerne les différences entre les liens symboliques et les jonctions des répertoires, voir cette discussion, et voici un très description utile:

"Le traitement est soumis à une différence majeure dans la manière dont Windows résout les liens symboliques et les jonctions de répertoires. Windows traite les liens symboliques sur le système local, même lorsqu'ils référencent un emplacement sur un serveur de fichiers distant. Windows traite les jonctions de répertoires faisant référence à une télécommande Le serveur de fichiers sur le serveur lui-même Les liens symboliques sur un serveur peuvent donc se rapporter à des emplacements accessibles uniquement à partir d’un client, comme d’autres volumes client, alors que les jonctions répertoires ne le permettent pas. et des répertoires.

"De nombreuses commandes de système de fichiers ont été mises à jour pour comprendre les implications des liens symboliques. Par exemple, la commande Supprimer ne respecte pas les liens, ce qui entraînerait la suppression de la cible, mais la suppression du lien. peut gérer les liens symboliques correctement, la création d'un lien symbolique requiert le nouveau privilège Créer un lien symbolique que seuls les administrateurs ont par défaut. "


9
2018-03-29 23:19





"Les liens symboliques diffèrent des raccourcis car ils offrent un   chemin transparent * vers l'objet de données souhaité, avec un raccourci   (.lnk), quelque chose doit lire et interpréter le contenu du   fichier de raccourci, puis ouvrez le fichier auquel il fait référence (c'est à dire   processus en deux étapes). Lorsqu'une application utilise un lien symbolique, elle gagne   accès immédiat à l'objet de données référencé par le lien symbolique (c'est-à-dire   est un processus en une étape). "

La source: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html


1
2018-04-27 16:05





Parfois, il est bon d'avoir un exemple fonctionnel, si mal expliquer comment j'utilise cette fonction.

J'utilise Google Drive pour sauvegarder des fichiers, mais parfois je veux sauvegarder des fichiers dans un dossier spécifique (je ne peux pas les déplacer vers ../google drive). Surtout avec Windows 10 applications universelles, les fichiers de configuration et autres sont stockés dans appdata, et la plupart du temps, je ne peux pas modifier cet emplacement.

J'utilise l'application Windows native stikynot, et je voulais sauvegarder mes notes, donc j'ai utilisé un lien symbolique ici. Google Drive reconnaît le lien en tant que fichier réel et synchronise les fichiers correctement, tandis que le fichier actuel se trouve toujours dans le dossier appdata.

Lorsque je dispose de fichiers tels que des dossiers de projet localement, que je ne souhaite pas synchroniser sur le cloud, j'utilise des raccourcis (copie, passe-> coller un raccourci).


0
2018-03-26 11:16