如何在Linux下使用Bash创建名为“ -p”的目录?[重复]


22

在Bash中,如何创建名为的目录-p

mkdir -p失败了
mkdir "-p"失败了
mkdir "\-p"失败了
mkdir \-p失败了


1
请注意,所有这些都试图将bash参数转义。由于转义与未转义相同,因此除第三个外,所有这些都只是将字符串“ -p”发送到mkdir,后者会将其解析为一个选项。选项解析不是在bash中完成的,因此解决此问题的任何方式(在下面的答案中都有描述)是mkdir的功能(或更确切地说,是缺少bug)。
2014年

11
要问为什么要这样的目录。这将是一个PITA。
Daniel R Hicks 2014年

3
@DanielRHicks:我错误地创建了此文件夹,但是不知道如何删除它。
Jichao 2014年

4
那么,问题不应该是“如何使用Bash在Linux下删除名为'-p'的目录”吗?
chepner 2014年

@chepner:因为它们实际上是相同的问题。我尝试使用删除目录,rmdir但失败,并出现相同的错误。
Jichao 2014年

Answers:


40

大多数实用程序(除了test和以外,所有兼容POSIX的实用程序echo)都支持“选项结束”选项 --,因此您可以运行:

mkdir -- -p

当重命名或删除可能以破折号开头的文件时,此功能特别有用。在脚本中,您应始终使用

mv -- "$filename"

而不是普通的mv "$filename",甚至更糟的是,未引用文件名。


3
太棒了 真的很高兴知道
Bruno9779 2014年

18

mkdir ./-p

请记住,大多数其他程序都需要使用相同的“技巧”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.