क्या फ़ोल्डर बनाते समय mkdir -p पूरी तरह से सुरक्षित है


13

कहो कि मेरे पास एक फ़ोल्डर है:

./folder/

इसके अंदर कई फाइलें और यहां तक ​​कि उप-निर्देशिकाएं भी हैं।

जब मैं निष्पादित करता हूं:

mkdir -p folder

मुझे चेतावनी में भी कोई त्रुटि नहीं दिखाई देगी। इसलिए केवल इस बात की पुष्टि करना चाहते हैं कि क्या इस आदेश के परिणामस्वरूप कुछ खो गया है या बदल गया है?


2
Mkdir की मदद कहती है कि निर्देशिकाएं केवल तब बनाई जाती हैं जब वे मौजूद नहीं होती हैं। इसका मतलब यह है कि जब निर्देशिका मौजूद होती है तो कुछ भी नहीं किया जाता है।
मार्को

जवाबों:


23

mkdir -p यदि निर्देशिका पहले से मौजूद है और निर्देशिका के लिए सामग्री नहीं बदलेगी, तो आपको कोई त्रुटि नहीं दी जाएगी।

के लिए मैनुअल प्रविष्टि mkdir


1
यह उत्तर सही नहीं लगता है। जब तक निर्देशिका मौजूद नहीं है, तब तक mkdir एक त्रुटि का उत्सर्जन करता है, जब तक कि -p ध्वज का उपयोग नहीं करता है।
आरोन सियाली

त्रुटि में, आप इस कोड की जांच कर सकते हैं जैसे कि if(err.code == 'EEXIST')यह स्थिति सही हो जाएगी यदि निर्देशिका पहले से मौजूद है।
user403173

12

एक पोर्टेबल स्क्रिप्ट POSIX, जिनमें से कहते हैं पर निर्भर करेगा mkdirकी -pविकल्प:

प्रत्येक dir ऑपरेंड जो किसी मौजूदा निर्देशिका को नाम देता है उसे त्रुटि के बिना अनदेखा किया जाएगा।

और यदि कोई त्रुटि रिपोर्ट नहीं की गई है, तो -pविकल्प ने अपना काम किया है:

किसी भी लापता मध्यवर्ती पाथनाम घटक बनाएँ।


4

यदि निर्देशिका पहले से मौजूद है, तो mkdir आपको एक त्रुटि देगा।

यदि निर्देशिका पहले से मौजूद है तो mkdir -p आपको कोई त्रुटि नहीं देगा। इसके अलावा, निर्देशिका अछूती रहेगी यानी सामग्री को वैसे ही संरक्षित रखा जाएगा जैसे वे थे।


0

आप कहते हैं कि,

जब मैं निष्पादित करता mkdir -p folderहूं तो मुझे कोई त्रुटि भी चेतावनी नहीं दिखाई देगी।

कमांड फेल होने पर आपको एक त्रुटि दिखाई देगी। -pझंडा केवल त्रुटियों को दबा यदि निर्देशिका पहले से मौजूद।

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

यदि आप एक सामान्य उपयोगकर्ता के रूप में एक निर्देशिका बनाने का प्रयास करते हैं, तो यह समस्या होगी /etc

जो -pदबाएगा वह त्रुटियां हैं जो उस समय ट्रिगर हो जाएंगी जब लक्ष्य निर्देशिका पहले से मौजूद है

mkdir y
mkdir -p y

हालांकि सभी मामलों में आप कुछ भी नहीं खो देंगे, और कुछ भी नहीं बदला जाएगा। त्रुटि स्थितियों में आपके पास वह निर्देशिका नहीं होगी जिसकी आप अपेक्षा कर रहे थे।


यह एक उत्तर की तुलना में अधिक टिप्पणी की तरह लगता है।
जी-मैन का कहना है

मैं इस बारे में आश्चर्यचकित था, लेकिन मैं विशेष रूप से ओपी के प्रश्न में बयान को दोहरा रहा हूं, " जब मैं निष्पादित करता mkdir -p folderहूं तो मुझे कोई चेतावनी भी दिखाई नहीं देगी। "
रोआमा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.