Mkdir -p est-il totalement sûr lorsque la création d'un dossier existe déjà

13

Disons que j'ai un dossier:

./folder/

Il contient de nombreux fichiers et même des sous-répertoires.

Quand j'exécute:

mkdir -p folder

Je ne verrai aucune erreur, même des avertissements. Je veux juste confirmer, y a-t-il quelque chose de perdu ou de changé suite à cette commande?

AGamePlayer
la source
2
L'aide de mkdir indique que les répertoires ne sont créés que lorsqu'ils ne sont pas présents. Cela implique pour moi que lorsque le répertoire existe, rien n'est fait.
Marco

Réponses:

23

mkdir -p ne vous donnerait pas d'erreur si le répertoire existe déjà et que le contenu du répertoire ne changera pas.

Saisie manuelle pour mkdir

ARG
la source
1
Cette réponse ne semble pas être correcte. mkdir émet en effet une erreur si le répertoire existe, à moins d'utiliser l'indicateur -p.
Aaron Cicali
par erreur, vous pouvez vérifier le code comme celui-ci, if(err.code == 'EEXIST')cette condition deviendra vraie si le répertoire existe déjà.
user403173
12

Un script portable s'appuiera sur POSIX, qui dit mkdirl' -poption de:

Chaque opérande dir qui nomme un répertoire existant doit être ignoré sans erreur.

et si aucune erreur n'est signalée, l' -poption a fait son travail:

Créez tous les composants de chemin d'accès intermédiaires manquants.

Thomas Dickey
la source
4

mkdir VOUS donnera une erreur si le répertoire existe déjà.

mkdir -p NE VOUS DONNERA PAS d'erreur si le répertoire existe déjà. De plus, le répertoire restera intact, c'est-à-dire que le contenu est conservé tel quel.

Tushar Vazirani
la source
0

Vous dites que,

Lorsque j'exécute, mkdir -p folderje ne vois aucune erreur, même des avertissements.

Vous verrez une erreur si la commande échoue. L' -pindicateur supprime les erreurs uniquement si le répertoire existe déjà.

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

Le même problème se produira si vous essayez de créer un répertoire comme, disons utilisateur normal, /etc.

Ce que le -psuppress de volonté sont des erreurs qui seraient déclenchées lorsque le répertoire cible existe déjà

mkdir y
mkdir -p y

Cependant, dans tous les cas, vous ne perdrez rien et rien ne sera changé. Dans les situations d'erreur, vous n'aurez tout simplement pas le répertoire que vous attendiez.

roaima
la source
Cela ressemble plus à un commentaire qu'à une réponse.
G-Man dit `` Réintègre Monica '' le
Je me posais des questions à ce sujet, mais je réfute spécifiquement la déclaration dans la question du PO, " Quand j'exécuterai, mkdir -p folderje ne verrai aucune erreur, même des avertissements. "
roaima