मैं जानना चाहता हूं कि इसमें क्या अंतर है
ls | xargs rm
ls | xargs -i{} rm {}
दोनों मेरे लिए काम कर रहे हैं
मैं जानना चाहता हूं कि इसमें क्या अंतर है
ls | xargs rm
ls | xargs -i{} rm {}
दोनों मेरे लिए काम कर रहे हैं
जवाबों:
xargs rm
rm
रिक्त स्थान के साथ पैरामीटर के रूप में सभी तर्कों के साथ आह्वान करेगा ।
xargs -i{} rm {}
rm {}
प्रत्येक तर्क के लिए आह्वान करेगा और {}
वर्तमान तर्क द्वारा प्रतिस्थापित किया जाएगा।
यदि आपके पास 2 तर्क हैं a.txt
और b.txt
, xargs rm
इसे कॉल करेंगे
rm a.txt b.txt
लेकिन xargs -i{} rm {}
बुला लेंगे
rm a.txt
rm b.txt
ऐसा इसलिए है क्योंकि -i
विकल्प का अर्थ है -L 1
विकल्प, जिसका अर्थ है कि कमांड प्रत्येक बार rm
केवल 1
लाइन लेगा । और यहाँ प्रत्येक पंक्ति में केवल 1 तर्क है।
इसके बारे में अधिक विचार प्राप्त करने के लिए इस Ideone लिंक की जाँच करें ।
rm
कोई फर्क नहीं पड़ता
-i विकल्प (--replace के बराबर) एक प्रकार का प्लेसहोल्डर बनाता है जहां xargs इनपुट को स्टोर करता है जो उसे प्राप्त होता है। आपके दूसरे कमांड में, प्लेसहोल्डर "{}" है, यह फाइंड -सेक्स विकल्प की तरह काम करता है। एक बार परिभाषित होने के बाद, xargs इस प्लेसहोल्डर को इनपुट की पूरी लाइन से बदल देगा। यदि आप "{}" नाम की तरह नहीं हैं, तो आप अपने खुद को परिभाषित कर सकते हैं:
ls | xargs -iPLACEHOLDER इको प्लेसहोल्डर गूंज
आपके मामले में, दोनों कमांड एक ही परिणाम उत्पन्न कर रहे हैं। दूसरे रूप में, आप केवल -i विकल्प के साथ डिफ़ॉल्ट व्यवहार स्पष्ट कर रहे हैं।