21

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

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

2 ответа2

40

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

mkdir -- -p

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

mv -- "$filename"

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

18

mkdir ./-p

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .