¿Es totalmente seguro mkdir -p cuando ya existe una carpeta?

13

Digamos que tengo una carpeta:

./folder/

En su interior hay muchos archivos e incluso subdirectorios.

Cuando ejecuto:

mkdir -p folder

No veré ningún error, incluso advertencias. así que solo quiero confirmar, ¿hay algo perdido o cambiado como resultado de este comando?

AGamePlayer
fuente
2
La ayuda de mkdir dice que los directorios solo se crean cuando no están presentes. Esto implica para mí que cuando el directorio existe no se hace nada.
Marco

Respuestas:

23

mkdir -p no le daría un error si el directorio ya existe y el contenido del directorio no cambiará.

Entrada manual para mkdir

ARG
fuente
1
Esta respuesta no parece ser correcta. De hecho, mkdir emite un error si el directorio existe, a menos que use el indicador -p.
Aaron Cicali
por error, puede verificar un código como este, if(err.code == 'EEXIST')esta condición se cumplirá si el directorio ya existe.
user403173
12

Un script portátil dependerá de POSIX, que dice de mkdirla -popción de:

Cada operando dir que nombre un directorio existente se ignorará sin error.

y si no se informan errores, la -popción ha hecho su trabajo:

Cree cualquier componente intermedio de nombre de ruta que falte.

Thomas Dickey
fuente
4

mkdir le dará un error si el directorio ya existe.

mkdir -p NO le dará un error si el directorio ya existe. Además, el directorio permanecerá intacto, es decir, el contenido se conservará como estaba.

Tushar Vazirani
fuente
0

Tu dices eso,

Cuando ejecuto mkdir -p folderno veré ningún error, incluso advertencias.

Verá un error si el comando falla. La -pbandera solo suprime errores si el directorio ya existe.

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

El mismo problema se producirá si intenta crear un directorio como un usuario normal, digamos, en /etc.

Lo -pque suprimirá son los errores que se desencadenarían cuando el directorio de destino ya existe

mkdir y
mkdir -p y

Sin embargo, en todos los casos no perderá nada, y nada cambiará. En las situaciones de error, simplemente no tendrá el directorio que esperaba.

roaima
fuente
Esto parece más un comentario que una respuesta.
G-Man dice 'reinstalar a Monica'
Me preguntaba sobre eso, pero refuto específicamente la declaración en la pregunta del OP: " Cuando ejecute mkdir -p folderno veré ningún error, ni siquiera advertencias "
Roaima