Comment créer un lien symbolique vers root

13

Je veux créer un lien symbolique vers le /dossier root ( ) dans mon répertoire personnel. Mais si j'essaye, 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, donc je sais que c'est possible.

Comment faire en utilisant le terminal?

Ankur S
la source
Bien que ce soit une bonne question, je veux savoir pourquoi vous voudriez faire cela? Est-ce trop difficile à taper cd /? Ou aimez-vous créer un lien qui continuerait à parcourir une boucle encore et encore et encore? exemple: cd root/home/terrance/root/home/terrance/root/home/terrance/root. . . etc.
Terrance
pas vraiment .vous pourriez le faire sans avoir besoin de créer un lien vers root. en fait, j'étais juste curieux de savoir pourquoi vous ne pouvez pas le faire
Ankur S
C'est suffisant. Merci de répondre à ma question. =)
Terrance

Réponses:

17

Vous manquez le nom du lien, il devrait être:

cd ~
ln -s / root

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

ln -s <target> <link-name>

Le message d'erreur que vous voyez est, qui ./existe toujours et un lien ne peut pas être créé avec ce nom, le mieux est d'utiliser la lncommande 2 avec les deux paramètres pour éviter une mauvaise liaison.

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...  

LA DESCRIPTION

Dans le 1er formulaire, créez un lien TARGETavec le nom LINK_NAME. Dans le 2ème formulaire, créez un lien vers TARGETdans le répertoire courant. Dans les 3e et 4e formes, créez des liens vers chaque TARGETentrée DIRECTORY. Créez des liens durs par défaut, des liens symboliques avec --symbolic. Par défaut, chaque destination (nom du nouveau lien) ne devrait pas déjà exister 4 . Lors de la création de liens durs, chacun TARGETdoit 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, par <link-name>défaut, correspond à la dernière partie de la cible. Ainsi, lorsque la cible est /path/dirle nom du lien sera par défaut dirs'il n'est pas spécifié. 1 Et si par exemple vous créez ~/etcavec mkdir ~/etcpuis exécutez ln -s /etcen ~elle ne peut pas créer le lien , 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, bien sûr, vous êtes libre de le nommer comme bon vous semble):

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

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

Videonauth
la source
mon seul doute qui reste est pourquoi une commande comme le ln -s /etctravail devrait-elle mais pas celle-ci? Merci pour la réponse,
Ankur S
Il est créé car il a un nom de répertoire, /peut être root ou il peut être un composant de chemin d'accès afin que le programme ne puisse pas savoir ce que l'on entend maintenant. /etcest juste un chemin clairement identifiable.
Videonauth
7
@AnkurSonawane parce ./qu'il existera toujours - ce ./etcn'est pas si probable. Essayez d' mkdir etcabord, puis ln -s /etc- vous obtiendrez égalementFile exists
Steeldriver
8
Le paramètre final, nom du lien, correspond par défaut à la dernière partie de la cible s'il est omis. Ainsi, lorsque la cible est /some/dirle nom du lien sera par défaut dirs'il n'est pas spécifié. Cependant, lorsque l'objectif est juste /, cela ne fonctionnera pas.
thomasrutter
Je ne pense pas que cela soit extrêmement significatif, mais l'explication de @steeldriver semble plus raisonnable compte tenu de la File Existssortie. Ce n'est pas important de toute façon car c'est le cas dégénéré
Ankur S