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?


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


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.


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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.