Klasör oluştururken mkdir -p tamamen güvenlidir


13

Diyelim ki bir klasörüm var:

./folder/

İçinde birçok dosya ve hatta alt dizinler var.

Çalıştırdığımda:

mkdir -p folder

Uyarılar bile hata görmeyeceğim. sadece onaylamak istiyorum, bu komutun sonucunda kaybedilen veya değiştirilen bir şey var mı?


2
Mkdir yardımı dizinlerin sadece mevcut olmadıklarında yaratıldığını söylüyor. Bu bana dizin var olduğunda hiçbir şey olmadığını ima ediyor.
Marco

Yanıtlar:


23

mkdir -p dizin zaten varsa ve dizinin içeriği değişmezse size bir hata vermez.

İçin manuel giriş mkdir


1
Bu cevap doğru görünmüyor. -k bayrağını kullanmadığı sürece, mkdir dizini varsa hata verir.
Aaron Cicali

hata if(err.code == 'EEXIST')durumunda, dizin zaten varsa bu koşul doğru olur gibi kodu kontrol edebilirsiniz .
user403173

12

Taşınabilir bir senaryo diyor POSIX'e, istinat edecektir mkdirbireyin -pseçeneği:

Varolan bir dizini adlandıran her dir işlenen hatasız göz ardı edilir.

ve bildirilen hata yoksa, -pseçenek işini yaptı:

Eksik ara yol adı bileşenleri oluşturun.


4

mkdir Dizin zaten varsa size bir hata verecektir.

mkdir -p Dizin zaten varsa size bir hata VERMEZ. Ayrıca, dizine dokunulmadan kalır, yani içerik eskisi gibi korunur.


0

Bunu sen söyledin,

Çalıştırdığımda mkdir -p folderherhangi bir hata bile uyarı görmeyeceğim.

Komut başarısız olursa bir hata görürsünüz. -pDizin zaten varsa bayrak sadece hataları bastırır.

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

Örneğin, normal kullanıcı olarak bir dizin oluşturmaya çalışırsanız da aynı sorun ortaya çıkar /etc.

Ne -pirade bastırmak hedef dizin zaten var tetiklenecek olur hatalarıdır

mkdir y
mkdir -p y

Ancak her durumda hiçbir şey kaybetmezsiniz ve hiçbir şey değişmez. Hata durumlarında beklediğiniz dizine sahip olmayacaksınız.


Bu bir cevaptan çok bir yorum gibi görünüyor.
G-Man

Bu konuda merak ama özellikle OP'ın söz konusu ifadeyi çürütmeyi ediyorum " ı çalıştırdığınızda mkdir -p folderbile uyarılar hataları görmez. "
roaima
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.