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?


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


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.


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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.