Apakah mkdir -p benar-benar aman ketika membuat folder sudah ada

13

Katakanlah saya punya folder:

./folder/

Di dalamnya ada banyak file dan bahkan sub-direktori.

Ketika saya mengeksekusi:

mkdir -p folder

Saya tidak akan melihat kesalahan, bahkan peringatan. jadi hanya ingin mengkonfirmasi, apakah ada yang hilang atau berubah dalam hasil perintah ini?

AGamePlayer
sumber
2
Bantuan mkdir mengatakan bahwa direktori hanya dibuat ketika tidak ada. Ini menyiratkan kepada saya bahwa ketika direktori ada tidak ada yang dilakukan.
Marco

Jawaban:

22

mkdir -p tidak akan memberi Anda kesalahan jika direktori sudah ada dan konten untuk direktori tidak akan berubah.

Entri manual untuk mkdir

ARG
sumber
1
Jawaban ini sepertinya tidak benar. mkdir memang memancarkan kesalahan jika direktori ada, kecuali menggunakan flag -p.
Aaron Cicali
dalam kesalahan, Anda dapat memeriksa kode seperti if(err.code == 'EEXIST')ini kondisi ini akan menjadi kenyataan jika direktori sudah ada.
user403173
12

Sebuah script portabel akan mengandalkan POSIX, yang mengatakan dari mkdir's -ppilihan:

Setiap dir operan yang menamai direktori yang ada harus diabaikan tanpa kesalahan.

dan jika tidak ada kesalahan yang dilaporkan, -popsi telah melakukan tugasnya:

Membuat komponen pathname perantara yang hilang.

Thomas Dickey
sumber
4

mkdir AKAN memberi Anda kesalahan jika direktori sudah ada.

mkdir -p TIDAK AKAN memberi Anda kesalahan jika direktori sudah ada. Juga, direktori akan tetap tidak tersentuh yaitu isinya dipertahankan seperti semula.

Tushar Vazirani
sumber
0

Itu kata kamu,

Ketika saya mengeksekusi mkdir -p foldersaya tidak akan melihat kesalahan bahkan peringatan.

Anda akan melihat kesalahan jika perintah gagal. The -pbendera hanya menekan kesalahan jika direktori sudah ada.

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

Masalah yang sama akan terjadi jika Anda mencoba membuat direktori sebagai pengguna normal di, katakanlah /etc,.

Apa yang -pakan ditekan adalah kesalahan yang akan dipicu ketika direktori target sudah ada

mkdir y
mkdir -p y

Namun dalam semua kasus Anda tidak akan kehilangan apa pun, dan tidak ada yang akan berubah. Dalam situasi kesalahan Anda tidak akan memiliki direktori yang Anda harapkan.

roaima
sumber
Ini sepertinya lebih banyak komentar daripada jawaban.
G-Man Mengatakan 'Reinstate Monica'
Saya bertanya-tanya tentang hal itu, tetapi saya secara khusus membantah pernyataan dalam pertanyaan OP, " Ketika saya mengeksekusi mkdir -p foldersaya tidak akan melihat kesalahan bahkan peringatan. "
roaima