Comment créer un lien symbolique dans Terminal?

351

Quelle commande est utilisée pour créer un lien symbolique / un lien symbolique?

Patrick
la source

Réponses:

543
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Pour plus d'informations sur ln (1), reportez-vous à la page de manuel .

Le chemin d'accès au lien symbolique est facultatif. Si omis, par lndéfaut , un lien portant le même nom que la destination, dans le répertoire en cours:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Pour créer un lien symbolique afin de remplacer un répertoire système (par exemple, si vous souhaitez faire /Userspointer un autre lecteur de disque), vous devez désactiver la protection de l'intégrité du système . Vous pouvez le réactiver une fois le lien symbolique créé.

grg
la source
63
Si seulement les pages de manuel étaient aussi claires que votre réponse!
Adrian Lynch
permission refusée: S pouvez-vous me donner un indice? essayer de créer un lien symbolique pour les utilisateurs afin que je puisse l'utiliser sur un autre disque dur et ssd a juste un lien symbolique. merci
Ewoks
2
@patrix J'ai modifié ma réponse pour clarifier; n'hésitez pas à éditer plus loin.
grg
4
Fait amusant: l' original n'a pas besoin d'exister réellement. La commande ln -s "This directory is no longer in use" READMEserait parfaitement légitime et toute personne exécutant ls -lverrait le message.
Edward Falk
1
Pour référence future: Vous n'avez pas besoin de déplacer / Utilisateurs sur macOS pour économiser de l'espace. Vous pouvez modifier les chemins de répertoire de base des utilisateurs individuellement dans les Préférences Système sous Utilisateurs et groupes en cliquant avec le bouton droit de la souris sur les entrées de la liste des utilisateurs.
Peter W.
73

La commande s'appelle ln. Si utilisé avec l'option, -sil créera un lien symbolique dans le répertoire actuel:

ln -s /any/file/on/the/disk linked-file
nohillside
la source
1
Le fichier lié doit-il exister en premier? Je reçois une erreur de fichier non trouvé sur la cible.
AlxVallejo
2
Le fichier non (vous obtenez un message d'erreur si c'est le cas), mais tous les répertoires de n'importe quel chemin. Si vous êtes bloqué, n'hésitez pas à poser une nouvelle question en utilisant le bouton Poser une question en haut à droite. Inclure un lien vers cette question pour fournir un contexte.
nohillside
Le lien symbolique ne doit pas exister avant d’exécuter cette commande. Mais un chemin valide est requis pour autant que je sache. Si le dossier du fichier de sortie n'existe pas avant d'exécuter cette commande, vous obtiendrez également une No such file or directoryerreur.
Deniz Kaplan
34

Je sais que cette question concerne explicitement le terminal, mais si vous êtes dans GUI Land et que vous ne souhaitez pas entrer dans le terminal, vous pouvez utiliser SymbolicLinker . Cela met une option "Créer un lien symbolique" dans le menu Services du Finder.

Un menu contextuel pour un dossier, affichant un sous-menu "Services", avec "Créer un lien symbolique" mis en évidence

Un menu contextuel pour un lien symbolique, avec "Créer un lien symbolique" mis en évidence

Ben Leggiero
la source
3
J'adorerais savoir pourquoi cela a été rejeté afin que je puisse désormais fournir des réponses de meilleure qualité :)
Ben Leggiero
10
probablement parce que la question était "Comment puis-je créer un lien symbolique dans Terminal?" Mais je ne vous vote pas :)
vedrano
1
@ EdwardFalk Je pense qu'à El Capitan, vous pouvez tenir Command+ Optionen faisant glisser un fichier ... mettra à jour la réponse plus tard
Ben Leggiero
1
@BenLeggiero Cela fait un alias.
Andy Stewart
2
@BenLeggerio, La différence est expliquée ici: apple.stackexchange.com/questions/2991/…
MiB
28

C'est juste ln -s <source> <destination>.

TheSqrtMinus1
la source
5

ln -s /some/dir/ ~/Desktop/dir

Vous pouvez également créer un lien symbolique pour répertoire en utilisant la même commande

ln -s "$(pwd)" ~/Desktop/dir

Pour créer un lien symbolique vers le répertoire actuel dans lequel vous vous trouvez.

Gerald
la source
2
Un simple .(point) donnera le pwd. Pas besoin d'arguments fantaisistes :)
mylogon
@mylogon hahaha j'aime trop penser parfois. simplifié ma réponse!
Gerald
@mylogon je viens de me rendre compte que ça ne .marche pas sur macOS. Je n'ai pas encore essayé Linux. L'utilisation a ./eu pour résultat ce foo -> ./fooqui pointe vers lui-même.
Gerald
Quelle est la commande complète que vous avez tapée?
mylogon