J'ai téléchargé lessn sur mon serveur Web et je l'ai décompressé.
Il contient un dossier nommé -
. Je supposais que je savais comment gérer cela, mais ce n'est pas le cas.
J'ai essayé cd -- -
, mais cela n'a pas l'effet escompté. L'utilisation de guillemets ne semble pas l'affecter non plus. J'ai mis des barres obliques partout, en vain.
Quelle est la bonne façon de changer dans ce dossier ?
Réponse acceptée :
Vous voulez éviter qu'il ne soit un paramètre, nous essayons donc d'y ajouter quelque chose. Le répertoire courant est accessible avec .
, donc le sous-dossier -
accessible alternativement avec ./-
.
cd ./-
La raison pour laquelle cd -- -
ne fonctionne pas parce que cela est implémenté différemment si vous comparez rm
(voir man rm
) en cd
(voir man bash
ou man cd
), cd
a une interprétation différente qui voit -
en paramètre (voir man bash
ou man cd
).
Il convient également de noter que cd
est une fonction intégrée du shell, comme on peut le lire dans cette réponse :
cd
n'est pas une commande externe - c'est une fonction intégrée du shell. Il s'exécute dans le contexte du shell actuel et non, comme le font les commandes externes, dans un contexte fork/exec en tant que processus séparé.
Cela explique pourquoi l'implémentation est différente, car Bash et Coreutils sont deux choses différentes.
Supposons simplement que vous ne le croiriez pas, comment le confirmons-nous ? Utilisez which
et type
.
$ which cd && type cd
which: no cd in (/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2:/usr/games/bin
cd is a shell builtin
$ which rm && type rm
/bin/rm
/bin/rm is /bin/rm