Mkdir -p è totalmente sicuro quando esiste già la creazione di una cartella


13

Di 'che ho una cartella:

./folder/

Al suo interno ci sono molti file e persino sottodirectory.

Quando eseguo:

mkdir -p folder

Non vedrò alcun errore nemmeno avvisi. quindi voglio solo confermare, c'è qualcosa perso o cambiato in seguito a questo comando?


2
L'aiuto di mkdir afferma che le directory vengono create solo quando non sono presenti. Ciò implica per me che quando esiste la directory non si fa nulla.
Marco,

Risposte:


23

mkdir -p non ti darebbe un errore se la directory esiste già e il contenuto della directory non cambierà.

Inserimento manuale per mkdir


1
Questa risposta non sembra corretta. mkdir infatti emette un errore se la directory esiste, a meno che non si usi il flag -p.
Aaron Cicali,

per errore, è possibile verificare il codice in questo modo if(err.code == 'EEXIST')questa condizione diventerà vera se la directory esiste già.
user403173

12

Uno script portatile sarà fare affidamento su POSIX, che dice di mkdir's -popzione:

Ogni operando di dir che nomina una directory esistente deve essere ignorato senza errori.

e se non ci sono errori segnalati, l' -popzione ha fatto il suo lavoro:

Creare eventuali componenti intermedi del percorso mancanti.


4

mkdir ti darà un errore se la directory esiste già.

mkdir -p NON ti darà un errore se la directory esiste già. Inoltre, la directory rimarrà intatta, ovvero i contenuti verranno conservati così come erano.


0

Lo dici tu,

Quando eseguo mkdir -p foldernon vedrò alcun errore nemmeno avvisi.

Vedrai un errore se il comando fallisce. Il -pflag elimina gli errori solo se la directory esiste già.

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

Lo stesso problema si verifica se si tenta di creare una directory come un utente normale, per esempio, /etc.

Ciò -pche sopprimerà sono gli errori che verrebbero attivati ​​quando la directory di destinazione esiste già

mkdir y
mkdir -p y

Tuttavia, in tutti i casi non perderai nulla e nulla sarà cambiato. Nelle situazioni di errore non avrai la directory che ti aspettavi.


Sembra più un commento che una risposta.
G-Man dice "Reinstate Monica" il

Mi chiedevo a riguardo, ma sto ribadendo in modo specifico l'affermazione nella domanda del PO, " Quando eseguirò mkdir -p foldernon vedrò alcun errore nemmeno avvertenze " .
roaima,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.