web-dev-qa-db-fra.com

Comment utiliser la commande cd pour accéder à un répertoire avec de l'espace

Comment utiliser "cd" pour accéder à un répertoire avec un espace, par exemple "XML 5.1 Final Fields" dans un script bash

J'ai essayé cd XML 5.1 Final Fields

Mais ça donne le No such file or directory Erreur.

Voici le script:

#! /bin/bash
xmlfolder="XML/ \/5.1/ \/Final/ \/Fields"
xmlpath="/home/george/Desktop/m5u/test/$xmlfolder"
cd $xmlpath
ls /home/george/Desktop/m5u/test/    
XML 5.1 Final Fields
~/Desktop/m5u/test$ ll
drwxr-xr-x  9 george george      4096 Feb 18 12:44 XML 5.1 Final Fields

c'est l'erreur que j'obtiens lorsque j'exécute le script

line 5: cd: /home/george/Desktop/m5u/test/XML\: No such file or directory
2
George Ulahannan

Votre variable xmlfolder est incorrecte. Ça devrait être

xmlfolder=XML\ 5.1\ Final\ Fields

ou = "Champs finaux XML 5.1"

Vous n'avez pas besoin du / dans le chemin - car ce n'est qu'un dossier. Vous n'avez pas non plus besoin du "" si vous utilisez également \. Choisissez-en un.


depuis votre modification avec la commande ls, je peux voir qu'il peut y avoir un espace à la fin du nom de votre dossier. Je vous suggère de supprimer l'espace, soit en renommant en nautilus, soit avec la commande mv.

Si vous souhaitez conserver l'espace, le nom de votre variable doit être le suivant:

xmlfolder=XML\ 5.1\ Final\ Fields\ 

ou

xmlfolder="XML 5.1 Final Fields "

Notez que si vous utilisez l'option First avec le \ caractère, vous devez également vous référer à la variable avec "", c'est à dire. "$xmlfolder".


L'erreur suggère que cd n'est pas satisfait du chemin.

Essayez de changer la commande cd à partir de ce

cd $xmlpath

à

cd "$xmlpath"

Pour être parfaitement honnête, vous ne devriez pas avoir besoin de cd dans un script bash. Il suffit de se référer à tout avec un chemin absolu.


En résumé, votre xmlfolder= la ligne doit être xmlfolder=XML\ 5.1\ Final\ Fields, et votre ligne cd doit être cd "xmlpath".

5
Tim