24 votes

Comment puis-je créer un lien symbolique vers un répertoire contenant un espace ?

J'essayais de créer un lien symbolique en utilisant la commande suivante :

ln -s "~/Foo Bar/" Foo

... mais ça n'a pas fonctionné (c'est-à-dire quand je vais dans le Finder et j'essaie de double-cliquer dessus, il dit que ça pointe vers un chemin invalide et me demande de supprimer l'alias ou de le corriger). J'ai dû renommer le dossier en FooBar et ensuite exécuter la commande suivante :

ln -s ~/FooBar/ Foo

Comment puis-je créer le lien sans devoir supprimer l'espace du nom du dossier?

Je cherche un moyen de le faire dans le Terminal et non dans l'interface utilisateur du Finder.

1 votes

Pendant que Gordon Davisson a raison, vous devriez savoir que les alias et les liens symboliques (symlinks) sont différents. ln -s crée des symlinks. Le Finder crée des alias. Ils sont presque identiques dans un usage pratique et commun, mais il est important de reconnaître qu'ils sont différents. Les symlinks pointent vers un chemin de répertoire, tandis que les alias pointent vers un fichier. Si les deux pointent vers le même fichier et que vous déplacez le fichier dans un dossier différent, puis créez un nouveau fichier dans l'ancien dossier, l'alias pointera vers l'original déplacé et le symlink pointeront vers le nouveau fichier.

1 votes

@Cajun : merci pour la clarification. Il est confus que le finder montre la propriété "Type" d'un lien symbolique comme "Alias".

4 votes

La complétion de tabulation est également une merveilleuse chose, si vous faisiez ceci : ln -s ~/Foo (où désigne la touche réelle (tab) sur votre clavier), s'il n'y a qu'un seul dossier qui commence par "Foo" dans ~ alors le chemin sera automatiquement étendu à ~/Foo\ Bar/.

42voto

Gordon Davisson Points 30215

Les guillemets empêchent ~ d'être étendu à votre dossier personnel, vous devez donc soit mettre en citation uniquement la partie avec l'espace :

ln -s ~/"Foo Bar/" Foo

Remarque : il n'est pas important de mettre en citation exactement combien tant que l'espace est dans la portion citée et que le ~/ ne l'est pas. ~/Foo" "Bar/, ~/"Foo Bar"/, ~/Fo"o B"ar/ etc sont tous équivalents. De plus, les simples et doubles guillemets ont le même effet sur les espaces (bien qu'ils diffèrent sur les autres caractères), donc ~/'Foo Bar/', ~/Foo' 'Bar/ etc fonctionneraient aussi.

Vous pourriez également utiliser un échappement pour éviter que l'espace ne soit traité comme un séparateur :

ln -s ~/Foo\ Bar/ Foo

5 votes

Vous pouvez sérieusement citer JUSTE l'espace ? C'est génial !

0 votes

Ou "$HOME/Foo Bar/".

0 votes

@wchargin Ça fonctionnera. Notez que contrairement à ~, $HOME doit être placé entre guillemets doubles pour éviter toute confusion si votre répertoire personnel contient des espaces ou d'autres caractères bizarres. "$HOME/Foo Bar/" (comme vous le suggérez), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/, etc fonctionneront.

0voto

J'ai testé moi-même. Je n'ai pas de problème avec un espace à l'intérieur :

    $ ln -s "/Users/joe/test/foo bar"/ linkToFoo_Bar

ls montre : $ linkToFoo_Bar -> /Users/joe/test/foo bar/ et ça fonctionne dans le terminal et dans le Finder sans aucun problème.

10 votes

Vous avez utilisé un chemin complet, pas l'assistant ~.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X