web-dev-qa-db-fra.com

Comment puis-je écrire de l'espace dans Terminal sous OS X?

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
10
Alexander Khitev

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?

29
phuclv

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.

10
8bittree

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"
0
Tanvir Hasan