rm
पुनरावृत्ति केवल नीचे की ओर सही काम करती है?
rm -r x y
हटा देगा x
और y
उनके अंदर सब कुछ (यदि वे निर्देशिका हैं), लेकिन उनके माता-पिता या उनके बाहर कुछ भी नहीं।
रनिंग: sudo rm -R *.QTFS
वर्तमान निर्देशिका और उसके बच्चों में सभी * .QTFS फ़ाइलों को हटा देगा, सही है?
नहीं, ये नामित सभी फाइलों को नष्ट करेगा *.QTFS
, रिकर्सिवली किसी भी फाइल के अंदर निर्देशिका कहा जाता है *.QTFS
, और उन निर्देशिकाओं के लिए खुद को। यदि आप चाहते हैं कि अन्य विलोपन व्यवहार, का उपयोग करें find -delete
।
वर्तमान निर्देशिका जिस रूप में प्रदर्शित होती है ls -lha
उसमें एक बेहतर शब्द की कमी के लिए लिंक .
और ..
लिंक होते हैं , इसलिए पुनरावृत्ति निर्देशिका ट्री में ऊपर की ओर इनका पालन क्यों नहीं करती है? वहाँ rm एप्लिकेशन पर एक कृत्रिम सीमा है, या .
और ..
वास्तविक चीजें नहीं हैं?
की एक कृत्रिम सीमा है rm
।
यह वास्तव में यह सब कृत्रिम नहीं है, हालांकि - यह एकमात्र तरीका है जो कभी भी काम कर सकता है। यदि rm
माता-पिता ..
लिंक का अनुसरण करते हैं , तो सभी rm -r
सिस्टम की हर फाइल को हटा देंगे, सभी ..
लिंक का सभी तरह से पालन करके /
। प्रत्येक निर्देशिका में और प्रविष्टियों को rm
देखता है जब वह सामग्री को सूचीबद्ध करता है, और उस कारण से स्पष्ट रूप से अवहेलना करता है।..
.
आप वास्तव में, खुद को आज़मा सकते हैं। स्पष्ट रूप से त्रुटि रिपोर्ट करते हुए, रन rm -r .
और अधिकांश rm
कार्यान्वयन कार्य करने से इंकार कर देंगे:
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(वह संदेश GNU का हैrm
; अन्य समान हैं)। जब यह इन तर्कों को स्पष्ट तर्कों के बजाय स्पष्ट रूप से सामना करता है, तो यह उन्हें अनदेखा करता है और जारी रखता है। POSIX द्वारा उस व्यवहार की आवश्यकता है । जीएनयू rm
और कई बीएसडी में, यह fts_read
पदानुक्रम-ट्रैवर्सल कार्यों के परिवार द्वारा स्वचालित रूप से प्रदान किया जाता है ।
या .
और ..
वास्तविक चीजें नहीं हैं?
.
और ..
कर रहे हैं आम तौर पर , वास्तविक निर्देशिका प्रविष्टियों हालांकि उस फाइल सिस्टम-विशिष्ट है। वे लगभग हमेशा की तरह प्रस्तुत किए जाएंगे, हालांकि वे सभी उपयोगकर्ता कोड के लिए वास्तविक प्रविष्टियां हैं, भले ही। rm
अपवाह या अवांछनीय पुनरावृत्ति को पकड़ने या रोकने के लिए सॉफ्टवेयर के कई टुकड़े (सिर्फ नहीं ) विशेष-उनके व्यवहार को।