O mkdir -p é totalmente seguro quando a pasta de criação já existe

13

Digamos que eu tenho uma pasta:

./folder/

Dentro dele existem muitos arquivos e até subdiretórios.

Quando executo:

mkdir -p folder

Não vejo erros nem avisos. então só quero confirmar, há algo perdido ou alterado no resultado desse comando?

AGamePlayer
fonte
2
A ajuda do mkdir diz que os diretórios são criados apenas quando não estão presentes. Isso implica para mim que, quando o diretório existe, nada é feito.
Marco

Respostas:

22

mkdir -p não forneceria um erro se o diretório já existir e o conteúdo do diretório não for alterado.

Entrada manual para mkdir

ARG
fonte
1
Esta resposta não parece estar correta. O mkdir realmente emitirá um erro se o diretório existir, a menos que esteja usando o sinalizador -p.
Aaron Cicali 19/07/2016
por engano, você pode verificar o código como esta, if(err.code == 'EEXIST')esta condição será verdadeira se o diretório já existir.
user403173
12

Um script portátil dependerá do POSIX, que indica mkdira -popção de:

Cada operando dir que nomeia um diretório existente deve ser ignorado sem erros.

e se não houver erros relatados, a -popção fez seu trabalho:

Crie qualquer componente de nome de caminho intermediário ausente.

Thomas Dickey
fonte
4

O mkdir irá fornecer um erro se o diretório já existir.

mkdir -p NÃO fornecerá um erro se o diretório já existir. Além disso, o diretório permanecerá intocado, ou seja, o conteúdo será preservado como estava.

Tushar Vazirani
fonte
0

Você diz que,

Quando executo mkdir -p folder, não vejo erros nem avisos.

Você verá um erro se o comando falhar. O -psinalizador suprime erros apenas se o diretório já existir.

touch x
mkdir -p x
mkdir: cannot create directory ‘x’: File exists

O mesmo problema ocorrerá se você tentar criar um diretório como um usuário normal em, digamos /etc,.

O que o -psuprimirá são erros que seriam acionados quando o diretório de destino já existir

mkdir y
mkdir -p y

No entanto, em todos os casos, você não perderá nada e nada será alterado. Nas situações de erro, você simplesmente não terá o diretório que estava esperando.

roaima
fonte
Parece mais um comentário do que uma resposta.
G-Man diz 'Reinstate Monica'
Eu me perguntava sobre isso, mas estou refutando especificamente a afirmação na pergunta do OP: " Quando executar mkdir -p folder, não verei nenhum erro nem mesmo aviso "
roaima