В Bash, как я могу создать каталог с именем -p?
mkdir -p не удалось.
mkdir "-p" не удалось.
mkdir "\-p" не удалось.
mkdir \-p не удалось.
Большинство утилит (все POSIX-совместимые, кроме test и echo) поддерживают опцию "end of options" -- так что вы можете запустить:
mkdir -- -p
Это особенно полезно при переименовании или удалении файлов, которые потенциально могут начинаться с тире. В скриптах вы всегда должны использовать
mv -- "$filename"
вместо простого mv "$filename" или, что еще хуже, без кавычек.
mkdir ./-p
Имейте в виду, что большинство других программ должны использовать тот же "трюк".