mkdir -p, если конечной целью является символическая ссылка

Скажем, у нас есть:

node_modules/ suman/ 

а node_modules/sumanсимволическая ссылка

если мы делаем:

 mkdir -p "$PWD/node_modules/suman" 

Я предполагаю, что mkdir -p не перезапишет символическую ссылку?

А что если $PWD/node_modules является символической $PWD/node_modules ? Я также предполагаю, что mkdir -p будет обрабатывать символическую ссылку как каталог? И, наконец, что, если «node_modules» является символической ссылкой на файл вместо каталога?

Что касается mkdir , то man делает это совершенно очевидно в отношении первых двух подвопросов:

Создайте КАТАЛОГ (и), если они еще не существуют.

Что касается файла symlink, простого эксперимента должно быть достаточно:

 $ touch a $ ln -sr a A $ mkdir -p A/b/c mkdir: cannot create directory 'A': Not a directory 

Я предполагаю (вы не указали явно), что node_modules существует как каталог или символическая ссылка в $ PWD.

Сначала обработайте ваш последний вопрос – если node_modules – это файл (или символическая ссылка на файл), ему запрещено действовать как каталог. Таким образом, он не может иметь / suman в качестве подкаталога и

 mkdir -p node_modules/anything 

потерпит неудачу с «Не каталогом»

Если suman существует в виде файла (или ссылки, или символической ссылки на файл или каталог) в каталоге node_modules, то

 mkdir -p node_modules/suman 

потерпит неудачу с «Файл существует».

Если suman существует как каталог (или символическая ссылка на каталог) в каталоге node_modules, то

 mkdir -p node_modules/suman 

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