J'ai un nom de dossier avec un espace entre les mots. J'utilise une commande cd
que je peux pour déplacer dans un dossier des besoins. Comment puis-je écrire de l'espace dans Terminal sous OS X? J'ai essayé de suivre
MacBook-Pro:TestDrop Alexsander$ cd October Fall
-bash: cd: October: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd OctoberFall
-bash: cd: OctoberFall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October/ Fall
-bash: cd: October/: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October/Fall
-bash: cd: October/Fall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October-Fall
-bash: cd: October-Fall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October_Fall
Cela ne fonctionne pas parce que le shell divise les arguments en espaces et pense donc que vous appelez cd
avec les deux arguments October
et Fall
. Échappez à l'espace avec \
comme ceci:
cd October\ Fall
Une autre façon est de la mettre entre guillemets simples ou doubles, comme ceci
cd 'October Fall'
cd "October Fall"
Ou simplement faites glisser le dossier dans le terminal.
Mais pourquoi ne pas simplement taper quelques caractères et appuyer sur Tab pour l'auto-complétion?
Le shell effectue le fractionnement de mots sur des arguments avant de les transmettre à la commande que vous spécifiez. Cela signifie qu'il prend la ligne (ou, dans certains cas, les lignes) et la scinde en plusieurs mots, par défaut dans les espaces, les tabulations et les nouvelles lignes.
Comme Lưu Vĩnh Phúc l'a mentionné, des barres obliques inverses et des guillemets simples peuvent être utilisés pour empêcher le fractionnement de Word sur des caractères simples ou sur tout ce qui les sépare, respectivement. Les guillemets doubles fonctionnent aussi:
cd "October Fall"
Dans ce cas particulier, '
et "
se comportent de manière identique, mais ils présentent des différences .
'
désactive toutes les interprétations de caractères spéciaux (même \
), mais ne peut contenir un '
. "
désactive uniquement le fractionnement de mots et le développement de noms de fichiers (le développement de noms de fichiers est comme ls *.mp3
pour répertorier tous les fichiers dont le nom se termine par .mp3
. Le *
déclenche ici le développement de noms de fichiers). Étant donné que "
autorise certaines extensions d'arguments, il est utile si, par exemple, vous avez un nom de fichier avec un espace dans une variable:
$ filename=October\ Fall
$ # ^-- Still need a backslash or quoting to prevent Word
$ # splitting here, but the backslash/quotes will not be stored
$ cd $filename
bash: cd: October: No such file or directory
$ cd '$filename'
bash: cd: $filename: No such file or directory
$ cd "$filename"
$ pwd
/path/to/October Fall
Notez que '
et "
ne provoquent pas (par défaut) le fractionnement de Word. Par conséquent, ceci, bien que désordonné, fonctionnerait pour vous:
cd "Oct"'ober F'"all"
Ceci est utile si vous avez quelque chose comme un répertoire nommé Octobers' $HOME
. Le '
qu'il contient romprait une seule paire de citations '
et, entre guillemets "
, $HOME
sera étendu à votre répertoire personnel. Mais aucune de ces combinaisons (et bien d’autres) ne fonctionnera en toute sécurité:
cd Octobers\'\ \$HOME
cd "Octobers' "'$HOME'
cd "Octobers' "\$HOME
cd "Octobers' \$HOME"
Une autre chose à garder à l'esprit est que beaucoup de coques modernes offrent la possibilité de compléter les onglets. Bash et Zsh (probablement aussi Ksh, mais je ne l'ai pas testé) peuvent étendre une partie du nom d'un répertoire en son nom complet, avec l'échappement sécurisé via \
s. Donc, cd Octobers<tab>
devient cd Octobers\'\ \$HOME
. Vous devrez peut-être appuyer plusieurs fois sur la touche Tab s'il y a plusieurs correspondances. En outre, la complétion par les onglets peut ne pas être activée par défaut dans votre shell. Consultez la documentation de votre shell.
Si votre dossier ou votre fichier porte le nom "Information de sauvegarde automatique", il contient "espace" ou un caractère spécial.
>> cd Autosave\ Information
vous pouvez utiliser des caractères spéciaux à l’aide de "\" ou indiquer au terminal que le nom que vous donnez est une chaîne.
>> cd "Autosave Information"