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é.
rmdir
mais j'ai échoué avec les mêmes erreurs.Réponses:
La plupart des utilitaires (tous compatibles POSIX sauf pour
test
etecho
) prennent en charge une option de "fin des options"--
, vous pouvez donc exécuter: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
au lieu d'un
mv "$filename"
nom de fichier simple ou, pire encore, non cité.la source
mkdir ./-p
Gardez à l'esprit que la plupart des autres programmes devraient utiliser le même "truc".
la source