web-dev-qa-db-fra.com

Comment créer un lien symbolique vers root

Je souhaite créer un lien symbolique vers le dossier racine (/) de mon répertoire personnel. Cependant, si j'essaie cela, je reçois

~$ ln -s /
ln: failed to create symbolic link './': File exists

Je peux le faire en utilisant Nautilus Ctrl+D, bien sûr, alors je sais que c'est possible.

Comment faire pour utiliser le terminal?

13
Ankur S

Il vous manque le nom du lien, il devrait être:

cd ~
ln -s / root

Ce qui créerait alors un lien symbolique appelé racine dans votre répertoire personnel. Donc, l'utilisation correcte est:

ln -s <target> <link-name>

Le message d'erreur que vous voyez est que ./ existe toujours et qu'un lien ne peut pas être créé avec ce nom. Le mieux est d'utiliser la commande ln2 avec les deux paramètres pour éviter un mauvais couplage.

De man ln :

SYNOPSIS

(1st form) ln [OPTION]... [-T] TARGET LINK_NAME  
(2nd form) ln [OPTION]... TARGET  
(3rd form) ln [OPTION]... TARGET... DIRECTORY  
(4th form) ln [OPTION]... -t DIRECTORY TARGET...  

DESCRIPTION

Dans le premier formulaire, créez un lien vers TARGET avec le nom LINK_NAME. Dans le deuxième formulaire, créez un lien vers TARGET dans le répertoire en cours. Dans les troisième et quatrième formes, créez des liens vers chaque TARGET in DIRECTORY. Créez des liens physiques par défaut, liens symboliques avec --symbolic. Par défaut, chaque destination (nom du nouveau lien) ne devrait pas déjà exister4. Lors de la création de liens physiques, chaque TARGET doit exister. Les liens symboliques peuvent contenir du texte arbitraire; s'il est résolu ultérieurement, un lien relatif est interprété par rapport à son répertoire parent.

Les arguments obligatoires pour les options longues sont également obligatoires pour les options courtes.

OPTIONS

Le dernier paramètre, <link-name>, correspond par défaut à la dernière partie de la cible. Ainsi, lorsque la cible est /path/dir, le nom du lien par défaut sera dir s'il n'est pas spécifié.1 Et si, par exemple, vous créez ~/etc avec mkdir ~/etc, puis exécutez ln -s /etc dans ~, le lien ne peut pas être créé car le nom/répertoire existe déjà.3

Et vous pouvez voir le lien créé dans votre répertoire personnel (ici, à titre d'exemple, vous êtes libre de le nommer comme vous le souhaitez):

$ ls -l ~/root
lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

1Merci à @ thomasrutter pour l'avoir signalé.
2Voir aussi man link et man symlink
3Merci à @ steeldriver pour avoir fourni un exemple dans les commentaires.
4Partie soulignée pour que le texte soit signalé car il est pertinent pour la question.

17
Videonauth