mkdir -p se o destino final for symlink

0

Digamos que temos:

node_modules/
   suman/

e node_modules/suman é um link simbólico

se fizermos:

mkdir -p "$PWD/node_modules/suman"

Eu assumo que mkdir -p não vai sobrescrever o link simbólico?

e se $PWD/node_modules for um link simbólico? Eu também assumo mkdir -p tratará o symlink como um diretório? Por fim, e se "node_modules" estiver vinculado a um arquivo em vez de um diretório?

    
por Alexander Mills 26.06.2018 / 22:31

2 respostas

3

Quanto a mkdir , é man bastante óbvio sobre as duas primeiras subquestões:

Create the DIRECTORY(ies), if they do not already exist.

Quanto ao link simbólico do arquivo, um experimento simples deve ser suficiente:

$ touch a
$ ln -sr a A
$ mkdir -p A/b/c
mkdir: cannot create directory ‘A’: Not a directory
    
por 26.06.2018 / 22:59
1

Eu assumirei (você não declarou explicitamente) que node_modules existe como um diretório ou link simbólico em $ PWD.

Manipulando sua última pergunta primeiro - se node_modules é um arquivo (ou é um link simbólico para um arquivo), é proibido agir como um diretório. Assim, não poderia ter / suman como subdiretório e

mkdir -p node_modules/anything

falharia com "Não é um diretório"

Se o suman existir como um arquivo (ou um link ou um link simbólico para um arquivo ou diretório) no diretório node_modules, então

mkdir -p node_modules/suman

falharia com "Arquivo existe".

Se o suman existir como um diretório (ou um link simbólico para um diretório) no diretório node_modules, então

mkdir -p node_modules/suman

não produziria nenhum erro, mas não sobrescreveria o diretório ou link simbólico existente.

    
por 26.06.2018 / 23:05