Czy mkdir -p jest całkowicie bezpieczny, gdy tworzenie folderu już istnieje


13

Powiedz, że mam folder:

./folder/

Wewnątrz znajduje się wiele plików, a nawet podkatalogów.

Kiedy wykonam:

mkdir -p folder

Nie zobaczę żadnych błędów, nawet ostrzeżeń. więc po prostu chcę potwierdzić, czy w wyniku tego polecenia coś zostało utracone lub zmienione?


2
Pomoc mkdir mówi, że katalogi są tworzone tylko wtedy, gdy nie są obecne. To sugeruje mi, że kiedy katalog istnieje, nic się nie robi.
Marco

Odpowiedzi:


23

mkdir -p nie spowoduje błędu, jeśli katalog już istnieje, a zawartość katalogu się nie zmieni.

Ręczne wprowadzanie dla mkdir


1
Ta odpowiedź wydaje się nieprawidłowa. mkdir rzeczywiście emituje błąd, jeśli katalog istnieje, chyba że użyje flagi -p.
Aaron Cicali

przez pomyłkę możesz sprawdzić kod, taki jak if(err.code == 'EEXIST')ten warunek spełni się, jeśli katalog już istnieje.
user403173,

12

Przenośny skrypt polegać na POSIX, który mówi o mkdir„s -popcji:

Każdy operand dir, który nazywa istniejący katalog, zostanie zignorowany bezbłędnie.

a jeśli nie zgłoszono żadnych błędów, -popcja wykonała swoją pracę:

Utwórz brakujące komponenty pośredniej nazwy ścieżki.


4

mkdir BĘDZIE wyświetlał błąd, jeśli katalog już istnieje.

mkdir -p NIE BĘDZIE wyświetlać błędu, jeśli katalog już istnieje. Ponadto katalog pozostanie nietknięty, tzn. Zawartość zostanie zachowana tak, jak była.


0

Mówisz tak,

Podczas wykonywania mkdir -p foldernie widzę żadnych błędów, nawet ostrzeżeń.

Zobaczysz błąd, jeśli polecenie się nie powiedzie. -pFlag tłumi tylko błędy jeśli katalog już istnieje.

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

Ten sam problem występuje w przypadku próby utworzenia katalogu jako zwykły użytkownik, powiedzmy, /etc.

Co -pwstrzyma są błędy, które mogłyby być wyzwalane, gdy już istnieje katalog docelowy

mkdir y
mkdir -p y

Jednak we wszystkich przypadkach nic nie stracisz i nic się nie zmieni. W sytuacjach błędów po prostu nie będziesz mieć katalogu, którego się spodziewałeś.


To wydaje się bardziej komentarzem niż odpowiedzią.
G-Man mówi „Przywróć Monikę”

Zastanawiałem się nad tym, ale szczególnie odpieram stwierdzenie zawarte w pytaniu PO: „ Gdy wykonam mkdir -p folder, nie zobaczę żadnych błędów, nawet ostrzeżeń
roaima
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.