Comment enregistrer dans un répertoire dont le nom commence par un «-» (moins)?
10
Nous avons certains dossiers où les noms commencent par un "-". Si j'essaye de les entrer avec le terminal, cdinterprète le "-" comme option. Comment pourrais-je gérer cela?
Il serait sage d'éviter de tels caractères dans les noms de répertoire / dossier.
Mindwin
Ne pourriez-vous pas simplement faire cd '-my-directory'?
OldBunny2800
@ oldbunny2800 Avez-vous essayé cela?
nohillside
1
@ OldBunny2800 Non. Les citations empêchent le shell de traiter les caractères séparément; les chaînes commençant par des tirets sont traitées comme des options (ou non) par la commande qui reçoit les arguments, quelle que soit la façon dont ces chaînes ont été présentées au shell.
chepner
1
@patrix Je l'ai fait juste après avoir posté le commentaire, puis j'ai été distrait par d'autres manigances du terminal, puis j'ai oublié mon commentaire. :) Chepner ohhh, cela a plus de sens.
OldBunny2800
Réponses:
20
Cela devrait simplement fonctionner:
cd /path/to/-folderthatstartswithdash
MODIFIER :
Selon cette question , cela fonctionne si vous souhaitez uniquement saisir le nom:
La --méthode est la bonne réponse ... elle fonctionnera avec la plupart des utilitaires standard qui acceptent un nom de fichier comme argument et évite d'avoir à qualifier complètement le chemin.
Kaithar
La --méthode fonctionne car elle "désactive" l'analyse des arguments.
Tony Williams
3
Pourquoi la restriction "si vous ne voulez saisir que le nom"? Si vous avez besoin de plus d'arguments, mettez-les juste avant le --.
Federico Poloni
@FedericoPoloni Je dis juste que si vous ne voulez pas le chemin complet, vous pouvez utiliser celui-ci. Tous les autres arguments doivent précéder le -.
Tom Shen
19
cd ./-folder
fonctionne généralement assez bien ici (et aussi avec d'autres commandes)
Une bonne chose à propos de cette solution est qu'elle fonctionne avec n'importe quel programme ou commande, pas seulement avec 'cd'; cela ne dépend pas du fait que la commande ou le programme ait un comportement spécial comme "-" pour changer l'interprétation des arguments suivants.
Larry Gritz
-5
Mettre le nom entre guillemets devrait fonctionner.
Pourquoi cela fonctionnerait-il? Comment l'utilitaire va-t-il connaître la différence? La citation est faite par le shell, après tout, le tableau d'arguments que l'utilitaire reçoit sera exactement le même dans les deux cas. J'avoue que je n'ai pas essayé votre solution, mais d'après le peu que je connais sur les obus, il semble assez évident que cela ne peut pas fonctionner.
Jörg W Mittag
Cela devrait fonctionner sur Windows IIRC, et c'est ce à quoi j'ai pensé en premier, mais je peux confirmer que cela ne fonctionne pas sur mac.
Cullub
2
Si cela fonctionne sous Windows, c'est uniquement parce que le modèle de ligne de commande de Windows est tout à fait ridicule et incohérent. Ou tout simplement parce que les commandes Windows ne sont pas traitées -comme un caractère d'option. Mais il n'y a aucun moyen de citer devrait pouvoir changer ce comportement.
cd '-my-directory'
?Réponses:
Cela devrait simplement fonctionner:
MODIFIER :
Selon cette question , cela fonctionne si vous souhaitez uniquement saisir le nom:
la source
--
méthode est la bonne réponse ... elle fonctionnera avec la plupart des utilitaires standard qui acceptent un nom de fichier comme argument et évite d'avoir à qualifier complètement le chemin.--
méthode fonctionne car elle "désactive" l'analyse des arguments.--
.fonctionne généralement assez bien ici (et aussi avec d'autres commandes)
la source
Mettre le nom entre guillemets devrait fonctionner.
la source
-
comme un caractère d'option. Mais il n'y a aucun moyen de citer devrait pouvoir changer ce comportement.