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?


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


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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.