Как создать каталог с именем '-p' в Linux с помощью Bash? [Дубликат]


22

В Bash, как я могу создать каталог с именем -p?

mkdir -pне удалось.
mkdir "-p"не удалось.
mkdir "\-p"не удалось.
mkdir \-pне удалось.


1
Обратите внимание, что все они пытаются экранировать параметр для bash. Так как он экранирован так же, как и не экранированный, все они, кроме третьего, просто отправят строку «-p» в mkdir, который будет анализировать ее как опцию. Синтаксический анализ параметров в bash не выполняется, поэтому любой способ обойти это (описанный в ответах ниже) является функцией mkdir (или, скорее, отсутствием ошибки).
Score_Under

11
Должен спросить, почему вы хотите такой каталог. Это было бы PITA для использования.
Даниэль Р Хикс

3
@DanielRHicks: я создал эту папку по ошибке, но не знаю, как ее удалить.
Jichao

4
Не должен ли тогда быть вопрос "Как удалить каталог с именем '-p' в Linux с помощью Bash"?
chepner

@chepner: Потому что на самом деле это одни и те же проблемы. Я пытался удалить каталог с, rmdirно не с теми же ошибками.
Джичао

Ответы:


40

Большинство утилит (все POSIX-совместимые, кроме testи echo) поддерживают опцию «end of options» -- , поэтому вы можете запустить:

mkdir -- -p

Это особенно полезно при переименовании или удалении файлов, которые потенциально могут начинаться с тире. В скриптах вы всегда должны использовать

mv -- "$filename"

вместо простого mv "$filename"или, что еще хуже, без кавычек имя файла.


3
Потрясающе. Это действительно полезно знать
Bruno9779

18

mkdir ./-p

Имейте в виду, что большинство других программ должны будут использовать тот же «трюк».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.