मैं (उदाहरण के लिए अब ऑनलाइन नहीं है) commandlinefu.com पर निम्न स्क्रिप्ट मिल गया है:यह बैश कुछ फ़ाइलों को हटाने के लिए कैसे काम करता है लेकिन कुछ फाइलें काम करती हैं?
rmbut() {
local x=("[email protected]")
IFS=, rm -rf *[!"${x[*]}"]
}
यह सभी फ़ाइलों और निर्देशिकाओं लेकिन कमांड लाइन पर नामित लोगों को हटाता है।
आप निम्नलिखित समझा सकते हैं:
- क्या पहली पंक्ति पर हो रहा है?
[email protected]
का अर्थ है सभी तर्क, लेकिन यह ब्रांड्स के अंदर क्यों रखा जाता है? - मैंने
IFS
पढ़ा है लेकिन वास्तव में इसका उपयोग कभी नहीं किया है, इसका उपयोग यहां क्या है? *[!"${x[*]}"]
के साथ क्या हासिल किया जाता है? मैं समझ नहीं पा रहा हूं कि इसे किसी चीज़ में कैसे विभाजित किया जाए।
क्या आप वाकई "स्थानीय x .." रेखा पर ब्रांड्स() हैं या वे ब्रेसिज़ {} या ब्रैकेट [] हैं। यह एक फर्क पड़ता है। साथ ही, फ़ंक्शन के दिखने से, यह केवल उन सभी फ़ाइलों को हटा रहा है जिन्हें फ़ंक्शन पर पैरामीटर द्वारा निर्दिष्ट बेसनाम (ओं) को छोड़ दिया गया है। – kvista
हां, कोष्ठक सही हैं। यह कार्य का उद्देश्य है, यह स्पष्ट है, मैं जानना चाहता हूं कि क्यों ^^ –