mkdir-p в Mac
Я читал описание Man-страницы OSX. Он имеет следующее описание относительно mkdir -p:
-p
Создайте промежуточные каталоги по мере необходимости. Если этот параметр не указан, то полный префикс пути каждого операнда должен уже существовать. С другой стороны, если указан этот параметр, то не будет сообщаться об ошибке, если каталог, заданный в качестве операнда, уже существует. Промежуточные каталоги создаются с битами разрешений rwxrwxrwx (0777) как изменено текущей umask, плюс разрешение на запись и поиск для владельца.
Я не совсем следую этому описанию. особенно "если этот параметр не указан, то полный префикс пути каждого операнда должен уже существовать. С другой стороны, если указан этот параметр, то не будет сообщаться об ошибке, если каталог, заданный в качестве операнда, уже существует."
Есть ли у кого-нибудь пример относительно этого объяснения?
3 ответа:
Учитывая эту структуру каталогов:
/ foo/ bar/ baz/Очевидно, что это сработает:
mkdir /foo/xЭто будет не работать:
mkdir /foo/x/yПоскольку
/foo/xне существует, каталог/foo/x/yне может быть создан под ним. Префикс/foo/x/необходимо существовать для того, чтобы творить/foo/x/y.Вот где появляется
-p. Это работает:mkdir -p /foo/x/y
/foo/xбудет неявно создаваться вместе с/foo/x/y.Если вы попытаетесь:
mkdir /bar/bazВы получите ошибка, что каталог уже существует. Однако, если вы это сделаете:
mkdir -p /bar/bazВы не получите ошибку, она просто молча проигнорирует все уже существующие каталоги и будет довольствоваться результатом, ничего не делая.
Представьте, что у вас есть пустая папка, и вы хотите создать поддиректорию под названием "d1" и поддиректорию внутри "d1" под названием "d2". Обычно вы должны сделать это:
mkdir d1 mkdir d1/d2С помощью опции "- p " вы можете попросить mkdir создать промежуточный каталог (d1) для вас:
mkdir -p d1/d2Бит, о котором вы спрашиваете, говорит, что если "d1" уже существует, и вы используете "mkdir-p", то это не будет иметь значения, что он уже есть, и не будет никаких сообщений об ошибках.