Comment créer un répertoire nommé '-p' sous Linux avec Bash? [dupliquer]


22

Dans Bash, comment pourrais-je créer un répertoire nommé -p?

mkdir -péchoué.
mkdir "-p"échoué.
mkdir "\-p"échoué.
mkdir \-péchoué.


1
Notez que tous ces éléments tentent d'échapper au paramètre de bash. Puisqu'il s'agit du même caractère échappé que non échappé, tous ces éléments, à l'exception du troisième, enverront simplement la chaîne "-p" à mkdir, qui l'analysera en option. L'analyse des options n'est pas effectuée dans bash, donc tout moyen de contourner cela (décrit dans les réponses ci-dessous) est une fonctionnalité de mkdir (ou plutôt, un manque de bogue).
Score_Under

11
Je dois vous demander pourquoi vous souhaitez un tel répertoire. Ce serait un PITA à utiliser.
Daniel R Hicks

3
@DanielRHicks: J'ai créé ce dossier par erreur, mais je ne sais pas comment le supprimer.
Jichao

4
La question ne devrait-elle pas alors être "Comment supprimer un répertoire nommé '-p' sous Linux avec Bash"?
chepner

@chepner: Parce que ce sont les mêmes problèmes en fait. J'ai essayé de supprimer le répertoire avec rmdirmais j'ai échoué avec les mêmes erreurs.
Jichao

Réponses:


40

La plupart des utilitaires (tous compatibles POSIX sauf pour testet echo) prennent en charge une option de "fin des options" -- , vous pouvez donc exécuter:

mkdir -- -p

Cela est particulièrement utile lorsque vous renommez ou supprimez des fichiers qui pourraient potentiellement commencer par un tiret. Dans les scripts, vous devez toujours utiliser

mv -- "$filename"

au lieu d'un mv "$filename"nom de fichier simple ou, pire encore, non cité.


3
Impressionnant. C'est vraiment bon à savoir
Bruno9779

18

mkdir ./-p

Gardez à l'esprit que la plupart des autres programmes devraient utiliser le même "truc".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.